Я пытаюсь добавить новую организацию Orderer в существующую службу заказов на основе RAFT. Я использую first-network
из fabric-samples
в качестве базовой сети. При создании крипто-материала, я изменил, чтобы генерировать крипто-материал для еще 1 организации заказчика. crypto-config.yaml
выглядит следующим образом:
OrdererOrgs:
# ---------------------------------------------------------------------------
# Orderer
# ---------------------------------------------------------------------------
- Name: Orderer
Domain: example.com
EnableNodeOUs: true
# ---------------------------------------------------------------------------
# "Specs" - See PeerOrgs below for complete description
# ---------------------------------------------------------------------------
Specs:
- Hostname: orderer
- Hostname: orderer2
- Hostname: orderer3
- Hostname: orderer4
- Hostname: orderer5
- Name: Orderer1
Domain: example1.com
EnableNodeOUs: true
Specs:
- Hostname: orderer
- Hostname: orderer2
- Hostname: orderer3
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
# ---------------------------------------------------------------------------
# Org1
# ---------------------------------------------------------------------------
- Name: Org1
Domain: org1.example.com
EnableNodeOUs: true
Template:
Count: 2
# Start: 5
# Hostname: {{.Prefix}}{{.Index}} # default
# ---------------------------------------------------------------------------
# "Users"
# ---------------------------------------------------------------------------
# Count: The number of user accounts _in addition_ to Admin
# ---------------------------------------------------------------------------
Users:
Count: 1
# ---------------------------------------------------------------------------
# Org2: See "Org1" for full specification
# ---------------------------------------------------------------------------
- Name: Org2
Domain: org2.example.com
EnableNodeOUs: true
Template:
Count: 2
Users:
Count: 1
Кроме того, configtx.yaml
для создания MSP новой организации Orderer в формате JSON имеет вид:
Organizations:
- &Orderer1Org
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Orderer1Org
# ID to load the MSP definition as
ID: Orderer1MSP
MSPDir: ../crypto-config/ordererOrganizations/example1.com/msp
# Policies defines the set of policies at this level of the config tree
# For organization policies, their canonical path is usually
# /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
Policies:
Readers:
Type: Signature
Rule: "OR('Orderer1MSP.member')"
Writers:
Type: Signature
Rule: "OR('Orderer1MSP.member')"
Admins:
Type: Signature
Rule: "OR('Orderer1MSP.admin')"
Затем я загружаюсь сеть использует byfn.sh
. Теперь я использую контейнер cli
, чтобы изменить конфигурацию системного канала , выполнив следующие действия:
Сначала я добавляю JSON организации к заказчику сгруппируйте следующим образом и отправьте обновление канала:
jq -s '. [0] * {"channel_group": {"groups": {"Orderer": {"groups": {"Orderer1Org":. [1]}}}} 'config. json orderer1org. json >ified_config. json
Затем я добавляю JSON организации в группу Консорциум следующим образом и отправляю обновление канала:
jq -s '. [ 0] * {"channel_group": {"groups": {"Consortiums": {"groups": {"SampleConsortium": {"groups": {"Orderer1MSP":. [1]}}}}}}} 'config1. json orderer1org. json >ified_config1. json
Затем я добавляю сертификаты orderer1 TLS организации в раздел Consenters и отправляю обновление канала:
cert = `base64 ../crypto/ordererOrganizations/example1.com/orderers/orderer.example1.com/tls/server.crt | sed ': a; N; $! ba; s / \ n // g'`
catified_config1. json | jq '.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters + = [{"client_tls_cert": "' $ cert '", "host": "orderer.example1.com", "port": 7050 , "server_tls_cert": "'$ cert'"}]> >ified_config2. json
Затем я обновляю группу приложения конфигурации системного канала с новым заказчиком Оргс JSON:
jq -s '. [0] * {"channel_group": {"groups": {"Application": {"groups": {"Orderer1Org":. [1]}}}} 'config. json orderer1org. json >ified_config. json
Затем я запускаю одного из заказчиков в новой организации (orderer.example1.com
), но происходит сбой контейнера со следующей ошибкой:
2020-04-09 13:09:05.600 UTC [orderer.common.cluster.replication] fetchLastBlockSeq -> WARN 0e8 Received status:FORBIDDEN from orderer.example.com:7050: forbidden pulling the cha
nnel
2020-04-09 13:09:05.600 UTC [orderer.common.cluster.replication] func1 -> WARN 0e9 Received error of type 'forbidden pulling the channel' from {orderer.example.com:7050 [certs]}
The orderer.example.com
журналы выдают эту ошибку:
2020-04-09 13:28:59.338 UTC [cauthdsl] deduplicate -> ERRO a3c Principal deserialization failure (the supplied identity is not valid: x509: certificate signed by unknown authorit
y) for identity 0
2020-04-09 13:28:59.338 UTC [cauthdsl] deduplicate -> ERRO a3d Principal deserialization failure (the supplied identity is not valid: x509: certificate signed by unknown authorit
y) for identity 0
2020-04-09 13:28:59.339 UTC [cauthdsl] deduplicate -> ERRO a3e Principal deserialization failure (the supplied identity is not valid: x509: certificate signed by unknown authorit
y) for identity 0
2020-04-09 13:28:59.340 UTC [cauthdsl] deduplicate -> ERRO a3f Principal deserialization failure (the supplied identity is not valid: x509: certificate signed by unknown authorit
y) for identity 0
2020-04-09 13:28:59.340 UTC [common.deliver] deliverBlocks -> WARN a40 [channel: byfn-sys-channel] Client authorization revoked for deliver request from 172.25.0.15:36196: implic
it policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Readers' sub-policies to be satisfied: permission denied
2020-04-09 13:28:59.341 UTC [comm.grpc.server] 1 -> INFO a41 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.25.0.15:36196
grpc.peer_subject="CN=orderer.example1.com,L=San Francisco,ST=California,C=US" grpc.code=OK grpc.call_duration=4.992078ms