环境是Centos7
1、Hyperledger Fabric搭建环境的时候,如果用的阿里云服务器,要特别注意一下,
配置文件里面记得添加 -
GODEBUG
=
netdns
=
go
最近在Fabric技术入门学习,根据教程一步步来,部署e2e的时候,总是部署失败。
报错的内容为:orderer client failed to connect to orderer .example.com: 7050 连接失败,orderer .example.com : no such host
如下所示:
查了很久,发现很多人都碰到此问题,但是都没有贴出来解决方案。
通过docker ps -a 命令去看是因为Orderer启动失败。根据网上有人提供的解决方案 重启docker容器,他们解决成功了,我这还是一样的问题。
最后终于有人提到,说是跟阿里云ECS服务器有关,因为我也是部署在阿里云ECS上的。
解决方案一:
解决方案请看:https://yq.aliyun.com/articles/238940
根据文件内容 然后修改了/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/docker-compose-cli.yaml 文件
添加了 -
GODEBUG
=
netdns
=
go 一句话在docker-compose-cli.yml里面。
光加这个一个文件还不够,还有另外两个文件里面也都需要加上这句话。这个目录下的
/
opt
/
gopath
/
src
/
github.com
/
hyperledger
/
fabric
/
examples
/
e2e_cli
/
base
在环境变量里添加GODEBUG=netdns=go以强制使用pure Go resolver。
例如:
这下 orderer启动失败这个问题才解决完成。
解决方案二:
找到以下文件,然后把第一行注释掉
cat /etc/resolv.conf
2、虽然这个问题解决了,但是又出现了另外一个问题,真是一环套一环。
INFO 004 got staus:&{SERVICE_UNAVAILABLE}
ERROR:can't read the block:&{SERVICE_UNAVAILABLE}
这个问题还是因为镜像版本和Fabric版本对不上。删掉镜像重新下载对应的版本。
如果按照网上的文章来的话,大部分是1.0的版本,那镜像最好也选择同一个版本,保持一致
3、Error: Error endorsing chaincode: rpc error: code = Unknown desc = Error starting container: API error (404): {"message":"network e2ecli_default not found"}
答:e2e_cli目录是固定的,启动后会创建一个docker network以此为名字,这里是e2e_cli。如果修改该目录,要修改/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/base目录下的peer-base.yaml
将网络名改成如下名称即可
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default
4、code = Unknown desc = could not find chaincode with name 'mycc'
答:chaincode(智能合约)实例化失败,可能是上一次镜像版本、容器存在缓存引起的。
我把所有的镜像删除、缓存清空,测试例子也重新下载了一遍,镜像版本和项目版本一致,重新来过就没有问题了。