为 RAFT 应用程序通道设置排序器子集
Setting a subset of orderers for RAFT application channel
我正在尝试使用 fabric-samples
中的 first-network
创建一个应用程序频道。
我正在 RAFT 集群中创建部署到 运行 4 个排序节点 运行ning。以下是 configtx.yaml
文件中用于创建 Orderer Genesis Block 的配置文件部分。
SampleMultiNodeEtcdRaft
<<: *ChannelDefaults
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
OrdererType: etcdraft
EtcdRaft:
Consenters:
- Host: orderer.example.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
- Host: orderer2.example.com
Port: 8050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
- Host: orderer3.example.com
Port: 9050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
- Host: orderer4.example.com
Port: 10050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer4.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer4.example.com/tls/server.crt
Addresses:
- orderer.example.com:7050
- orderer2.example.com:8050
- orderer3.example.com:9050
- orderer4.example.com:10050
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Application:
<<: *ApplicationDefaults
Organizations:
- <<: *OrdererOrg
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
现在我想创建一个只有 3 个排序节点(在给定的 4 个中)的应用程序通道:orderer, orderer2, orderer3
。因此,我将应用程序通道的配置文件部分设置如下(在 configtx.yaml
文件中):
TwoOrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
OrdererType: etcdraft
EtcdRaft:
Consenters:
- Host: orderer.example.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
- Host: orderer2.example.com
Port: 8050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
- Host: orderer3.example.com
Port: 9050
ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt
Addresses:
- orderer.example.com:7050
- orderer2.example.com:8050
- orderer3.example.com:9050
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
我正在使用默认 byfn.sh
脚本启动网络。
但是当我尝试使用 orderer4
环境从 cli
容器中获取应用程序通道配置块时,我仍然能够成功地做到这一点并将其解码为 JSON文件,我可以看到所有 4 个订购者都是应用程序通道的 consenters 部分的一部分,并且每个订购者的地址都存在于 orderer addresses 部分.
那么,为什么应用程序渠道不只从前 3 个订购者开始,尽管只提供了同意者?
通道创建命令必须在其中包含 -channelCreateTxBaseProfile
参数,参数的值将是排序者创世配置文件名称(此处为 SampleMultiNodeEtcdRaft
)。
此外,尝试执行 peer channel create
命令的身份必须满足以下 ACL:/Channel/Orderer/ConsensusType
(默认设置为以下策略:/Channel/Application/Admins
)。
我正在尝试使用 fabric-samples
中的 first-network
创建一个应用程序频道。
我正在 RAFT 集群中创建部署到 运行 4 个排序节点 运行ning。以下是
configtx.yaml
文件中用于创建 Orderer Genesis Block 的配置文件部分。SampleMultiNodeEtcdRaft <<: *ChannelDefaults Capabilities: <<: *ChannelCapabilities Orderer: <<: *OrdererDefaults OrdererType: etcdraft EtcdRaft: Consenters: - Host: orderer.example.com Port: 7050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt - Host: orderer2.example.com Port: 8050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt - Host: orderer3.example.com Port: 9050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt - Host: orderer4.example.com Port: 10050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer4.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer4.example.com/tls/server.crt Addresses: - orderer.example.com:7050 - orderer2.example.com:8050 - orderer3.example.com:9050 - orderer4.example.com:10050 Organizations: - *OrdererOrg Capabilities: <<: *OrdererCapabilities Application: <<: *ApplicationDefaults Organizations: - <<: *OrdererOrg Consortiums: SampleConsortium: Organizations: - *Org1 - *Org2
现在我想创建一个只有 3 个排序节点(在给定的 4 个中)的应用程序通道:
orderer, orderer2, orderer3
。因此,我将应用程序通道的配置文件部分设置如下(在configtx.yaml
文件中):TwoOrgsChannel: Consortium: SampleConsortium <<: *ChannelDefaults Capabilities: <<: *ChannelCapabilities Orderer: <<: *OrdererDefaults OrdererType: etcdraft EtcdRaft: Consenters: - Host: orderer.example.com Port: 7050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt - Host: orderer2.example.com Port: 8050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt - Host: orderer3.example.com Port: 9050 ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt Addresses: - orderer.example.com:7050 - orderer2.example.com:8050 - orderer3.example.com:9050 Organizations: - *OrdererOrg Capabilities: <<: *OrdererCapabilities Application: <<: *ApplicationDefaults Organizations: - *Org1 - *Org2 Capabilities: <<: *ApplicationCapabilities
我正在使用默认
byfn.sh
脚本启动网络。
但是当我尝试使用 orderer4
环境从 cli
容器中获取应用程序通道配置块时,我仍然能够成功地做到这一点并将其解码为 JSON文件,我可以看到所有 4 个订购者都是应用程序通道的 consenters 部分的一部分,并且每个订购者的地址都存在于 orderer addresses 部分.
那么,为什么应用程序渠道不只从前 3 个订购者开始,尽管只提供了同意者?
通道创建命令必须在其中包含 -channelCreateTxBaseProfile
参数,参数的值将是排序者创世配置文件名称(此处为 SampleMultiNodeEtcdRaft
)。
此外,尝试执行 peer channel create
命令的身份必须满足以下 ACL:/Channel/Orderer/ConsensusType
(默认设置为以下策略:/Channel/Application/Admins
)。