使用fabric-client-sdk,无法对多个peer进行grpc调用

通过使用fabric-sdk-java客户端,我尝试在Windows 7中使用Docker镜像在本地Hyperledger fabric V1.0networking设置中调用安装和实例化的chaincode 。 我能够调用和查询链接代码到peer0.org1.example.com ,但是当我尝试相同的对等peer0.org2.example.com得到以下错误

2017-09-13 13:22:45,382 main ERROR Channel:2241 - Sending proposal to peer0.org2.example.com failed because of: gRPC failure=Status{code=UNAVAILABLE, description=Channel closed while performing protocol negotiation, cause=null} java.lang.Exception: io.grpc.StatusRuntimeException: UNAVAILABLE: Channel closed while performing protocol negotiation at org.hyperledger.fabric.sdk.Channel.sendProposalToPeers(Channel.java:2241) at org.hyperledger.fabric.sdk.Channel.sendProposal(Channel.java:2155) at org.hyperledger.fabric.sdk.Channel.sendTransactionProposal(Channel.java:2089) at com.ibs.blockchain.client.utility.BlockChainUtility.sendProposal(BlockChainUtility.java:232) at com.ibs.blockchain.client.utility.BlockChainUtility.createFlight(BlockChainUtility.java:80) at com.ibs.blockchain.client.test.BCAPITest.main(BCAPITest.java:9) Caused by: io.grpc.StatusRuntimeException: UNAVAILABLE: Channel closed while performing protocol negotiation at io.grpc.Status.asRuntimeException(Status.java:526) at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:427) at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:419) at io.grpc.internal.ClientCallImpl.access$100(ClientCallImpl.java:60) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:493) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$500(ClientCallImpl.java:422) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:525) at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:102) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 

查看docker-compose.yaml的端口映射就像

 peer0.org1.example.com ports: - 7051:7051 - 7053:7053 peer0.org2.example.com ports: - 8051:7051 - 8053:7053 

它只与端口与TCP端口( 7051 )相同的对等方工作,但是与具有不同端口8051的对等方得到上述错误。 为什么?

请澄清这个问题。 在8051:7051表示法中,8051是“外部”可到达端口,7051是泊坞窗图像中的匹配端口。 此外,“UNAVAILABLE:Channel”错误似乎表明您在对等体join的结构通道名称中存在拼写错误,请仔细检查?