Настройка нескольких хостов HLF без роя - проблема с CA - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь настроить несколько хостов, одну настройку org для узлов Hyperledger Fabric. Я хочу запустить два узла на разных компьютерах на базе AWS без оркестратора Swarm. Я хочу избежать Swarm из-за потенциальной проблемы с централизацией кластеров при настройке нескольких организаций. Я настраиваю настройку BYFN из официальной документации. В настоящее время моей самой большой проблемой является проблема при создании канала . После запуска канала с

peer channel create -o orderer.mydomain.io:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/mydomain.io/orderers/orderer.mydomain.io/msp/tlscacerts/tlsca.mydomain.io-cert.pem

Я получаю следующее: Error: got unexpected status: FORBIDDEN -- implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied: permission denied. Между тем docker logs <orderer container id> команда показывает Principal deserialization failure (the supplied identity is not valid: x509: certificate signed by unknown authority) for identity 0. Как я могу добиться конфигурации нескольких хостов без роя как минимум для двух независимых узлов в Hyperledger? Существуют ли какие-либо дополнительные переменные или специальные настройки, необходимые для работы в режиме сети хоста?

Настройка конфигурации

Для достижения конфигурации без роя я подготовил следующую конфигурацию:

  • Machine0 - заказчик, peer0, cli и CA, каждый из которых работает в network_mode: host.
  • Machine1 - peer1 in network_mode: host.
  • Заказчик имеет порт операции по умолчанию, измененный на CORE_OPERATIONS_LISTENADDRESS из-за конфликта портов с CA.
  • Механизм сольного согласия (нацеленность на Кафку).
  • инструмент шифрования используется только на Machine0 - артефакты канала и крипто-конфигурации копируются на другой компьютер.
  • Одноранговые узлы на разных машинах видны друг для друга через полное доменное имя - они могут пинговать друг друга изнутри контейнера.
  • Все контейнеры подключены к сети host и отображаются с помощью docker network inspect host.

Что я пробовал

  1. Я попытался настроить файлы .pem в соответствии с этим официальным руководством. , но файлы _sk и .pem, похоже, правильно скопированы в контейнер.
  2. Очистка рабочего каталога, включая перезагрузку компьютера и полное удаление всех файлов проекта.
  3. Изменение переменных среды - в руководствах показаны разные опции, и я не могу найти правильную настройку. В прикрепленном фрагменте кода есть две копии.

Полезный код

Определение CA в docker-compose.yaml

ca0:
  image: hyperledger/fabric-ca:$IMAGE_TAG
  network_mode: host
  environment:
    - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
    - FABRIC_CA_SERVER_CA_NAME=ca-org1
    - FABRIC_CA_SERVER_TLS_ENABLED=true
    - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.mydomain.io-cert.pem
    - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/${MYNETWORK_CA1_PRIVATE_KEY}
    - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.mydomain.io-cert.pem
    - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/${MYNETWORK_CA1_PRIVATE_KEY}
    - FABRIC_CA_SERVER_PORT=7054
  ports:
    - "7054:7054"
  command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server/ca.org1.mydomain.io-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server/${MYNETWORK_CA1_PRIVATE_KEY} -b admin:adminpw -d'
  volumes:
    - ./crypto-config/peerOrganizations/org1.mydomain.io/ca/:/etc/hyperledger/fabric-ca-server-config
  container_name: ca.org1.mydomain.io
...