Hyperledger fabric 从客户端发送查询请求时出错:没有可用于查询的对等方

Hyperledger fabric 从客户端发送查询请求时出错:没有可用于查询的对等方,hyperledger-fabric,blockchain,hyperledger,Hyperledger Fabric,Blockchain,Hyperledger,从客户端发送查询请求时,我收到以下错误 FabricError: No peers available to query. Errors: ["Failed to connect before the deadline URL:grpcs://localhost:12051","Failed to connect before the deadline URL:grpcs://localhost:11051"]. 下面是我的connection-org3.json连接配置文件的一部分 "

从客户端发送查询请求时,我收到以下错误

FabricError: No peers available to query. Errors: ["Failed to connect before the deadline 
URL:grpcs://localhost:12051","Failed to connect before the deadline 
URL:grpcs://localhost:11051"]. 
下面是我的
connection-org3.json
连接配置文件的一部分

"organizations": {
        "Org3": {
            "mspid": "Org3MSP",
            "peers": [
                "peer0.org3.bc4scm.de",
                "peer1.org3.bc4scm.de"
            ],
            "certificateAuthorities": [
                "ca.org3.bc4scm.de"
            ]
        }
    },
    "peers": {
        "peer0.org3.bc4scm.de": {
            "url": "grpcs://localhost:11051",
            "tlsCACerts": {
                "path": "crypto-config/peerOrganizations/org3.bc4scm.de/tlsca/tlsca.org3.bc4scm.de-cert.pem"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org3.bc4scm.de"
            }
        },
        "peer1.org3.bc4scm.de": {
            "url": "grpcs://localhost:12051",
            "tlsCACerts": {
                "path": "crypto-config/peerOrganizations/supplier.bc4scm.de/tlsca/tlsca.org3.bc4scm.de-cert.pem"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer1.org3.bc4scm.de"
            }
        }
    },
    "certificateAuthorities": {
        "ca.org3.bc4scm.de": {
            "url": "https://localhost:9054",
            "caName": "ca-supplier",
            "tlsCACerts": {
                "path": "crypto-config/peerOrganizations/org3.bc4scm.de/tlsca/tlsca.org3.bc4scm.de-cert.pem"
            },
            "httpOptions": {
                "verify": false
            }
        }
    }
下面是我的docker composer文件的一部分

peer0.org3.bc4scm.de:
    container_name: peer0.org3.bc4scm.de
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer0.org3.bc4scm.de
      - CORE_PEER_ADDRESS=peer0.org3.bc4scm.de:11051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:11051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org3.bc4scm.de:11052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:11052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org3.bc4scm.de:12051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org3.bc4scm.de:11051
      - CORE_PEER_LOCALMSPID=Org3MSP
    volumes:
      - /var/run/:/host/var/run/
      - ../crypto-config/peerOrganizations/org3.bc4scm.de/peers/peer0.org3.bc4scm.de/msp:/etc/hyperledger/fabric/msp
      - ../crypto-config/peerOrganizations/org3.bc4scm.de/peers/peer0.org3.bc4scm.de/tls:/etc/hyperledger/fabric/tls
      - peer0.org3.bc4scm.de:/var/hyperledger/production
    ports:
      - 11051:11051

  peer1.org3.bc4scm.de:
    container_name: peer1.org3.bc4scm.de
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.org3.bc4scm.de
      - CORE_PEER_ADDRESS=peer1.org3.bc4scm.de:12051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:12051
      - CORE_PEER_CHAINCODEADDRESS=peer1.org3.bc4scm.de:12052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:12052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org3.bc4scm.de:11051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org3.bc4scm.de:12051
      - CORE_PEER_LOCALMSPID=Org3MSP
    volumes:
      - /var/run/:/host/var/run/
      - ../crypto-config/peerOrganizations/org3.bc4scm.de/peers/peer1.org3.bc4scm.de/msp:/etc/hyperledger/fabric/msp
      - ../crypto-config/peerOrganizations/supplier.bc4scm.de/peers/peer1.org3.bc4scm.de/tls:/etc/hyperledger/fabric/tls
      - peer1.org3.bc4scm.de:/var/hyperledger/production
    ports:
    - 12051:12051
我从Fabcar示例中获得了这段代码,并尝试从Org3而不是Org1中的客户端进行查询。我创建了一个管理员用户,然后在此组织中成功创建了一个用户。根据我的观察,我从下面的代码行执行中得到了错误

const result = await contract.evaluateTransaction('queryAllProducts','123');
这个问题的可能原因是什么?感谢您在这方面的见解

更新:

我检查了peer0.prg3.bs4scm.de中打开的端口

root@e52992a76c3d:/opt/gopath/src/github.com/hyperledger/fabric/peer# netstat -tulpn | grep LISTEN
tcp        0      0 127.0.0.1:9443          0.0.0.0:*               LISTEN      1/peer          
tcp        0      0 127.0.0.11:46353        0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::11051                :::*                    LISTEN      1/peer          
tcp6       0      0 :::6060                 :::*                    LISTEN      1/peer          
tcp6       0      0 :::11052                :::*                    LISTEN      1/peer  
在这里,我可以看到端口11051和11052已打开并正在侦听

此外,还有一个容器用于安装链码

cd0b165e5186        dev-peer0.org3.bc4scm.de-scmlogic-1.0-9c7e776aa8a752e530f79d0b456f1bda28aac3f5db0af734be2f315d8d1a4f53   "/bin/sh -c 'cd /usr…"   48 seconds ago       Up 47 seconds                                                     dev-peer0.org3.bc4scm.de-scmlogic-1.0
当我查看该对等机(peer0.org3)的日志时,我可以看到不断打印出错误日志。它正在抱怨与org1的连接

019-07-06 10:26:52.278 UTC [gossip.discovery] expireDeadMembers -> WARN 164 Exiting
2019-07-06 10:26:56.381 UTC [gossip.comm] func1 -> WARN 165 peer1.org1.bc4scm.de:8051, PKIid:42214b7584f3fabcdb84e5770c62e4cf0f7c00b2a9d0441d772925882d4457a7 isn't responsive: EOF
2019-07-06 10:26:56.381 UTC [gossip.discovery] expireDeadMembers -> WARN 166 Entering [42214b7584f3fabcdb84e5770c62e4cf0f7c00b2a9d0441d772925882d4457a7]
2019-07-06 10:26:56.381 UTC [gossip.discovery] expireDeadMembers -> WARN 167 Closing connection to Endpoint: peer1.org1.bc4scm.de:8051, InternalEndpoint: , PKI-ID: 42214b7584f3fabcdb84e5770c62e4cf0f7c00b2a

这可能是由多种原因造成的:

  • 您的对等端口不可访问,因此首先检查这些端口是否打开

  • 您应该确认链码是否安装在这些对等计算机上

  • 如果情况并非如此,则您必须检查链码和这些对等点的docker容器内的日志,为此,您可以使用:


  • 如果您在那里发现了问题,但无法解决,请务必告诉我。

    这可能是由于多种原因造成的:

  • 您的对等端口不可访问,因此首先检查这些端口是否打开

  • 您应该确认链码是否安装在这些对等计算机上

  • 如果情况并非如此,则您必须检查链码和这些对等点的docker容器内的日志,为此,您可以使用:


  • 如果您在那里发现了一些问题,但无法解决,请告诉我。

    您可以检查,即使使用浏览器(Firefox)也可以访问peer
    request on firefox-localhost:11051
    如果您可以看到响应,表示您的对等机可以访问,或者如果没有,则表示您的端口没有打开,然后转到docker文件并打开相同的端口,然后使用docker compose启动对等机,对您想要访问的每个对等机执行相同的操作

    甚至您也可以使用以下方法检查对等方的日志-

    docker logs --follow peer0.org3.bc4scm.de
    
    更新:---

    您可以检查两个对等点的核心\u对等\u八卦\u引导和核心\u对等\u八卦\u外部端点

    **CORE_PEER_GOSSIP_BOOTSTRAP=<a list of peer endpoints within the peer's org>
    CORE_PEER_GOSSIP_EXTERNALENDPOINT=<the peer endpoint, as known outside the org>**
    
    
    for peer0.org3.bc4scm.de
    
    CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org3.bc4scm.de:12051
    CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org3.bc4scm.de:11051
    
    for peer1.org3.bc4scm.de : 
    
    CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org3.bc4scm.de:11051
    CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org3.bc4scm.de:12051
    

    **CORE\u PEER\u GOSSIP\u BOOTSTRAP=您可以检查是否可以使用浏览器(Firefox)访问PEER
    request on firefox-localhost:11051
    如果您可以看到响应,表示您的对等机可以访问,或者如果没有,则表示您的端口没有打开,然后转到docker文件并打开相同的端口,然后使用docker compose启动对等机,对您想要访问的每个对等机执行相同的操作

    甚至您也可以使用以下方法检查对等方的日志-

    docker logs --follow peer0.org3.bc4scm.de
    
    更新:---

    您可以检查两个对等点的核心\u对等\u八卦\u引导和核心\u对等\u八卦\u外部端点

    **CORE_PEER_GOSSIP_BOOTSTRAP=<a list of peer endpoints within the peer's org>
    CORE_PEER_GOSSIP_EXTERNALENDPOINT=<the peer endpoint, as known outside the org>**
    
    
    for peer0.org3.bc4scm.de
    
    CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org3.bc4scm.de:12051
    CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org3.bc4scm.de:11051
    
    for peer1.org3.bc4scm.de : 
    
    CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org3.bc4scm.de:11051
    CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org3.bc4scm.de:12051
    

    **CORE\u PEER\u GOSSIP\u BOOTSTRAP=我遇到了同样的问题,并意识到问题在于我已将“asLocalhost”属性设置为false,并试图访问位于的对等方。下面是正确设置了特性的工作线。(我从一个使用fabcar的示例中提取,这在其他方面非常好)


    我也遇到了同样的问题,并意识到问题在于我将“asLocalhost”属性设置为false,并试图访问位于的对等方。下面是正确设置了特性的工作线。(我从一个使用fabcar的示例中提取,这在其他方面非常好)


    您可以检查是否可以使用浏览器(Firefox)访问peer。firefox上的请求-localhost:11051如果您可以看到响应表示您的对等方可访问,或者如果不可访问,则表示您的端口未打开,然后转到docker文件并打开相同的端口,然后使用docker compose启动对等方,对您要访问的每个对等方执行相同操作。:)您可以检查是否可以使用浏览器(Firefox)访问peer。firefox上的请求-localhost:11051如果您可以看到响应表示您的对等方可访问,或者如果不可访问,则表示您的端口未打开,然后转到docker文件并打开相同的端口,然后使用docker compose启动对等方,对您要访问的每个对等方执行相同操作。:)非常感谢。我从对等容器中获取了日志并更新了我的问题。请看一看。再次感谢,谢谢。我从对等容器中获取了日志并更新了我的问题。请看一看。再次感谢,谢谢。我从对等容器中获取了日志并更新了我的问题。请看一看。再次感谢。如上文所述,检查CORE\u PEER\u Tassip\u引导和CORE\u PEER\u Tassip\u EXTERNALENDPOINT可能会对您有所帮助。谢谢。我从对等容器中获取了日志并更新了我的问题。请看一看。再次感谢。如上所述,检查CORE\u PEER\u Tassip\u引导和CORE\u PEER\u Tassip\u EXTERNALENDPOINT可能会对您有所帮助。