Hyperledger fabric 如何将更多订购者节点添加到正在运行的hyperledger结构网络

Hyperledger fabric 如何将更多订购者节点添加到正在运行的hyperledger结构网络,hyperledger-fabric,Hyperledger Fabric,我已经设置了一个具有1个订购者节点的hyperledger结构网络,但不知道如何将更多订购者节点添加到正在运行的生产hyperledger网络 感谢您的帮助。首先,您的网络订购服务必须设置为卡夫卡订购服务,而不是单独订购。您可以在OrderType下的configtx.yaml文件中执行此操作。然后,您还必须创建卡夫卡代理、动物园管理员并配置所有这些。如果你不熟悉这一点,我发现实验和研究这一回购协议非常有帮助 假设您有一个带有Kafka订购服务的工作网络,则通过频道更新来添加额外的订购者,这与添

我已经设置了一个具有1个订购者节点的hyperledger结构网络,但不知道如何将更多订购者节点添加到正在运行的生产hyperledger网络


感谢您的帮助。

首先,您的网络订购服务必须设置为卡夫卡订购服务,而不是单独订购。您可以在OrderType下的configtx.yaml文件中执行此操作。然后,您还必须创建卡夫卡代理、动物园管理员并配置所有这些。如果你不熟悉这一点,我发现实验和研究这一回购协议非常有帮助

假设您有一个带有Kafka订购服务的工作网络,则通过频道更新来添加额外的订购者,这与添加新组织非常相似。涉及的步骤相当多,但这里列出并解释了所有步骤。我建议您首先了解添加组织的工作原理,但如果您感到满意,那么添加订购者的唯一区别是:

  • 显然,不需要创建新的组织加密材料,但您需要为其他订购者创建加密材料
  • 不要运行命令
    jq-s.[0]*{“channel_group”:{“groups”:{“Application”:{“groups”:{“Org3MSP”:[1]}}}}}}'config.json./channel artifacts/org3.json>modified_config.json
    ,它将新的组织加密材料添加到网络中,打开json文件并查找“OrderAddresses”。在另一个标记“addresses”下应该有一个订购者数组。在此处添加您的订购者,并将文件保存为modified_config.json。然后,您可以继续运行相同的命令
  • 使用
    对等通道signconfigtx-f org3\u update\u in_envelope.pb对信封进行签名时
    使用活动订购方引导CLI并使用订购方MSP,否则订购方将拒绝您的交易。用于添加新组织的组织MSP将不起作用
为了帮助进行故障排除,我发现一开始启动上面github repo创建的2个订购者设置,然后测试删除1个订购者,然后再将其添加回更容易。实验结束后,再加上第三个

作为旁注,您可以在此处找到可以通过频道更新更改的所有其他内容:。单击“单击此处查看配置”以查看json配置的示例(注意:该示例是solo而不是Kafka)

逐步(按要求):

  • 在OrderOrgs:Specs:下的crypto config中,为您的订购者创建一个新的主机名(使用与其他订购者相同的域和名称)
  • 运行命令
    cryptogen extend--config=./crypto config.yaml
    注意:“extend”部分生成您需要的内容,而不是重新生成所有内容
  • 启动一个新的订购者容器,该容器基本上与另一个订购者相同,只是加密卷指向步骤2中生成的新加密(可能根据设置不同的端口)。您可能会注意到,在这一点上,它连接到卡夫卡代理,并且拥有您的频道和区块,因为它使用相同的genesis区块。但需要做的是,网络需要知道这个新订购者的地址
  • docker exec-it cli bash
    插入您的cli容器,并使用活动的订购方信息引导它,因为您需要订购方ermsp签署此更改
  • 引导,例如(您的可能不同):
    CORE\u PEER\u MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/PEER/crypto/orderOrganizations/example.com/users/Admin@example.com/msp

    CORE\u PEER\u ADDRESS=order0.example.com:7050

    CORE\u PEER\u LOCALMSPID=ordermsp

    CORE\u PEER\u TLS\u ROOTCERT\u FILE=/opt/gopath/src/github.com/hyperledger/fabric/PEER/crypto/orderorganizations/example.com/orders/order0.example.com/TLS/ca.crt

    order_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/orderOrganizations/example.com/orders/order0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

    CHANNEL\u NAME=mychannel

  • 在CLI容器中安装jq以将块转换为json并返回
    apt update&&apt install-y jq
  • 获取最新的配置块
    peer channel获取配置块.pb-o order0.example.com:7050-c$channel\u NAME--tls--cafile$order\u CA
  • 转换为json并修剪头文件
    configtxlator proto_decode--input config_block.pb--type common.block | jq.data.data[0].payload.data.config>config.json
  • 打开json文件查找“OrderAddresses”,在该标题下应该有另一个标记“addresses”。为该阵列中的新订购方添加新的IP和端口。将更改另存为modified_config.json
  • 将json从步骤7转换为block
    configtxlator proto_encode--input config.json--type common.config--output config.pb
  • 将步骤8中的json转换为block
    configtxlator proto_encode--input modified_config.json--type common.config--output modified_config.pb
  • 计算步骤9和步骤10中块之间的增量
    configtxlator compute\u update--channel\u id$channel\u NAME--original config.pb--updated modified\u config.pb--output org3\u update.pb
  • 将增量更改回json
    configtxlator proto_decode--input org3_update.pb--type common.ConfigUpdate|jq.>org3_update.json
  • 将json包装在头
    echo'{“payload”:{“header”:{“channel_header”:{“channel_id”:“mychannel”,“type”:2}},“data”:{“config_update”:“$(cat org3_update.json)}}}}}}}jq>org3\u update\u in\u envelope.json
  • 将其转换回block
    configtxlator proto\u encode——在envelope.json中输入org3\u update\u——键入common.envelope——在envelope.pb中输出org3\u update\u
  • 因为你是一个活跃的订购者,你可以提交它,因为提交方给你一个免费的订单