Hyperledger Fabric 踩坑汇总

搭建基础环境

阿里云安装出现的一些问题解决

1. [signal SIGSEGV: segmentation violation code=0x1 addr=xxx pc=xxx] 类似的错误:原始错误的代码(来自peer节点):

2020-02-09 22:43:43.665 CST [couchdb] handleRequest -> WARN 016 Retrying couchdb request in 125ms. Attempt:1  Error:Get http://couchdb:5984/: dial tcp 172.18.0.4:5984: getsockopt: connection refused
2020-02-09 22:43:43.790 CST [couchdb] handleRequest -> DEBU 017 HTTP Request: GET / HTTP/1.1 | Host: couchdb:5984 | User-Agent: Go-http-client/1.1 | Accept: multipart/related | Accept-Encoding: gzip |  |
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f17e8243259]

runtime stack:
runtime.throw(0xf11259, 0x2a)
        /opt/go/src/runtime/panic.go:605 +0x95
runtime.sigpanic()
        /opt/go/src/runtime/signal_unix.go:351 +0x2b8

goroutine 88 [syscall, locked to thread]:
runtime.cgocall(0xbf3800, 0xc42028fac8, 0xf0fa21)

修改自己阿里云ecs机器里面的/etc/resolv.conf,把里面的 options timeout:2 attempts:3 rotate single-request-reopen 这一行内容注释掉 :解决方法:

例如我的/etc/resolv.conf :

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 100.100.2.136
nameserver 100.100.2.138
#options timeout:2 attempts:3 rotate single-request-reopen

原因解析:然后问题就解决了

这个问题是出在go的DNS解析问题,由于go的Resolver不支持options single-request-reopen从而走了CGO Resolver方法导致失败了,因此只需要把/etc/resolv.conf里面的single-request-reopen这一行注释掉即可

参考为什么通过CGO Resolver失败的原因: Static Cgo Builds, What Could Go Wrong?

禁止访问

Build your first network (BYFN) end-to-end test

Channel name : mychannel
Creating channel...
+ peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=1
+ set +x
2020-02-10 05:29:16.805 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Error: got unexpected status: FORBIDDEN -- implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied: permission denied
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========

ERROR !!!! Test failed

查看一下orderer的日志,看清楚它到底是具体的哪一个部分有问题,看到大多数的问题在于:

2020-02-10 05:29:15.706 UTC [nodeCmd] serve -> INFO 01e Started peer with ID=[name:"peer0.org1.example.com" ], network ID=[dev], address=[peer0.org1.example.com:7051]
2020-02-10 05:29:15.706 UTC [kvledger] LoadPreResetHeight -> INFO 01f Loading prereset height from path [/var/hyperledger/production/ledgersData/chains]
2020-02-10 05:29:15.706 UTC [fsblkstorage] LoadPreResetHeight -> INFO 020 Loading Pre-reset heights
2020-02-10 05:29:15.706 UTC [fsblkstorage] preRestHtFiles -> INFO 021 Dir [/var/hyperledger/production/ledgersData/chains/chains] missing... exiting
2020-02-10 05:29:15.706 UTC [fsblkstorage] LoadPreResetHeight -> INFO 022 Pre-reset heights loaded
2020-02-10 05:29:15.706 UTC [nodeCmd] func7 -> INFO 023 Starting profiling server with listenAddress = 0.0.0.0:6060
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f67665ee259]

错误原因:没有删除干净的环境中启动复用的之前的volume
解决方案:执行如下命令删除卷

docker-compose -f docker-compose-cli.yaml down --volumes --remove-orphans
docker rm -f $(docker ps -a | grep "hyperledger/*" | awk "{print \$1}")
docker volume prune
 

查看一下orderer的日志,看清楚它到底是具体的哪一个部分有问题,看到大多数的问题在于:

2020-02-10 05:29:15.706 UTC [nodeCmd] serve -> INFO 01e Started peer with ID=[name:"peer0.org1.example.com" ], network ID=[dev], address=[peer0.org1.example.com:7051]
2020-02-10 05:29:15.706 UTC [kvledger] LoadPreResetHeight -> INFO 01f Loading prereset height from path [/var/hyperledger/production/ledgersData/chains]
2020-02-10 05:29:15.706 UTC [fsblkstorage] LoadPreResetHeight -> INFO 020 Loading Pre-reset heights
2020-02-10 05:29:15.706 UTC [fsblkstorage] preRestHtFiles -> INFO 021 Dir [/var/hyperledger/production/ledgersData/chains/chains] missing... exiting
2020-02-10 05:29:15.706 UTC [fsblkstorage] LoadPreResetHeight -> INFO 022 Pre-reset heights loaded
2020-02-10 05:29:15.706 UTC [nodeCmd] func7 -> INFO 023 Starting profiling server with listenAddress = 0.0.0.0:6060
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f67665ee259]

错误原因:没有删除干净的环境中启动复用的之前的volume
解决方案:执行如下命令删除卷

docker-compose -f docker-compose-cli.yaml down --volumes --remove-orphans
docker rm -f $(docker ps -a | grep "hyperledger/*" | awk "{print \$1}")
docker volume prune

猜你喜欢

转载自www.cnblogs.com/biaogejiushibiao/p/12290728.html