首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将更多的订单节点添加到正在运行的超级分类账结构网络中

如何将更多的订单节点添加到正在运行的超级分类账结构网络中
EN

Stack Overflow用户
提问于 2018-05-03 11:24:49
回答 2查看 4K关注 0票数 13

我已经设置了一个带有一个orderer节点的超级分类器结构网络,但不知道如何将更多的orderer节点添加到正在运行的生产超级分类法网络中。

任何帮助都将不胜感激,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-07 06:38:00

首先,你的网络订购服务必须是卡夫卡式的,而不是单独的。您可以在configtx.yaml文件中在OrdererType下执行此操作。然后,你还必须创建卡夫卡经纪人,动物园管理员,并配置所有这些。如果你不熟悉这个,我发现实验和研究这个回购https://github.com/keenkit/fabric-sample-with-kafka很有帮助。

假设您有一个具有Kafka订购服务的工作网络,则添加额外的订购器是通过一个通道更新完成的,这非常类似于添加一个新的组织。其中涉及了很多步骤,但这些步骤都在这里列出并解释了tutorial.html。我建议您先了解添加组织的工作原理,但如果您感到舒服,那么添加订购者的唯一不同之处是:

  • 显然,不需要创建新的组织密码材料,但是您需要为另一个订购者提供密码材料。
  • 不要运行命令jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./channel-artifacts/org3.json > modified_config.json将新的组织密码材料添加到网络中,而是打开json文件并查找"OrdererAddresses“。在另一个标签"addresses“下,应该有一组订购者。在这里添加您的订单程序,然后将文件保存为modified_config.json。然后,您可以继续运行相同的命令。
  • 当您使用peer channel signconfigtx -f org3_update_in_envelope.pb对信封进行签名时,引导您的CLI使用活动订货机并使用OrdererMSP,否则订单程序将拒绝您的事务。用于添加新org的组织MSP不起作用。

为了帮助排除故障,我发现最初可以更容易地拆分上面github回购创建的2 Orderer设置,然后测试删除1 orderer,然后再添加它。在那个实验之后,再加上第三个。

顺便提一句,您可以在这里找到所有其他可以通过频道更新而更改的内容:update.html。单击“单击此处查看配置”以查看json配置的示例(注意:该示例是一个solo而不是Kafka)。

一步一步地(按要求):

  1. 在OrdererOrgs: Specs下的crypto中:为订购者创建一个新的主机名(使用与其他域名相同的域名和名称)。
  2. 运行命令cryptogen extend --config=./crypto-config.yaml备注:“扩展”部分,以便生成所需的内容,而不是重新生成所有内容。
  3. 旋转一个新的命令器容器,它与另一个订购者本质上是相同的,除了密码卷指向步骤2中生成的新密码(以及可能根据您的设置不同的端口)。您可能会注意到,在这一点上,它是连接到卡夫卡经纪人,并有您的渠道和区块,因为它使用的是相同的成因块。但是,需要做的是让网络知道这个新订单者的地址。
  4. docker exec -it cli bash进入您的CLI容器,并使用活动的订购程序信息引导它,因为您需要OrdererMSP来签署此更改。

引导例如(你的可能不同):CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/users/Admin@example.com/msp

CORE_PEER_ADDRESS=orderer0.example.com:7050

CORE_PEER_LOCALMSPID=OrdererMSP

CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt

ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

CHANNEL_NAME=mychannel

  1. 在CLI容器中安装jq,将块转换为json并返回apt update && apt install -y jq
  2. 获取最新的配置块peer channel fetch config config_block.pb -o orderer0.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA
  3. 转换为json和trim头configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json
  4. 打开json文件,查找"OrdererAddresses“,在该标题下应该有另一个标签"addresses”。为该数组中的新订单程序添加新的IP和端口。将更改保存为modified_config.json
  5. 隐蔽的json从步骤7到阻止configtxlator proto_encode --input config.json --type common.Config --output config.pb
  6. 将json从步骤8转换为阻止configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb
  7. 计算步骤9和步骤10 configtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output org3_update.pb中块之间的增量
  8. 将增量更改为json configtxlator proto_decode --input org3_update.pb --type common.ConfigUpdate | jq . > org3_update.json
  9. 将json封装在头echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat org3_update.json)'}}}' | jq . > org3_update_in_envelope.json
  10. 将其转换回阻止configtxlator proto_encode --input org3_update_in_envelope.json --type common.Envelope --output org3_update_in_envelope.pb
  11. 因为您是一个活动的订货员,所以您可以只提交它,因为提交方给您一个免费签名,而它是您唯一需要peer channel update -f org3_update_in_envelope.pb -c $CHANNEL_NAME -o orderer0.example.com:7050 --tls --cafile $ORDERER_CA的签名。

一旦您的同行获得了这个新块,他们现在就知道了新订购者的地址,并可以与其联系。

票数 21
EN

Stack Overflow用户

发布于 2018-11-07 11:30:56

添加到Antonio的答案之后,您将需要将系统通道的成因块卷到新的订购器中。

您可以通过从现有的orderer获取它并选择要成为testchainid的通道名(默认名称)来获得它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50153905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档