Hyperledger:启动网络时出错(byfn.sh 启动)

Hyperledger: error bringing up network (byfn.sh up)

我之前在 localhost:3000 上有一个 运行ning 简单网络,为了实现这一点,我使用了不同的先决条件和安装步骤链接,而不是,http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html,因此我从未使用过 fabric-samples 文件夹。 在启动网络时,我收到了我的 [第一个错误][1]

因此,我打开 /home/himani/fabric-samples/first-network/docker-compose-cli.yaml 并进行编辑,将 peer0.org1.example.comorderer.example.com 的容器名称更改为 peer000.org001.example.comorderer000.example.com分别。

进行编辑后,运行执行命令:./byfn.sh up,它可以毫无错误地执行。

在更正了我在安装 npm 时犯的一些错误后,我使用命令关闭了这个网络:./byfn.sh down,并再次下载了 fabric-samples 文件夹。现在 运行ning ./byfn.sh up,我没有收到任何错误。但是我在尝试 运行 这个命令时遇到了一个错误:

 ./byfn.sh up -l node

错误:(奇怪的是,orderer000.example.comorderer000.example.com 也是 运行,尽管 down-ing 该网络并删除了文件夹)

 himani@himani-HP-Notebook:~/fabric-samples/first-network$ ./byfn.sh up -l node
    Starting with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds
    Continue? [Y/n] y
    proceeding ...
    2018-06-05 12:01:27.340 UTC [main] main -> INFO 001 Exiting.....
    LOCAL_VERSION=1.1.0
    DOCKER_IMAGE_VERSION=1.1.0
    peer0.org2.example.com is up-to-date
    peer1.org2.example.com is up-to-date
    orderer000.example.com is up-to-date
    peer1.org1.example.com is up-to-date
    peer000.org001.example.com is up-to-date
    cli is up-to-date

     ____    _____      _      ____    _____ 
    / ___|  |_   _|    / \    |  _ \  |_   _|
    \___ \    | |     / _ \   | |_) |   | |  
     ___) |   | |    / ___ \  |  _ <    | |  
    |____/    |_|   /_/   \_\ |_| \_\   |_|  

    Build your first network (BYFN) end-to-end test

    Channel name : mychannel
    Creating channel...
    CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
    CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
    CORE_PEER_LOCALMSPID=Org1MSP
    CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
    CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
    CORE_PEER_TLS_ENABLED=true
    CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
    CORE_PEER_ID=cli
    CORE_LOGGING_LEVEL=INFO
    CORE_PEER_ADDRESS=peer0.org1.example.com:7051
    + peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
    + res=1
    + set +x
    2018-06-05 12:01:30.704 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
    Error: got unexpected status: BAD_REQUEST -- error authorizing update: error validating ReadSet: readset expected key [Group]  /Channel/Application at version 0, but got version 1
    Usage:
      peer channel create [flags]

    Flags:
      -c, --channelID string   In case of a newChain command, the channel ID to create.
      -f, --file string        Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
      -t, --timeout int        Channel creation timeout (default 5)

    Global Flags:
          --cafile string                       Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
          --certfile string                     Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint
          --clientauth                          Use mutual TLS when communicating with the orderer endpoint
          --keyfile string                      Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint
          --logging-level string                Default logging level and overrides, see core.yaml for full syntax
      -o, --orderer string                      Ordering service endpoint
          --ordererTLSHostnameOverride string   The hostname override to use when validating the TLS connection to the orderer.
          --tls                                 Use TLS when communicating with the orderer endpoint
      -v, --version                             Display current version of fabric peer server

    !!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
    ========= ERROR !!! FAILED to execute End-2-End Scenario ===========

    ERROR !!!! Test failed

  [1]: https://i.stack.imgur.com/afsMk.png



**UPDATE:**
Now, I get an error running `./byfn.sh up` also, but now `orderer000.example.com` and `peer000.org001.example.com` are not mentioned, but their correct version, `orderer.example.com` and `peer.org1.example.com` are.

