Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperledger fabric 如何将一个Hyperledger结构网络迁移到另一个网络_Hyperledger Fabric_Raft - Fatal编程技术网

Hyperledger fabric 如何将一个Hyperledger结构网络迁移到另一个网络

Hyperledger fabric 如何将一个Hyperledger结构网络迁移到另一个网络,hyperledger-fabric,raft,Hyperledger Fabric,Raft,我有2个HLF网络。第一个是Kafka订购服务和一些同行、链码和他们的账本。第二个网络现在是空的(假设我们将从网络A派生这个网络)。在网络B中,我需要基于RAFT的订购服务、不同数量的对等点(如果硬性要求,也可以相同)和相同的事务历史记录。简而言之,我需要将网络A数据迁移到网络B(具有RAFT订购者) 网络A中需要进行哪些更改?我应该先将这个Kafka OSN转换为RAFT OSN,然后进行网络迁移吗 在这些更改之后,如何将此网络A(可能已修改)迁移到网络B 首先,完全按原样复制网络(基于卡夫卡

我有2个HLF网络。第一个是Kafka订购服务和一些同行、链码和他们的账本。第二个网络现在是空的(假设我们将从网络A派生这个网络)。在网络B中,我需要基于RAFT的订购服务、不同数量的对等点(如果硬性要求,也可以相同)和相同的事务历史记录。简而言之,我需要将网络A数据迁移到网络B(具有RAFT订购者)

  • 网络A中需要进行哪些更改?我应该先将这个Kafka OSN转换为RAFT OSN,然后进行网络迁移吗
  • 在这些更改之后,如何将此网络A(可能已修改)迁移到网络B

  • 首先,完全按原样复制网络(基于卡夫卡)。传输配置文件、所需的持久卷(
    /var/hyperledger/production
    )并调整docker配置

    您需要更换TLS证书,因为IP/域已更改

    您还需要使用
    configtxlator
    重新配置您的卡夫卡代理、订购方和锚定对等方的IP/域。在执行此更改时,需要调整节点(或DNS)中的iptables,以便节点可以看到彼此(否则它们将尝试连接到旧网络中的节点)

    之后,从卡夫卡迁移到Raft:

    如果你想保留分类账,这是合乎逻辑的方法。这是一个巨大的混乱,没有人说它不是


    稍后,您可以添加更多的对等点。它不需要重大更改,但它们不是锚节点。

    首先,复制网络的原样(基于卡夫卡)。传输配置文件、所需的持久卷(
    /var/hyperledger/production
    )并调整docker配置

    您需要更换TLS证书,因为IP/域已更改

    您还需要使用
    configtxlator
    重新配置您的卡夫卡代理、订购方和锚定对等方的IP/域。在执行此更改时,需要调整节点(或DNS)中的iptables,以便节点可以看到彼此(否则它们将尝试连接到旧网络中的节点)

    之后,从卡夫卡迁移到Raft:

    如果你想保留分类账,这是合乎逻辑的方法。这是一个巨大的混乱,没有人说它不是


    稍后,您可以添加更多的对等点。它不需要重大更改,但它们不是锚节点。

    假设网络B在不同的主机上运行。如果主持人B支持卡夫卡,这件事就行了。但假设我有一个场景,主机B没有卡夫卡设施。在这种情况下,我是否应该首先在主机A将卡夫卡转换为raft“就地”,然后执行迁移?如果是的话,你建议的答案应该有什么变化?就这样。但我没有提出,因为我从你的问题中不知道第一个网络是否必须保持现状。然后,首先从链接运行迁移,然后运行其他步骤。我发现奇怪的是,你用单数形式谈论“主机”。开发网络是否只在一台主机上运行?如果是这样的话(如果您使用的是docker网络内部的地址),那么您可能会在其他更改中遇到较少的问题。您首先指的是将Fabric Raft网络扩展到主机B,然后从主机A中删除节点。我发现其困难类似。每个订购者的添加或删除都需要在系统和应用程序通道中进行更改。每次添加或删除锚都需要更改应用程序通道。但如果你做得合适,它是有效的。根据需要继续。我指的是将事务构建为:更新系统通道中的订购者地址,更新系统通道中的raft同意者地址,更新系统通道中的raft同意者证书,更新应用程序通道中的订购者地址,更新应用程序通道中的raft同意者地址,在应用程序通道中更新raft同意人证书,并在应用程序通道中更新锚节点。并执行事务。假设网络B在另一台主机上运行。如果主持人B支持卡夫卡,这件事就行了。但假设我有一个场景,主机B没有卡夫卡设施。在这种情况下,我是否应该首先在主机A将卡夫卡转换为raft“就地”,然后执行迁移?如果是的话,你建议的答案应该有什么变化?就这样。但我没有提出,因为我从你的问题中不知道第一个网络是否必须保持现状。然后,首先从链接运行迁移,然后运行其他步骤。我发现奇怪的是,你用单数形式谈论“主机”。开发网络是否只在一台主机上运行?如果是这样的话(如果您使用的是docker网络内部的地址),那么您可能会在其他更改中遇到较少的问题。您首先指的是将Fabric Raft网络扩展到主机B,然后从主机A中删除节点。我发现其困难类似。每个订购者的添加或删除都需要在系统和应用程序通道中进行更改。每次添加或删除锚都需要更改应用程序通道。但如果你做得合适,它是有效的。根据需要继续。我指的是将事务构建为:更新系统通道中的订购者地址,更新系统通道中的raft同意者地址,更新系统通道中的raft同意者证书,更新应用程序通道中的订购者地址,更新应用程序通道中的raft同意者地址,在应用程序通道中更新raft同意人证书,并在应用程序通道中更新锚节点。并执行事务。