3

我正在尝试创建一个 Hyperledger 验证节点集群,每个节点都在不同的主机上运行,​​但它似乎无法正常运行。

启动根节点和 3 个对等节点后,这是在peer network list根节点上运行的输出vp0

{"peers":[{"ID":{"name":"vp1"},"address":"172.17.0.2:30303","type":1},{"ID":{"name":"vp2"},"address":"172.17.0.2:30303","type":1},{"ID":{"name":"vp3"},"address":"172.17.0.2:30303","type":1}]}

这是对等点之一的同一命令的输出vp3

{"peers":[{"ID":{"name":"vp0"},"address":"172.17.0.2:30303","type":1},{"ID":{"name":"vp3"},"address":"172.17.0.2:30303","type":1}]}

所有的对等点只在他们的列表中列出他们自己和根, vp0

这是根节点的日志输出vp0https ://gist.github.com/mikezaccardo/f139eaf8004540cdfd24da5a892716cc

这是来自对等节点之一的日志输出vp3https ://gist.github.com/mikezaccardo/7379584ca4f67bce553c288541e3c58e

这是我正在运行以创建根节点的命令:

nohup sudo docker run --name=$HYPERLEDGER_PEER_ID \
            --restart=unless-stopped \
            -i \
            -p 5000:5000 \
            -p 30303:30303 \
            -p 30304:30304 \
            -p 31315:31315 \
            -e CORE_VM_ENDPOINT=http://172.17.0.1:4243 \
            -e CORE_PEER_ID=$HYPERLEDGER_PEER_ID \
            -e CORE_PEER_ADDRESSAUTODETECT=true \
            -e CORE_PEER_NETWORKID=dev \
            -e CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft \
            -e CORE_PBFT_GENERAL_MODE=classic \
            -e CORE_PBFT_GENERAL_N=$HYPERLEDGER_CLUSTER_SIZE \
            -e CORE_PBFT_GENERAL_TIMEOUT_REQUEST=10s \
            joequant/hyperledger /bin/bash -c "rm config.yaml; cp /usr/share/go-1.6/src/github.com/hyperledger/fabric/consensus/obcpbft/config.yaml .; peer node start" > $HYPERLEDGER_PEER_ID.log 2>&1&

这是我正在运行以创建其他每个对等节点的命令:

nohup sudo docker run --name=$HYPERLEDGER_PEER_ID \
            --restart=unless-stopped \
            -i \
            -p 30303:30303 \
            -p 30304:30304 \
            -p 31315:31315 \
            -e CORE_VM_ENDPOINT=http://172.17.0.1:4243 \
            -e CORE_PEER_ID=$HYPERLEDGER_PEER_ID \
            -e CORE_PEER_DISCOVERY_ROOTNODE=$HYPERLEDGER_ROOT_NODE_ADDRESS:30303 \
            -e CORE_PEER_ADDRESSAUTODETECT=true \
            -e CORE_PEER_NETWORKID=dev \
            -e CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft \
            -e CORE_PBFT_GENERAL_MODE=classic \
            -e CORE_PBFT_GENERAL_N=$HYPERLEDGER_CLUSTER_SIZE \
            -e CORE_PBFT_GENERAL_TIMEOUT_REQUEST=10s \
            joequant/hyperledger /bin/bash -c "rm config.yaml; cp /usr/share/go-1.6/src/github.com/hyperledger/fabric/consensus/obcpbft/config.yaml .; peer node start" > $HYPERLEDGER_PEER_ID.log 2>&1&

HYPERLEDGER_PEER_IDvp0根节点vp1,, vp2, ... 为对等节点,HYPERLEDGER_ROOT_NODE_ADDRESS为根节点的公网 IP 地址,HYPERLEDGER_CLUSTER_SIZE为 4。

这是我正在使用的 Docker 映像:github.com/joequant/hyperledger

我的命令有什么明显的问题吗?是否应该显示对等方的实际公共 IP 地址而不是仅显示172.17.0.2?我的日志有用吗/是否需要任何其他信息?

任何帮助或见解将不胜感激,谢谢!

4

1 回答 1

2

我已经设法让一个noops集群工作,所有节点都可以在其中发现彼此并成功部署链代码。

自从我上面的帖子以来,我做了一些修复:

我现在使用mikezaccardo/hyperledger-peer图像,yeasy/hyperledger-peer 的一个分支而不是joequant/hyperledger

我变了:

-e CORE_PEER_ADDRESSAUTODETECT=true \ 

至:

-e CORE_PEER_ADDRESS=$HOST_ADDRESS:30303 \
-e CORE_PEER_ADDRESSAUTODETECT=false \

这样每个对等点都会公布其公共 IP,而不是私有 IP。

我正确地将我的图像标记为官方基础图像:

 sudo docker tag mikezaccardo/hyperledger:latest hyperledger/fabric-baseimage:latest

最后,就上下文而言,这都与我为 Apache Brooklyn 开发的蓝图有关,该蓝图部署了 Hyperledger Fabric 集群。该存储库包含这篇文章和答案中提到的所有代码,可以在此处找到:https ://github.com/cloudsoft/brooklyn-hyperledger 。

于 2016-05-19T19:34:48.033 回答