I also referred to the solution of a similar question  by modifying first-network/base/peer-base.yaml to include this first line under `environment` section : `- GODEBUG=netdns=go` , but to no avail. I received the following error:

    himani@himani-HP-Notebook:~/fabric-samples/first-network$ ./byfn.sh up
    Starting with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds
    Continue? [Y/n] y
    proceeding ...
    2018-06-06 05:07:24.242 UTC [main] main -> INFO 001 Exiting.....
    LOCAL_VERSION=1.1.0
    DOCKER_IMAGE_VERSION=1.1.0
    peer0.org2.example.com is up-to-date
    orderer.example.com is up-to-date
    peer0.org1.example.com is up-to-date
    peer1.org1.example.com is up-to-date
    peer1.org2.example.com is up-to-date
    cli is up-to-date

     ____    _____      _      ____    _____ 
    / ___|  |_   _|    / \    |  _ \  |_   _|
    \___ \    | |     / _ \   | |_) |   | |  
     ___) |   | |    / ___ \  |  _ <    | |  
    |____/    |_|   /_/   \_\ |_| \_\   |_|  

    Build your first network (BYFN) end-to-end test

    Channel name : mychannel
    Creating channel...
    CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
    CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
    CORE_PEER_PROFILE_ENABLED=true
    CORE_PEER_GOSSIP_ORGLEADER=false
    CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
    CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
    CORE_PEER_TLS_ENABLED=true
    CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=net_byfn
    CORE_LOGGING_LEVEL=INFO
    CORE_PEER_GOSSIP_USELEADERELECTION=true
    + peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
    + res=1
    + set +x
    Error: failed to create deliver client: failed to load config for OrdererClient: unable to load orderer.tls.rootcert.file: open /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem: no such file or directory
    Usage:
      peer channel create [flags]

    Flags:
      -c, --channelID string   In case of a newChain command, the channel ID to create.
      -f, --file string        Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
      -t, --timeout int        Channel creation timeout (default 5)

    Global Flags:
          --cafile string                       Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
          --certfile string                     Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint
          --clientauth                          Use mutual TLS when communicating with the orderer endpoint
          --keyfile string                      Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint
          --logging-level string                Default logging level and overrides, see core.yaml for full syntax
      -o, --orderer string                      Ordering service endpoint
          --ordererTLSHostnameOverride string   The hostname override to use when validating the TLS connection to the orderer.
          --tls                                 Use TLS when communicating with the orderer endpoint
      -v, --version                             Display current version of fabric peer server

    !!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
    ========= ERROR !!! FAILED to execute End-2-End Scenario ===========

    ERROR !!!! Test failed

更新 2:down-ing 和 运行 再次连接网络后,./byfn.sh up 完美运行。但是 ./byfn.sh up -l node 再次抛出错误。

himani@himani-HP-Notebook:~/fabric-samples/first-network$ ./byfn.sh up -l node
Starting with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
2018-06-06 09:06:22.325 UTC [main] main -> INFO 001 Exiting.....
LOCAL_VERSION=1.1.0
DOCKER_IMAGE_VERSION=1.1.0
orderer.example.com is up-to-date
peer0.org2.example.com is up-to-date
peer1.org2.example.com is up-to-date
peer0.org1.example.com is up-to-date
peer1.org1.example.com is up-to-date
cli is up-to-date

 ____    _____      _      ____    _____ 
/ ___|  |_   _|    / \    |  _ \  |_   _|
\___ \    | |     / _ \   | |_) |   | |  
 ___) |   | |    / ___ \  |  _ <    | |  
|____/    |_|   /_/   \_\ |_| \_\   |_|  

Build your first network (BYFN) end-to-end test

Channel name : mychannel
Creating channel...
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
CORE_PEER_LOCALMSPID=Org1MSP
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
CORE_PEER_TLS_ENABLED=true
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ID=cli
CORE_LOGGING_LEVEL=INFO
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
+ peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=1
+ set +x
2018-06-06 09:06:25.547 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Error: got unexpected status: BAD_REQUEST -- error authorizing update: error validating ReadSet: readset expected key [Group]  /Channel/Application/Org2MSP at version 0, but got version 1
Usage:
  peer channel create [flags]

Flags:
  -c, --channelID string   In case of a newChain command, the channel ID to create.
  -f, --file string        Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
  -t, --timeout int        Channel creation timeout (default 5)

Global Flags:
      --cafile string                       Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
      --certfile string                     Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint
      --clientauth                          Use mutual TLS when communicating with the orderer endpoint
      --keyfile string                      Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint
      --logging-level string                Default logging level and overrides, see core.yaml for full syntax
  -o, --orderer string                      Ordering service endpoint
      --ordererTLSHostnameOverride string   The hostname override to use when validating the TLS connection to the orderer.
      --tls                                 Use TLS when communicating with the orderer endpoint
  -v, --version                             Display current version of fabric peer server

!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========

ERROR !!!! Test failed

我建议停止所有容器并移除所有容器,然后 return 将 yaml 文件恢复为原来的名称。然后尝试重新启动它。

停止和删除容器的命令是:

docker stop $(docker ps -q)

docker rm $(docker ps -aq)

docker site 有很好的 docker 命令文档。

仔细阅读后,我意识到在 ./byfn.sh up,.byfn.sh -l node 两者之间有一个选择。作为黄金法则,无论何时遇到问题,关闭网络然后重新启动一直有效

该示例适用于存储库的 FirstNetwork 示例:

这对我有用:清理环境:

docker ps -aq

^ 这将为您提供容器 ID 列表。将它们一一删除:

docker rm -rf containerIds

执行向下命令:

./byfn.sh -m down

然后执行向上命令:

./byfn.sh -m up