【发布时间】:2017-03-30 09:36:36
【问题描述】:
我在 Hyperledger Fabric v1.0 上工作,并希望使 Getting Setup 在多个主机上工作。现在,2 会很棒。
这是我想做的:
- Host1:启动一个 orderer 和 2 个 peer
- Host2:启动 1 个节点
- Host2:客户端创建一个通道(使用使用良好主机 IP 更新的 channel_test.sh)并加入所有 3 个对等点
- Host1:调用给定示例的 de deploy.js 来部署链码
我在第三步遇到了问题。我认为频道创建有效,但在我的同行日志中,我对 3 个同行有相同的警告:
Remote endpoint claims to be a different peer, expected [host1 IP:8051] but got [172.17.0.4:7051]
Failed obtaining connection for 172.31.9.126:8051, PKIid:[49 55 50 ...] reason: Authentication failure
看起来他们无法相互交流。 知道问题出在哪里吗?
我仍然尝试了我的第 4 步,但我无法部署它,除非我从 config.json 中删除 host2: peer1。即使这样,我也只能从 host1: peer0 查询,而不能从 host1: peer2 查询。
以下是我用来设置网络的命令:
Host1:订购者
docker run --rm -it --name orderer -p 8050:7050
-e ORDERER_GENERAL_LEDGERTYPE=ram
-e ORDERER_GENERAL_BATCHTIMEOUT=10s
-e ORDERER_GENERAL_BATCHSIZE_MAXMESSAGECOUNT=10
-e ORDERER_GENERAL_MAXWINDOWSIZE=1000
-e ORDERER_GENERAL_ORDERERTYPE=solo
-e ORDERER_GENERAL_LOGLEVEL=debug
-e ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
-e ORDERER_GENERAL_LISTENPORT=7050
-e ORDERER_RAMLEDGER_HISTORY_SIZE=100
sfhackfest22017/fabric-orderer:x86_64-0.7.0-snapshot-c7b3fe0 orderer
Host1:Peer0
docker run --rm -it --name peer0 -p 8051:7051 -p 8053:7053
-v /var/run/:/host/var/run/ -v $BASE_DIR/tmp/peer0:/etc/hyperledger/fabric/msp/sampleconfig
-e CORE_PEER_ADDRESSAUTODETECT=true
-e CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
-e CORE_LOGGING_LEVEL=DEBUG
-e CORE_PEER_NETWORKID=peer0
-e CORE_NEXT=true
-e CORE_PEER_ENDORSER_ENABLED=true
-e CORE_PEER_ID=peer0
-e CORE_PEER_PROFILE_ENABLED=true
-e CORE_PEER_COMMITTER_LEDGER_ORDERER=$ORDERER_IP:7050
-e CORE_PEER_GOSSIP_ORGLEADER=true
-e CORE_PEER_GOSSIP_IGNORESECURITY=true
sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0 peer node start --peer-defaultchain=false
Host1:Peer2
docker run --rm -it --name peer2 -p 8055:7051 -p 8057:7053
-v /var/run/:/host/var/run/ -v $BASE_DIR/tmp/peer0:/etc/hyperledger/fabric/msp/sampleconfig
-e CORE_PEER_ID=peer2
[Other parameters are the same as Peer0]
sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0 peer node start --peer-defaultchain=false
Host2:Peer1
docker run --rm -it --name peer1 -p 8051:7051
-v /var/run/:/host/var/run/ -v $BASE_DIR/tmp/peer0:/etc/hyperledger/fabric/msp/sampleconfig
-e CORE_PEER_ID=peer1
[Other parameters are the same as Peer0]
sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0 peer node start --peer-defaultchain=false
Host2:Cli
docker run --rm -it --name cli
-v /var/run/:/host/var/run/ -v $BASE_DIR/tmp/peer3:/etc/hyperledger/fabric/msp/sampleconfig -v $BASE_DIR/src/github.com/example_cc/example_cc.go:/opt/gopath/src/github.com/hyperledger/fabric/examples/example_cc.go -v $BASE_DIR/channel_test.sh:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel_test.sh
--workdir /opt/gopath/src/github.com/hyperledger/fabric/peer
-e GOPATH=/opt/gopath
-e CORE_PEER_ADDRESSAUTODETECT=true
-e CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
-e CORE_LOGGING_LEVEL=DEBUG
-e CORE_NEXT=true
-e CORE_PEER_ID=cli
-e CORE_PEER_ENDORSER_ENABLED=true
-e CORE_PEER_COMMITTER_LEDGER_ORDERER=$ORDERER_IP:8050
-e CORE_PEER_ADDRESS=$PEER0_IP:8051
sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0 ./channel_test.sh
如果您需要更多信息,请随时询问。
注意:我对 docker 不是很熟悉,欢迎对我如何使用它提出任何改进/建议 :)
【问题讨论】:
-
你能解释一下
CORE_NEXT=true变量的用途吗? -
我尝试与docker-compose-gettingstarted.yml 做同样的事情。至于环境变量的用途,我不能说。你知道我在哪里可以找到文档吗?
-
看起来您的问题与端口映射有关 - 如果主机位于不同的 IP 上,则无需移动端口。在所有对等方中将
-p 805x:7051 -p 805x:7053更改为-p 7051:7051 -p 7053:7053 -
消息现在是一样的,但端口改变了:Exp: 172.3X.X.XXX:7051 - Got: 172.17.0.3:7051 (第一个 ip 是机器的,第二个是本地 docker 的 ip )。但是感谢您的端口建议
-
同样你有什么运气吗?
标签: hyperledger hyperledger-fabric