【问题标题】:Orderer node exits within few seconds after execution of "network.sh up" command执行“network.sh up”命令后,Orderer 节点会在几秒钟内退出
【发布时间】:2020-05-01 05:44:17
【问题描述】:

我正在从授权文档中学习超级账本结构,并按照here 给出的步骤进行操作。

我按照文档按照以下步骤安装和运行示例应用程序。

  1. 按照文档安装了所有先决条件。
  2. https://github.com/hyperledger/fabric-samples 克隆 github 存储库。
  3. 按照readme.md 文件中提到的命令运行 bootstrap.sh 脚本(没有给出任何特定版本作为命令行参数,认为它将安装正确的最新版本)。此命令下载了 bin 文件夹中的所有二进制文件。
  4. 在 test-network 文件夹下执行了sudo ./network.sh up 命令。显示启动了 2 个 peer 节点和 1 个 orderer 节点。

但是,当我尝试使用./network.sh createChannel 创建频道时,它给了我错误

错误:无法创建交付客户端:订购者客户端无法连接到本地主机:7050:无法创建新连接:连接错误:desc =“传输:拨号时出错:拨号tcp 127.0.0.1:7050:连接:连接拒绝” !!!!!!!!!!!!!!!频道创建失败!!!!!!!!!!!!!!!! ========= 错误!!!无法执行 End-2-End 场景 ============ 错误 !!!创建频道失败

所以,当我使用docker ps -a 检查节点的状态时,它给了我以下输出。

容器 ID 图像命令创建状态端口名称

978968f8e11e hyperledger/fabric-peer:latest "peer node start" 大约一分钟前 Up 大约一分钟 0.0.0.0:9051->9051/tcp peer0.org2.example.com

89914237b249 hyperledger/fabric-orderer:latest "orderer" 大约一分钟前 退出 (2) 大约一分钟前 orderer.example.com

7e79abb2aefa hyperledger/fabric-peer:latest "peer node start" 大约一分钟前 Up 大约一分钟 0.0.0.0:7051->7051/tcp peer0.org1.example.com

0fa38487cdf4 hello-world "/hello" 4 小时前退出 (0) 4 小时前 brave_galileo

每当我尝试执行network.sh 命令时,我也会收到以下警告 -

LOCAL_VERSION=1.4.4 基础图片0.4.18

DOCKER_IMAGE_VERSION=1.4.4

=================== 警告===================

本地结构二进制文件和 docker 映像不同步。这可能会导致问题。

================================================

我不知道在哪里可以检查哪些二进制文件适用于哪些 docker 映像。

我尝试了几种方法来保持 orderer 节点的活动,方法是从头开始做所有事情,授予 fabric-samples 下所有文件夹的权限,network.sh 的向下序列,重新启动 network.sh 以及我能想到的其他一些方法的,但我仍然无法让排序节点保持活动状态。

我还注意到文档中提到了该声明 将指定版本的 Hyperledger Fabric 平台特定二进制文件和配置文件安装到 fabric-samples 的 /bin 和 /config 目录中

但是,我在给定的 github 存储库下没有找到任何 bin 和 config 文件夹。

【问题讨论】:

    标签: docker hyperledger-fabric hyperledger


    【解决方案1】:

    经过多次反复试验,我终于可以成功了。

    首先,我使用以下命令重新安装了 fabric-sample 项目,并确保我有正确的二进制文件和 docker 映像(而不是获取最新的所有内容) -

    # Fetch bootstrap.sh from fabric repository using
    curl -sS https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh -o ./scripts/bootstrap.sh
    # Change file mode to executable
    chmod +x ./scripts/bootstrap.sh
    # Download binaries and docker images - **check out the version below**
    ./scripts/bootstrap.sh 1.4.4 -s
    

    有了这个,我可以摆脱与不同步的本地结构二进制文件和 docker 图像相关的警告。

    之后,我尝试了以下故障排除步骤,导致我遇到了问题区域 -

    1. 我执行了上述所有./network.sh 命令,但未能使排序节点保持活动状态。

    2. 我决定在命令提示符下手动执行每个 network.sh 命令,因为它按顺序出现在脚本中。有了这个,我看到checkPrereqscreateOrgs 函数没有问题。 CreateOrgs 函数通过两种方式都成功 - 使用加密工具和使用 CA。

    3. 我注释掉了createConsortium 函数并执行了./network.sh up 命令,使排序节点保持活动状态。

    4. 发现createConsortium试图在system-genesis-block文件夹下生成创世块,并且由于某种原因,而不是生成名称为genesis-block的文件,有一个名为 genesis-block 的只读文件夹,导致 configtxgen 命令失败。

    因此,我从该块中删除了只读权限并删除了 genesis-block 文件夹并在取消注释 createConsortium 函数后重新运行 ./network.sh down./network.sh up 命令,这导致生成一个创世块 file 而不是 folder,因此,最后,我可以设法保持 orderer 节点处于活动状态。

    在此之后,我可以使用以下命令成功创建频道。

    ./network.sh createChannel
    

    【讨论】:

      【解决方案2】:

      我认为你为创世区块指定了错误的路径。您可以发布您的订购者日志吗?

      【讨论】:

      • 问题已经解决了。创世区块文件存在权限问题。检查上面的答案。
      • 您不应该将此作为答案。当您只是询问一些额外的信息时,它应该是一个评论。谢谢!
      【解决方案3】:

      感谢最佳答案,我设法通过更改创世块文件的权限使./network.sh createChannel 脚本工作:

      chmod 664 system-genesis-block/genesis.block
      

      【讨论】:

        【解决方案4】:

        我设法通过更改创世块文件的权限使 ./network.sh createChannel 脚本正常工作。 chmod 777 对我不起作用。

        chmod 777 genesis.block
        

        【讨论】:

          【解决方案5】:

          我尝试修改文件docker-compose.yaml中dokcer图像的fabric-peer和fabric-order版本,从最新到2.3,它对我有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-09-06
            • 1970-01-01
            • 1970-01-01
            • 2014-04-25
            • 1970-01-01
            • 2012-03-02
            • 2013-03-22
            • 1970-01-01
            相关资源
            最近更新 更多