Как сопоставить одноранговые узлы Hyperledger Fabric (2-й, 3-й, 4-й) с портами для связи REST

У меня есть настройка env Hyperledger Fabric 0.6 в 64-битной ОС Windows 7 с использованием docker-Toolbox, и я использую клиент REST API для запуска запросов. Ниже приведен мой файл создания докеров с четырьмя одноранговыми узлами ca.yaml:

version: "2"
services: baseimage: image: hyperledger/fabric-baseimage:latest

membersrvc:
  image: hyperledger/fabric-membersrvc

  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

vp0:
  image: hyperledger/fabric-peer
  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=true
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
    - CORE_LOGGING_LEVEL=DEBUG
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc: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"
  links: - membersrvc

vp1:
  image: hyperledger/fabric-peer
  volumes: - /var/run/docker.sock:/var/run/docker.sock
  ports:
    - "8050:7050"
    - "8051:7051"
    - "8053:7053"
  environment:
    - CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
    - CORE_PEER_ID=vp1
    - CORE_SECURITY_ENROLLID=test_vp1
    - CORE_SECURITY_ENROLLSECRET=5wgHK9qqYaPy
    - CORE_PEER_DISCOVERY_PERIOD=60s
    - CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
    - CORE_PEER_ADDRESSAUTODETECT=true
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
    - CORE_LOGGING_LEVEL=DEBUG
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
    - CORE_SECURITY_ENABLED=true
    - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
    - CORE_PBFT_GENERAL_MODE=batch
    - CORE_PBFT_GENERAL_N=4
  links: - membersrvc - vp0
  command: sh -c "sleep 10; peer node start"

vp2:
  image: hyperledger/fabric-peer
  volumes: - /var/run/docker.sock:/var/run/docker.sock
  ports:
    - "9050:7050"
    - "9051:7051"
    - "9053:7053"
  environment:
    - CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
    - CORE_PEER_ID=vp2
    - CORE_SECURITY_ENROLLID=test_vp2
    - CORE_SECURITY_ENROLLSECRET=vQelbRvja7cJ
    - CORE_PEER_DISCOVERY_PERIOD=60s
    - CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
    - CORE_PEER_ADDRESSAUTODETECT=true
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
    - CORE_LOGGING_LEVEL=DEBUG
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
    - CORE_SECURITY_ENABLED=true
    - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
    - CORE_PBFT_GENERAL_MODE=batch
    - CORE_PBFT_GENERAL_N=4
  links: - membersrvc - vp0
  command: sh -c "sleep 10; peer node start"

vp3:
  image: hyperledger/fabric-peer
  volumes: - /var/run/docker.sock:/var/run/docker.sock
  ports:
    - "10050:7050"
    - "10051:7051"
    - "10053:7053"
  environment:
    - CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
    - CORE_PEER_ID=vp3
    - CORE_SECURITY_ENROLLID=test_vp3
    - CORE_SECURITY_ENROLLSECRET=9LKqKH5peurL
    - CORE_PEER_DISCOVERY_PERIOD=60s
    - CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
    - CORE_PEER_ADDRESSAUTODETECT=true
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
    - CORE_LOGGING_LEVEL=DEBUG
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
    - CORE_SECURITY_ENABLED=true
    - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
    - CORE_PBFT_GENERAL_MODE=batch
    - CORE_PBFT_GENERAL_N=4
  links: - membersrvc - vp0
  command: sh -c "sleep 10; peer node start"**

//------------ с помощью команды docker-compose up мой сервер работает и все 4 пира успешно созданы. в другом терминале докера я выполнил следующую команду, которая также работает нормально:

CORE_CHAINCODE_ID_NAME=mycc006 CORE_PEER_ADDRESS=192.168.99.100:7051 ./chaincode_example02

Поскольку я использую панель инструментов docker, только 192.168.99.100 является приемлемым IP-адресом для CORE_PEER_ADDRESS.

Запрос REST API отвечает только на - 192.168.99.100:7050/chaincode для всех операций

Вы можете видеть в файле docker-compose выше, что я сопоставил vp1, vp2, vp3 с разными портами и перенаправил на vp0.

