Orderer 节点在执行 "network.sh up" 命令后几秒内退出
Orderer node exits within few seconds after execution of "network.sh up" command
我正在从授权文档中学习 hyperledger fabric 并遵循给定的步骤 here。
我按照文档中的以下步骤安装和 运行 示例应用程序。
- 已按照文档安装所有先决条件。
- 从 https://github.com/hyperledger/fabric-samples.
克隆了 github 存储库
- 运行 bootstrap.sh 脚本按照
readme.md
文件中提到的命令(没有给出任何特定版本作为命令行参数,认为它将安装正确的最新版本)。此命令下载了 bin
文件夹中的所有二进制文件。
- 在 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 图像有关的警告。
在那之后,我尝试按照故障排除步骤进行操作,这些步骤将我带到了问题区域 -
我执行了上述所有 ./network.sh
命令但未能使排序节点保持活动状态。
我决定在命令提示符下手动执行每个 network.sh 命令,因为它按顺序出现在脚本中。有了这个,我发现 checkPrereqs
和 createOrgs
函数没有问题。 CreateOrgs
函数在两种情况下都成功 - 使用 cryptogen 工具和使用 CA。
我注释掉了 createConsortium
函数并执行了 ./network.sh up
命令,使排序节点保持活动状态。
发现 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,它对我有用。
我正在从授权文档中学习 hyperledger fabric 并遵循给定的步骤 here。
我按照文档中的以下步骤安装和 运行 示例应用程序。
- 已按照文档安装所有先决条件。
- 从 https://github.com/hyperledger/fabric-samples. 克隆了 github 存储库
- 运行 bootstrap.sh 脚本按照
readme.md
文件中提到的命令(没有给出任何特定版本作为命令行参数,认为它将安装正确的最新版本)。此命令下载了bin
文件夹中的所有二进制文件。 - 在 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 图像有关的警告。
在那之后,我尝试按照故障排除步骤进行操作,这些步骤将我带到了问题区域 -
我执行了上述所有
./network.sh
命令但未能使排序节点保持活动状态。我决定在命令提示符下手动执行每个 network.sh 命令,因为它按顺序出现在脚本中。有了这个,我发现
checkPrereqs
和createOrgs
函数没有问题。CreateOrgs
函数在两种情况下都成功 - 使用 cryptogen 工具和使用 CA。我注释掉了
createConsortium
函数并执行了./network.sh up
命令,使排序节点保持活动状态。发现
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,它对我有用。