深蓝大神的《Fabric 1.0的多机部署》等博客给初学者很多入门的指导。从这篇博客中可以看到深蓝所用的5个节点时同一局域网下的几个,和利用阿里云服务器进行多机部署有几个地方需要注意。
1. Fabric源码的版本不同会导致后面各种报错(例如orderer无法启动),直接通过git下载下来的会是最新版本,需要切换到Fabric v1.0.0版本
cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0
2. 在我们开通阿里云服务器后,默认的安全组仅会开放22 和3389端口,分别是linux 和Windows的远程登录端口,但是在我们的docker-compose-orderer.yaml和docker-compose-peer.yaml配置文件中看出来是通过7050端口去访问的,所以我们点击实例安全组,配置开放端口,入方向和出方向均需要添加,配置如下。如果不配置,会报下面的错误
grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp: i/o timeout"; Reconnecting to {orderer.example.com:7050 <nil>}
Error: Error connecting due to rpc error: code = Unavailable desc = grpc: the connection is unavailable
3. orderer和4个peer的配置文件,推荐直接下载深蓝大神博客下面的压缩包,然后改一下里面的ip地址,自己改容易改漏,然后各种报错。
4. 当orderer和4个peer全部起来后,利用
./scripts/script.sh mychannel
开始创建通道,如果第一次通道没有创建成功并报错,第二次重新执行该命令,会有如下报错
Error: Got unexpected status: BAD_REQUEST
这种报错就很头大,完全不知道错在哪,一般都是channel已经存在,无法重新创建。
可以在cli容器中输入命令,查看channel是否已经存在。
peer channel list
一般这种情况,直接在~go/src/github.com/hyperledger/fabric/examples/e2e_cli目录下面,删除容器,重启各个节点,删除容器的命令是
docker rm -f $(docker ps -aq)
以上是自己在5个阿里云服务器上部署Fabric多节点过程中遇到的几个问题和解决办法。