Но когда я пытаюсь использовать любой другой одноранговый узел, например vp1, использующий 192.168.99.100:8050/chaincode, запрос терпит неудачу, так как нет ответа от vp1, vp2, vp3, хотя я специально сопоставил порты с этими одноранговыми узлами. Команда Docker ps показывает, что memersrvc и все 4 одноранговых контейнера работают, но порты назначены только для vp0.

Как сопоставить другие одноранговые узлы vp1, vp2, vp3 с портами, чтобы получить к ним доступ через REST API? Будем признательны за любую помощь или рекомендации.

Спасибо.


person Vaibhav    schedule 31.03.2017    source источник


Ответы (1)


ваш файл docker-compose выглядит хорошо, несмотря на некоторые небольшие проблемы в отображении, которые, я думаю, связаны с рендерингом в stackoverflow. Проблема в том, что конечные точки REST вообще не работают? Например, http://localhost:10050/chain недоступен? Если это так, вы можете убедиться, что используете правильные изображения hyperledger/fabric-peer:x86_64-0.6.1-preview, поскольку файл docker-compose работает с изображениями 1.0-alpha как хорошо, но там отсутствует REST API. Слегка измененный файл docker-compose, который я прикрепил ниже, работает из коробки. Если это решит вашу проблему, вы должны заглянуть в свои образы докеров и посмотреть, куда указывает тег latest.

version: "2"
services: # baseimage: image: hyperledger/fabric-baseimage:latest

  membersrvc:
    image: hyperledger/fabric-membersrvc

    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

  vp0:
    image: hyperledger/fabric-peer:x86_64-0.6.1-preview
    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=true
      - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TLSCA_PADDR=membersrvc: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"
    links: 
      - membersrvc

  vp1:
    image: hyperledger/fabric-peer:x86_64-0.6.1-preview
    volumes: 
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "8050:7050"
      - "8051:7051"
      - "8053:7053"
    environment:
      - CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
      - CORE_PEER_ID=vp1
      - CORE_SECURITY_ENROLLID=test_vp1
      - CORE_SECURITY_ENROLLSECRET=5wgHK9qqYaPy
      - CORE_PEER_DISCOVERY_PERIOD=60s
      - CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
      - CORE_PEER_ADDRESSAUTODETECT=true
      - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
      - CORE_SECURITY_ENABLED=true
      - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
      - CORE_PBFT_GENERAL_MODE=batch
      - CORE_PBFT_GENERAL_N=4
    links: 
      - membersrvc 
      - vp0
    command: sh -c "sleep 10; peer node start"

  vp2:
    image: hyperledger/fabric-peer:x86_64-0.6.1-preview
    volumes: 
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "9050:7050"
      - "9051:7051"
      - "9053:7053"
    environment:
      - CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
      - CORE_PEER_ID=vp2
      - CORE_SECURITY_ENROLLID=test_vp2
      - CORE_SECURITY_ENROLLSECRET=vQelbRvja7cJ
      - CORE_PEER_DISCOVERY_PERIOD=60s
      - CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
      - CORE_PEER_ADDRESSAUTODETECT=true
      - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
      - CORE_SECURITY_ENABLED=true
      - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
      - CORE_PBFT_GENERAL_MODE=batch
      - CORE_PBFT_GENERAL_N=4
    links: 
      - membersrvc 
      - vp0
    command: sh -c "sleep 10; peer node start"

  vp3:
    image: hyperledger/fabric-peer:x86_64-0.6.1-preview
    volumes: 
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "10050:7050"
      - "10051:7051"
      - "10053:7053"
    environment:
      - CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
      - CORE_PEER_ID=vp3
      - CORE_SECURITY_ENROLLID=test_vp3
      - CORE_SECURITY_ENROLLSECRET=9LKqKH5peurL
      - CORE_PEER_DISCOVERY_PERIOD=60s
      - CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
      - CORE_PEER_ADDRESSAUTODETECT=true
      - CORE_VM_ENDPOINT=unix:///var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
      - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
      - CORE_SECURITY_ENABLED=true
      - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
      - CORE_PBFT_GENERAL_MODE=batch
      - CORE_PBFT_GENERAL_N=4
    links: 
      - membersrvc 
      - vp0
    command: sh -c "sleep 10; peer node start"
person david    schedule 01.04.2017
comment
Я буквально потратил дни на это решение и, возможно, еще не догадался. Большое спасибо @david за ваш ответ. Я ценю его. - person Vaibhav; 04.04.2017