2017-06-15 6 views
1

Ich habe ein Hyperledger Fabric (v0.6) Netzwerk-Setup auf Remote-Maschinen. Ich möchte den pbft-Konsens für die Verpflichtung von Blöcken ermöglichen. Ich kann den pbft-Konsens in den Protokollen aktiviert sehen und die Peers können sich mit dem Wurzelknoten verbinden. Ich habe meinen Chaincode auf allen 4 Peers implementiert und eine Transaktion auf einem aufgerufen. Ich sehe keine Commits in irgendeinem der Peers, selbst nach einer langen Zeit, obwohl die Peers eine Zustandsänderung viel propagieren.Hyperledger Fabric 0.6 pbft Konsens

Es folgt mein Docker-compose.yml Datei im Root-Knoten:

membersrvc: 
    image: hyperledger/fabric-membersrvc 
    restart: unless-stopped 
    ports: 
    - "7054:7054" 
    expose: 
    - "7054" 
    volumes: 
    - /var/run/docker.sock:/var/run/docker.sock 
    environment: 
    - MEMBERSRVC_CA_ACA_ENABLED=true 
    command: membersrvc 

    vp0: 
    image: hyperledger/fabric-peer:latest 
    restart: unless-stopped 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
    environment: 
     - CORE_PEER_ID=vp0 
     - CORE_SECURITY_ENABLED=false 
     - CORE_SECURITY_ENROLLID=test_vp0 
     - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT 
     - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054 
     - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054 
     - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054 
     - CORE_PEER_ADDRESSAUTODETECT=true 
     - CORE_PEER_NETWORKID=dev 
     - CORE_LOGGING_LEVEL=debug #critical, error, warning, notice, info, debug 
     # The following section enables pbft consensus 
     - CORE_PBFT_GENERAL_BATCHSIZE=1 
     - CORE_PBFT_GENERAL_K=2 
     - CORE_PBFT_GENERAL_MODE=classic 
     - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft # noops, pbft 
     - CORE_PBFT_GENERAL_TIMEOUT_REQUEST=10s 
     # - CORE_NOOPS_BLOCK_TIMEOUT=2s 
     # - CORE_NOOPS_BLOCK_WAIT=2s 
    ports: 
     - "7050:7050" 
     - "7051:7051" 
    expose: 
     - "7051" 
     - "7052" 
     - "7053" 
    links: 
     - membersrvc 
    command: sh -c "sleep 20; peer node start" 

Und das ist die Docker-compose.yml Datei an jedem der Peer-Knoten:

vp1: 
    image: hyperledger/fabric-peer:latest 
    restart: unless-stopped 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
    environment: 
     - CORE_PEER_DISCOVERY_ROOTNODE=root-node-ip:7051 
     - CORE_PEER_ID=vp1 
     - CORE_SECURITY_ENABLED=false 
     - CORE_SECURITY_ENROLLID=test_vp1 
     - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT 
     - CORE_PEER_PKI_ECA_PADDR=http://root-node-ip:7054 
     - CORE_PEER_PKI_TCA_PADDR=http://root-node-ip:7054 
     - CORE_PEER_PKI_TLSCA_PADDR=http://root-node-ip:7054 
     - CORE_PEER_ADDRESSAUTODETECT=true 
     - CORE_PEER_NETWORKID=dev 
     - CORE_LOGGING_LEVEL=debug #critical, error, warning, notice, info, debug 
     # The following section enables pbft consensus 
     - CORE_PBFT_GENERAL_BATCHSIZE=1 
     - CORE_PBFT_GENERAL_K=2 
     - CORE_PBFT_GENERAL_MODE=classic 
     - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft # noops, pbft 
     - CORE_PBFT_GENERAL_TIMEOUT_REQUEST=10s 
     #- CORE_NOOPS_BLOCK_TIMEOUT=2s 
     #- CORE_NOOPS_BLOCK_WAIT=2s 
    ports: 
     - "7050:7050" 
     - "7051:7051" 
    expose: 
     - "7051" 
     - "7052" 
     - "7053" 
    command: sh -c "sleep 20; peer node start" 

Can jemand bitte helfen. Vielen Dank.

Antwort

0

Ich dachte, dass die Peers Handshake nicht mithilfe ihrer Docker-IP-Adressen veröffentlichen konnten. Ich habe die automatische Erkennung ausgeschaltet, indem ich die CORE_PEER_ADDRESSAUTODETECT auf false gesetzt habe und die Peers einander entdecken lassen, indem ich CORE_PEER_ADDRESS auf die öffentliche IP der Instanz und CORE_PEER_DISCOVERY_ROOTNODE auf die IP-Adresse des Validators setze, mit dem der Peer sein Ledger synchronisieren würde.

Verwandte Themen