基于Fabric 1.1.0/Composer 0.18.2,如何在多独立节点启动REST API服务器?
多独立VM节点环境下启动Hyperledger Composer REST API服务器的正确方式
环境确认
先明确你的当前环境,避免后续操作踩坑:
- Fabric版本:1.1.0
- Composer版本:0.18.2
- VM1:双组织
first-network,已完成E2E测试,运行着3000/3001端口的REST服务器 - VM2:通过自定义
eyfn.sh加入VM1的网络,已完成E2E测试
核心思路
因为VM2是跨节点加入VM1的Fabric网络,REST服务器不能直接用本地默认配置,关键是修改连接配置文件指向跨VM的Fabric节点,同时确保身份权限和网络连通性。
具体操作步骤
1. 确保VM间网络连通性
首先必须保证VM1和VM2的网络能互相访问:
- 关闭两台VM的防火墙(或开放Fabric核心端口:7050/7051/7054/7053等)
- 测试连通性:在VM2执行
ping <VM1的内网/公网IP>,以及telnet <VM1-IP> 7051(测试peer端口)、telnet <VM1-IP> 7050(测试orderer端口),确保能正常连接。
2. 配置VM2的连接配置文件(connection.json)
VM1生成的默认connection.json是针对本地节点的,VM2需要修改它:
- 从VM1复制
first-network下的connection.json到VM2的对应目录(比如~/fabric-samples/first-network/) - 修改所有节点的
url字段:把localhost替换成VM1的实际IP,比如:"url": "grpc://localhost:7051" → "url": "grpc://192.168.1.100:7051" - 如果VM2有自己的peer节点(通过
eyfn.sh新增的组织节点),需要在connection.json中添加该节点的配置,包括url、tlsCACerts的本地路径(指向VM2本地的证书文件)
3. 导入合法身份到VM2的Composer钱包
REST服务器需要有权限的身份才能访问Fabric网络:
- 从VM1复制对应身份的私钥和证书文件到VM2(比如管理员身份的
priv_sk和cert.pem) - 执行导入命令:
composer identity import -p first-network -u Admin@org1.example.com -f ~/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk -c ~/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem - 如果你用的是VM2自身组织的管理员身份,直接用本地的证书和密钥即可。
4. 创建并导入业务网络卡片
- 生成业务网络卡片(假设你的业务网络名称是
my-network):composer network card create -p connection.json -u Admin@org1.example.com -c ~/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem -k ~/fabric-samples/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk -f admin-org1.card - 导入卡片到本地钱包:
composer network card import -f admin-org1.card - 测试卡片连通性(必须成功才能继续):
composer network ping -c Admin@org1.example.com
5. 在VM2启动REST API服务器
选择VM2上未被占用的端口(比如3002),执行启动命令:
composer-rest-server -c Admin@org1.example.com -p 3002 -n never -w true
参数说明:
-c:指定刚才导入的业务网络卡片-p:指定REST服务器端口-n never:禁用自动更新业务网络(避免跨VM冲突)-w true:启用WebSocket支持(可选)
关键注意事项
- TLS配置:如果你的Fabric网络启用了TLS(默认
first-network是启用的),必须确保connection.json中的tlsCACerts路径指向VM2本地的合法证书文件,否则会连接失败。 - 身份权限:用来启动REST服务器的身份必须被业务网络授权(比如通过
composer participant add和composer identity issue命令),否则无法访问业务网络资源。 - 端口冲突:确保VM2的REST服务器端口未被占用,不要和VM1的3000/3001重复。
内容的提问来源于stack exchange,提问作者rpkharsad
相关产品推荐
相关产品推荐

