Fabric1.1 solo多机部署那点事

   日期:2020-07-12     浏览:87    评论:0    
核心提示:1 多机部署主机、网络配置虚拟机及系统:准备5台虚拟机,CentOS7系统,内核4.x,内存1G左右(虚拟机分配为最大内存,内存分配大小视宿主机物理内存大小而定,我的宿主机内存为16GB)。虚拟机搭载的节点全部启动后,宿主机内存使用情况:剩余可用内存5GB左右,虚拟机内存不能分配过大,不然全部启动后可能会造成蓝屏。在一台虚拟机上配置好环境,并且运行e2e_cli没问题,将network down掉,并且克隆另外4台虚拟机。主机IP及主机名hostname配置修改所有主机的hostnam

1 多机部署主机、网络配置

  1. 虚拟机及系统:
    准备5台虚拟机,CentOS7系统,内核4.x,内存1G左右(虚拟机分配为最大内存,内存分配大小视宿主机物理内存大小而定,我的宿主机内存为16GB)。虚拟机搭载的节点全部启动后,宿主机内存使用情况:

    剩余可用内存5GB左右,虚拟机内存不能分配过大,不然全部启动后可能会造成蓝屏。

    在一台虚拟机上配置好环境,并且运行e2e_cli没问题,将network down掉,并且克隆另外4台虚拟机。

  2. 主机IP及主机名hostname配置
    修改所有主机的hostname配置,具体名称对应于启动容器的yaml配置文件

虚拟机IP地址 虚拟机hostname
192.168.126.136 orderer.example.com
192.168.126.132 peer0.org1.example.com
192.168.126.133 peer1.org1.example.com
192.168.126.134 peer0.org2.example.com
192.168.126.135 peer1.org2.example.com

solo多机结构:

4个peer节点均依赖于orderer节点。
每个节点分别对应一台服务器,每个peer节点会启动一个peerx.orgx.example.com容器和一个cli容器。
peerx.orgx.example.com容器依赖于orderer容器。
cli容器依赖于peerx.orgx.example.com容器和orderer容器。
peerx.orgx.example.com容器通过宿主机IP地址及基于SSH协议的默认端口22与orderer容器通信。
cli容器通过宿主机IP地址及基于SSH协议的默认端口22与orderer容器通信,通过基于TCP协议的7050-7053端口与peerx.orgx.example.com容器通信。

2 solo多机部署

  1. 多机部署的名词概念和基本流程参考:

    327-fabric之msp和锚节点

  2. 多机部署实战参考:

    HyperLedger Fabric solo 模式多服务器部署

    (本人根据这个教程可以跑成功)

3 盘点一下多机部署的坑

主要填坑参考:

在阿里云进行Fabric的多机部署需要注意的几个坑

坑1:

由于每台服务器的cli容器依赖于peerx.orgx.example.com容器的7050-7053/tcp端口,但是防火墙默认不开放这些端口。导致出现报错

peer channel join -b mychannel.block 
2020-07-06 08:46:35.424 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2020-07-06 08:46:35.424 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2020-07-06 08:46:36.439 UTC [grpc] Printf -> DEBU 003 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 192.168.126.132:7051: getsockopt: no route to host"; Reconnecting to {peer0.org1.example.com:7051 <nil>}
solution:

查看防火墙已开放端口(可能返回空列表)

firewall-cmd --list-ports

开放端口设置:

firewall-cmd --zone=public --add-port=7050/tcp --permanent
firewall-cmd --zone=public --add-port=7051/tcp --permanent
firewall-cmd --zone=public --add-port=7052/tcp --permanent
firewall-cmd --zone=public --add-port=7053/tcp --permanent

重启防火墙:

firewall-cmd --reload

再次查看开放端口,可以看到7050-7053端口列表。

坑2:

如果出现报错

Error: Got unexpected status: BAD_REQUEST

则通道已经创建,但是节点的签名可能有问题,加入通道失败。遇到这种情况,需要删除channel,并且重新建立channel。最好是重新生成创世区块,并重新部署一遍。

注意在重新部署前,需要停止、删除启动的容器、网络、卷等。同时,由于创建channel时启动容器需要镜像支持,故在docker images中还可以看见支持通道容器启动的相关镜像,需要手动删除该镜像,保证之前建立的channel被删除。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服