Я пытаюсь настроить несколько хостов, одну настройку 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
.
Что я пробовал
- Я попытался настроить файлы .pem в соответствии с этим официальным руководством. , но файлы _sk и .pem, похоже, правильно скопированы в контейнер.
- Очистка рабочего каталога, включая перезагрузку компьютера и полное удаление всех файлов проекта.
- Изменение переменных среды - в руководствах показаны разные опции, и я не могу найти правильную настройку. В прикрепленном фрагменте кода есть две копии.
Полезный код
Определение 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