多主机验证对等集群设置
Multi-host Validating Peer Cluster Setup
我正在尝试创建一个 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
。
这是根节点的日志输出,vp0
:https://gist.github.com/mikezaccardo/f139eaf8004540cdfd24da5a892716cc
这是对等节点之一的日志输出,vp3
:https://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_ID
对于根节点是 vp0
并且 vp1
, vp2
, ... 对于对等节点,HYPERLEDGER_ROOT_NODE_ADDRESS
是 public根节点IP地址,HYPERLEDGER_CLUSTER_SIZE
为4.
这是我正在使用的 Docker 图片:github。com/joequant/hyperledger
我的命令有什么明显的错误吗?是否应显示对等方的实际 public IP 地址,而不是仅显示 172.17.0.2
?我的日志是否有用/是否需要任何其他信息?
任何帮助或见解将不胜感激,谢谢!
我已经成功建立了一个 noops
集群,其中所有节点相互发现并且成功部署了链码。
自从上面的 post 以来,我做了一些修复:
我现在用mikezaccardo/hyperledger-peer image, a fork of yeasy/hyperledger-peer, instead of joequant/hyperledger.
我改了:
-e CORE_PEER_ADDRESSAUTODETECT=true \
至:
-e CORE_PEER_ADDRESS=$HOST_ADDRESS:30303 \
-e CORE_PEER_ADDRESSAUTODETECT=false \
这样每个对等点都会公布其 public IP,而不是私有 IP。
并且我正确地将我的图像标记为官方基础图像:
sudo docker tag mikezaccardo/hyperledger:latest hyperledger/fabric-baseimage:latest
最后,对于上下文,这都与我为部署 Hyperledger Fabric 集群的 Apache Brooklyn 开发蓝图有关。该存储库包含此 post 和答案中提到的所有代码,可在此处找到:https://github.com/cloudsoft/brooklyn-hyperledger.
我正在尝试创建一个 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
。
这是根节点的日志输出,vp0
:https://gist.github.com/mikezaccardo/f139eaf8004540cdfd24da5a892716cc
这是对等节点之一的日志输出,vp3
:https://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_ID
对于根节点是 vp0
并且 vp1
, vp2
, ... 对于对等节点,HYPERLEDGER_ROOT_NODE_ADDRESS
是 public根节点IP地址,HYPERLEDGER_CLUSTER_SIZE
为4.
这是我正在使用的 Docker 图片:github。com/joequant/hyperledger
我的命令有什么明显的错误吗?是否应显示对等方的实际 public IP 地址,而不是仅显示 172.17.0.2
?我的日志是否有用/是否需要任何其他信息?
任何帮助或见解将不胜感激,谢谢!
我已经成功建立了一个 noops
集群,其中所有节点相互发现并且成功部署了链码。
自从上面的 post 以来,我做了一些修复:
我现在用mikezaccardo/hyperledger-peer image, a fork of yeasy/hyperledger-peer, instead of joequant/hyperledger.
我改了:
-e CORE_PEER_ADDRESSAUTODETECT=true \
至:
-e CORE_PEER_ADDRESS=$HOST_ADDRESS:30303 \
-e CORE_PEER_ADDRESSAUTODETECT=false \
这样每个对等点都会公布其 public IP,而不是私有 IP。
并且我正确地将我的图像标记为官方基础图像:
sudo docker tag mikezaccardo/hyperledger:latest hyperledger/fabric-baseimage:latest
最后,对于上下文,这都与我为部署 Hyperledger Fabric 集群的 Apache Brooklyn 开发蓝图有关。该存储库包含此 post 和答案中提到的所有代码,可在此处找到:https://github.com/cloudsoft/brooklyn-hyperledger.