環境是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(智能合約)實例化失敗,可能是上一次鏡像版本、容器存在緩存引起的。
我把所有的鏡像刪除、緩存清空,測試例子也重新下載了一遍,鏡像版本和項目版本一致,重新來過就沒有問題了。