4台のEC2環境を使って、Hyperledger Fabric環境を構築したため、その手順を記載します。
1台上に論理的に4つdockerコンテナを立てて、セットアップする方法は残っているものの
物理的に複数台で構成している例はあまり見なかったのでその方法です。
docker-compose.yaml を分割・修正して起動しています。
membersrvc.yaml
version: '2'
services:
baseimage:
image: hyperledger/fabric-baseimage:x86_64-0.2.0
membersrvc:
image: hyperledger/fabric-membersrvc:x86_64-0.6.1-preview
container_name: "membersrvc1"
ports:
- "7054:7054"
command: membersrvc
environment:
- MEMBERSRVC_CA_LOGGING_SERVER=INFO
- MEMBERSRVC_CA_LOGGING_CA=INFO
- MEMBERSRVC_CA_LOGGING_ECA=INFO
- MEMBERSRVC_CA_LOGGING_ECAP=INFO
- MEMBERSRVC_CA_LOGGING_ECAA=INFO
- MEMBERSRVC_CA_LOGGING_ACA=INFO
- MEMBERSRVC_CA_LOGGING_ACAP=INFO
- MEMBERSRVC_CA_LOGGING_TCA=INFO
- MEMBERSRVC_CA_LOGGING_TCAP=INFO
- MEMBERSRVC_CA_LOGGING_TCAA=INFO
- MEMBERSRVC_CA_LOGGING_TLSCA=INFO
peer0.yaml
version: '2'
services:
baseimage:
image: hyperledger/fabric-baseimage:x86_64-0.2.0
vp0:
image: hyperledger/fabric-peer:x86_64-0.6.1-preview
container_name: "peer0-0.6.1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
environment:
- CORE_PEER_ID=vp0
- CORE_SECURITY_ENROLLID=test_vp0
- CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
- CORE_PEER_DISCOVERY_PERIOD=60s
- CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
- CORE_PEER_ADDRESSAUTODETECT=false
- CORE_PEER_ADDRESS=${peer0_IP}:7051
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_PKI_ECA_PADDR=${membersrvc_IP}:7054
- CORE_PEER_PKI_TCA_PADDR=${membersrvc_IP}:7054
- CORE_PEER_PKI_TLSCA_PADDR=${membersrvc_IP}:7054
- CORE_SECURITY_ENABLED=true
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
- CORE_PBFT_GENERAL_MODE=batch
- CORE_PBFT_GENERAL_N=4
command: sh -c "sleep 10; peer node start"
その他のPeerはvp1~vp3まで、読み替えて作成してください。
${other_peer_IP}はそれぞれのローカルIPです。
CORE_SECURITY_ENROLLSECRETはmembersrvcの"membersrvc/membersrvc.yaml"に記載されているパスワードを使います。(下のコードはtest_vp1のものとしています。)
other_peer.yaml
version: '2'
services:
baseimage:
image: hyperledger/fabric-baseimage:x86_64-0.2.0
vp[1-3]:
image: hyperledger/fabric-peer:x86_64-0.6.1-preview
container_name: "peerx-0.6.1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
environment:
- CORE_PEER_DISCOVERY_ROOTNODE=${peer0_IP}:7051
- CORE_PEER_ID=vp[1-3]
- CORE_SECURITY_ENROLLID=test_vp[1-3]
- CORE_SECURITY_ENROLLSECRET=5wgHK9qqYaPy
- CORE_PEER_DISCOVERY_PERIOD=60s
- CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
- CORE_PEER_ADDRESSAUTODETECT=false
- CORE_PEER_ADDRESS=${other_peer_IP}:7051
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_PKI_ECA_PADDR=${membersrvc_IP}:7054
- CORE_PEER_PKI_TCA_PADDR=${membersrvc_IP}:7054
- CORE_PEER_PKI_TLSCA_PADDR=${membersrvc_IP}:7054
- CORE_SECURITY_ENABLED=true
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
- CORE_PBFT_GENERAL_MODE=batch
- CORE_PBFT_GENERAL_N=4
command: sh -c "sleep 10; peer node start"
ポイントはCORE_PEER_ADDRESSAUTODETECT=false としてアドレスを定義してあげることです。
trueとしてオート設定にすると、dockerコンテナのIPが設定されるため、外部から通信ができません。
あとは、それぞれのサーバーで
membersrvc→peer0→other_peerの順に起動してあげるだけです。
//command each server
docker-compose -f {membersrvc/peer0/other_peer}.yaml up -d
参考リンク
Blockchain(Hyperledger)のローカル環境を作ってみた(Fabric Starter Kit) - Qiita