LoginSignup
0
1

More than 5 years have passed since last update.

Hyperledger Fabric v0.6.1-previewで複数ノードが通信するブロックチェーン環境を作る

Posted at

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1