fabric 多机网络搭建未能实例化链码

问题描述 投票:0回答:1

我使用vmware来设置我的多主机网络,**一个orderer和peer0.org1在虚拟机上启动,其他三个对等点中的每一个都在虚拟机上启动,**我像这样vim /etc/host:

192.168.189.134 orderer.example.com
192.168.189.134 peer0.org1.example.com
192.168.189.128 peer0.org2.example.com
192.168.189.132 peer0.org4.example.com
192.168.189.133 peer0.org3.example.com

一切看起来都很完美,直到实例化链码,官方示例 sacc。我像这样实例化链码并收到错误:

`bash-5.0# peer chaincode invoke -o orderer.example.com:7050 --isInit --ordererTLSHostnameOverride orderer.example.com --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 -C mychannel -n sacc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --peerAddresses peer0.org3.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt --peerAddresses peer0.org4.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org4.example.com/peers/peer0.org4.example.com/tls/ca.crt -c '{"Args":["a","bb"]}'`

`**Error: endorsement failure during invoke. response: status:500 message:"error in simulation: failed to execute transaction d1468605d358e7a99a12dcb4c3412ed6289bda7ea495212d6d4aa1375844c7c8: could not launch chaincode sacc_1:04d2157f61b08cb0d563327085d4af430647a0a8ceece753ee0054befc74c9a3: chaincode registration failed: container exited with 0" **`

我不知道为什么,我还检查了链代码容器日志:

`**[root@localhost chaincodes]# docker logs 53e556904589 
Error starting SimpleAsset chaincode: connection error: desc = "transport: error while dialing: dial tcp: lookup peer0.org1.example.com on 192.168.189.2:53: no such host"[root@localhost chaincodes]# **`

我曾多次尝试重新启动来构建网络,每一步都很好,但实例化了链代码

我使用 docker-compose 来构建对等点(其他与此类似的对等点):

`version: '2'

services:
  couchdb0.org1.example.com:
    container_name: couchdb0.org1.example.com
    image: couchdb:3.1
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=adminpw
    ports:
      - 5984:5984

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer:2.2.0
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_CHAINCODE_EXECUTETIMEOUT=300s
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0.org1.example.com:5984
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=admin
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=adminpw
    depends_on:
      - couchdb0.org1.example.com

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    volumes:
      - /var/run/:/host/var/run/
      - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
      - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 7051:7051
      - 7052:7052
      - 7053:7053
    extra_hosts:
      - "orderer.example.com:192.168.189.134"
      - "peer0.org1.example.com:192.168.189.134"
      - "peer0.org2.example.com:192.168.189.128"
      - "peer0.org3.example.com:192.168.189.133"
      - "peer0.org4.example.com:192.168.189.132"   
  cli:
    container_name: cli
    image: hyperledger/fabric-tools:2.2.0
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - 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_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_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_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
      - /var/run/:/host/var/run/
      - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric-cluster/chaincode/go
      - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
      - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    extra_hosts:
      - "orderer.example.com:192.168.189.134"
      - "peer0.org1.example.com:192.168.189.134"
      - "peer0.org2.example.com:192.168.189.128"
      - "peer0.org3.example.com:192.168.189.133"
      - "peer0.org4.example.com:192.168.189.132" ` 

我认为日志意味着当链码容器启动时,它会 ping 通peer0.org1.example.com(192.168.189.2:53 是我的网关 ip),但无法立即连接并退出(意味着链码容器已死?)。我尝试手动启动链码容器,但是当我通过 docker ps -a 检查它时,链码容器再次退出。

有人可以帮助我吗?

docker networking hyperledger-fabric fabric chaincode
1个回答
0
投票

您遇到的错误似乎表明链码容器和您的对等节点之间的通信存在问题,特别是 DNS 解析问题。

有时,DNS 解析问题可能与 Docker 本身有关。尝试重新启动虚拟机上的 Docker 服务,看看是否可以解决问题。

还要检查 /etc/hosts 文件以及对等方和排序者的条目是否正确并且 IP 地址是否可达。

希望我的回答能给你一些调试的想法

© www.soinside.com 2019 - 2024. All rights reserved.