我使用vmware来设置我的多主机网络,**一个排序器和peer0.org1在虚拟机上启动,其他三个对等体中的每一个都在VM上启动,**i 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
字符串
一切似乎都很完美,直到示例化chaincode,官方示例sacc。我这样示例化chaincode,得到错误:
`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" **`
型
我不知道为什么,我也检查了chaincode容器日志:
`**[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来构建peer(其他peer类似于此):
`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" `
型
我以为日志是指当chaincode容器启动时,它ping了peer0.org1.example.com(192.168.189.2:53是我的网关IP),但无法立即连接和退出(意味着chaincode容器死亡?)。我试图手动启动chaincode容器,但当我通过docker ps -a检查时,chaincode容器再次退出。
有人能帮我吗?
1条答案
按热度按时间mznpcxlj1#
看起来你面临的错误表明链码容器和你的对等节点之间的通信有问题,特别是DNS解析问题。
有时,DNS解析的问题可能与Docker本身有关。请尝试在VM上重新启动Docker服务,看看是否可以解决问题。
另外,检查/etc/hosts文件,对等体和排序者的条目是否正确,IP地址是否可访问。
希望我的回答给予你一些调试的思路