admin管理员组文章数量:1642331
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: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
...
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两个文件的对应内容,重启,问题解决。
一个困扰了我两天的问题原来就是这个小小的疏忽造成的,幸好在我骂骂咧咧不断尝试的过程中及时发现了问题,哎…
版权声明:本文标题:fabric部署kafka集群后创建通道无法连接处理过程记录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729332807a1196608.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论