使用fabric-sdk-go安装链码时的连接超时

时间:2018-06-11 07:33:03

标签: hyperledger-fabric hyperledger-fabric-sdk-go

我遇到一个问题,即使用fabric-sdk-go安装链码时总会出现grpcs超时。 GRCPS请求是从本地机器到其docker容器。

ERRORMSG:

  

lscc.getinstalledchaincodes失败:SendProposal失败:endorser的事务处理[localhost:7051]:Endorser Client Status Code:(2)CONNECTION_FAILED。说明:拨号连接超时[localhost:7051]

ENV:

  

Mac OSX

     

docker version:18.03.1-ce

     

docker-compose版本1.21.1,build 5a3f1a3

     

fabric-sdk-go:master

本地结构网络由official fabric-ca example设置。

docker-compose.yaml:Gist

local network-config.yaml:Gist

客户端转到应用:Gist

我的network-config.yaml ???

有什么问题

我尝试了什么:

  1. 试图在docker-compose.yaml中禁用CORE_PEER_TLS_CLIENTAUTHREQUIRED,失败..

  2. 使用127.0.0.1 peer1-xiaoyudian ......编辑/ etc / hosts文件,失败..

  3. 增加了network.config.yaml中的peer.timeout.connections和其他超时选项,失败了..

  4. 在network-config.yaml中增加了grpcOptions.keep-alive-time,失败了..

  5. 将peers.xxxx.url的主机从localhost更改为network-config.yaml中的域,失败...

  6. 在network-config.yaml中添加了entityMathcers,失败了......

  7. ...失败

  8. 答案: 来自rocket.chat的人告诉我:

      
        
    1. run:export GRPC_GO_LOG_SEVERITY_LEVEL = error
    2.   
    3. run:export GRPC_GO_LOG_VERBOSITY_LEVEL = 2
    4.   
    5. 在客户端代码中添加以下行:   grpclog.SetLogger(记录器)
    6.   

    日志说这是与同行握手的证书问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试将localhost更改为网络中的域。例如:与peer:localhost - > peer1-xiaoyudian ... with orderer:localhost - > orderer1-themis ...与ca相同,并使用entity matcher将您的IP地址映射到对等名称,orderer,ca。

答案 1 :(得分:1)

参考https://github.com/hyperledger/fabric-sdk-go/tree/master/test/fixtures/config/overrides 如何重写URL以使用localhost。在您的情况下,您必须使用local_entity_matchers.yaml& local_orderers_peers_ca.yaml合并了所提供的样本。

我在network-config.yaml注意到的另一件事,映射的主机名与实际的对等名相同。实体匹配器不会在这里踢。请参阅上面给出的示例中使用的实体匹配器。