Hyperledger Fabric创建多节点通道时如何指定多个Orderer节点IP地址
解决Hyperledger Fabric多Orderer节点高可用的通道创建问题
你不能直接在peer channel create命令的-o参数里指定多个Orderer地址,要实现高可用,得通过以下两种方式配置:
方式一:通过客户端配置文件指定Orderer集群
1. 修改peer节点的core.yaml
找到core.yaml中的orderer.addresses配置段,添加所有Orderer的地址:
orderer: addresses: - orderer1.yourdomain.com:7050 - orderer2.yourdomain.com:7050
修改后重启peer节点,让配置生效。
2. 使用连接配置JSON文件
如果用连接配置文件(比如给SDK或peer客户端用的connection-org1.json),在orderers节点下添加所有Orderer的完整信息:
"orderers": { "orderer1.yourdomain.com": { "url": "grpcs://orderer1.yourdomain.com:7050", "grpcOptions": { "ssl-target-name-override": "orderer1.yourdomain.com" }, "tlsCACerts": { "path": "/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/yourdomain.com/orderers/orderer1.yourdomain.com/msp/tlscacerts/tlsca.yourdomain.com-cert.pem" } }, "orderer2.yourdomain.com": { "url": "grpcs://orderer2.yourdomain.com:7050", "grpcOptions": { "ssl-target-name-override": "orderer2.yourdomain.com" }, "tlsCACerts": { "path": "/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/yourdomain.com/orderers/orderer2.yourdomain.com/msp/tlscacerts/tlsca.yourdomain.com-cert.pem" } } }
配置完成后,执行peer channel create时只需要指定任意一个Orderer地址即可——Fabric客户端会自动识别集群中的其他节点,当指定的节点故障时,会自动切换到可用节点。
方式二:用DNS负载均衡域名统一指向多Orderer
给两个Orderer节点配置一个共享域名(比如orderers.yourdomain.com),在DNS服务器中把该域名解析到两个Orderer的IP地址(支持轮询或故障转移解析)。
之后执行命令时直接用这个域名:
peer channel create -o orderers.yourdomain.com:7050 -c $CHANNEL_NAME -f ./channel.tx --tls --cafile /path/to/orderer-ca-cert.pem
DNS会自动处理节点的故障转移,返回可用的Orderer IP给客户端。
关键注意事项
- 所有Orderer必须属于同一个Raft共识集群(创世区块中已配置完整的集群节点列表),否则客户端无法自动切换节点。
- 如果启用TLS,要确保peer节点信任所有Orderer的TLS证书,或者在命令中指定正确的CA根证书路径。
- 不要尝试在
-o参数中用逗号分隔多个地址,Fabric的peer channel create命令不支持这种写法。
内容的提问来源于stack exchange,提问作者user19389346
相关产品推荐
相关产品推荐

