fabric部署kafka集群后创建通道无法连接处理过程记录

fabric框架繁杂的部署过程,会出现各种意料之外的错误,由于错误提示不明确,往往很简单的一个疏忽都会浪费大量的时间去找出问题。特此记录一下浪费了两天时间的处理过程。
为了在生产环境使用区块链,需要改造之前基于solo共识机制部署的fabric框架,参考该博主(HyperLedger Fabric 1.4 kafka生产环境部署)的方法将solo共识改为kafka集群。过程一切都顺风顺水,不过将其中的三个zookeeper改成了两个(后来才发现zookeeper集群数量有问题),在一切都安装好之后开始在peer节点上创建通道,此时报错一下错误:

Error: failed to create deliver client: orderer client failed to connect to orderer0.example.com:7050: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 192.168.0.204:7050: connect: connection refused"

乍一看还以为是网络问题,于是逐一测试网络连接一切正常。此时开始了骂骂咧咧中一个一个的重新一遍,还是同样的问题,于是在网上重新找了一篇部署的文档开始比对看看有什么不一样的地方,于是发现了zookeeper集群数量的问题。

Zookeeper 集群的数量可以是 3, 5, 7, 它值需要是一个奇数以避免脑裂问题(split-brain)的情况。同时选择大于1的值是为了避免单点故障,如果集群的数量超过7个Zookeeper服务将会无法承受。

重新添加zookeeper2、kafka2、orderer2节点后重启所有服务,问题照旧。看来不是这里的问题,不过无意中解决了重要的问题,下一步开始逐一测试服务是否启动,使用telnet测试orderer节点发现无法连接。

$telnet 192.168.0.204 7050
Trying 192.168.0.204...
telnet: Unable to connect to remote host: Connection refused

于是查看orderer日志,报错,网上也找不到同样的错误,又开始骂骂咧咧。

$docker logs -f orderer1.example.com
...
2021-10-13 09:25:49.862 UTC [orderer.consensus.kafka] startThread -> PANI 010 [channel: testchainid] Cannot post CONNECT message = circuit breaker is open
panic: [channel: testchainid] Cannot post CONNECT message = circuit breaker is open

最后翻了翻zookeeper日志,发现这个broken问什么互相访问不到,打开docker-compose-zookeeper.yaml茅塞顿开。

$docker logs -f zookeeper0
...
2021-10-14 03:15:40,410 [myid:1] - WARN  [RecvWorker:2:QuorumCnxManager$RecvWorker@1025] - Connection broken for id 2, my id = 1, error = 
java.io.EOFException

原来是环境变量里面的ZOO_MY_ID问题,部署第三台zookeeper的时候是从前面复制过来的,这个ID没改到。于是修改docker-compose-zookeeper.yaml、docker-compose-kafka.yaml两个文件的对应内容,重启,问题解决。
一个困扰了我两天的问题原来就是这个小小的疏忽造成的,幸好在我骂骂咧咧不断尝试的过程中及时发现了问题,哎…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值