Orderer 节点在执行 "network.sh up" 命令后几秒内退出

Orderer node exits within few seconds after execution of "network.sh up" command

我正在从授权文档中学习 hyperledger fabric 并遵循给定的步骤 here

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

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

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

Error: failed to create deliver client: orderer client failed to connect to localhost:7050: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 127.0.0.1:7050: connect: connection refused" !!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!! ========= ERROR !!! FAILED to execute End-2-End Scenario =========== Error !!! Create channel failed

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

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

978968f8e11e hyperledger/fabric-peer:latest "peer node start" About a minute ago Up About a minute 0.0.0.0:9051->9051/tcp peer0.org2.example.com

89914237b249 hyperledger/fabric-orderer:latest "orderer" About a minute ago Exited (2) About a minute ago orderer.example.com

7e79abb2aefa hyperledger/fabric-peer:latest "peer node start" About a minute ago Up About a minute 0.0.0.0:7051->7051/tcp peer0.org1.example.com

0fa38487cdf4 hello-world "/hello" 4 hours ago Exited (0) 4 hours ago brave_galileo

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

LOCAL_VERSION=1.4.4 Base Image0.4.18

DOCKER_IMAGE_VERSION=1.4.4

=================== WARNING ===================

Local fabric binaries and docker images are out of sync. This may cause problems.

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

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

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

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

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

经过多次尝试和错误尝试,我终于让它工作了。

首先,我使用以下命令重新安装了 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 函数在两种情况下都成功 - 使用 cryptogen 工具和使用 CA。

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

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

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

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

./network.sh createChannel

我认为您为创世块指定的路径不正确。你可以 post 你的订购者日志吗?

感谢最佳答案,我通过 更改创世块文件的权限 :

设法使 ./network.sh createChannel 脚本正常工作
chmod 664 system-genesis-block/genesis.block

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

chmod 777 genesis.block

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