Ошибка при отправке запроса от клиента: нет равноправного узла для запроса - PullRequest
0 голосов
/ 03 июля 2019

Я получаю следующую ошибку при отправке запроса от моего клиента.

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.

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

Ответы [ 2 ]

3 голосов
/ 03 июля 2019

Это может быть вызвано несколькими причинами:

  1. Ваши одноранговые узлы недоступны, поэтому сначала проверьте, открыты эти порты или нет.

  2. Вы должны подтвердить, установлен ли цепной код на этих одноранговых узлах.

  3. Если это не так, вы должны проверить журналы внутри контейнеров док-станции цепного кода и этих одноранговых узлов идля этого вы можете использовать:

docker exec -it [container-name] bash

Скажите мне, если вы найдете что-то там, и вы не можете решить это.

2 голосов
/ 04 июля 2019

Вы можете проверить, доступен ли узел, даже используя браузер (Firefox). request on firefox - localhost:11051 если вы могли видеть ответ, означающий, что ваш одноранговый узел доступен, или, если нет, означает, что ваш порт не открыт для того же самого, затем перейдите к файлу docker и откройте порт для того же самого, и вверх по узлу, используя docker compose, выполните одинаково для всех пиров, к которым вы хотите получить доступ.

Даже вы можете проверить журналы пиров, используя следующие -

docker logs --follow peer0.org3.bc4scm.de

Обновление: ---

Вы можете проверить CORE_PEER_GOSSIP_BOOTSTRAP & CORE_PEER_GOSSIP_EXTERNALENDPOINT для обоих пиров

**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
  • Проверьте порт соответственно вашим сверстникам и файл докера.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...