'Hyperledger Blockchain Explorer-Fail to connect before the deadline on Endorser, fail to connect to remote gRPC server

I am trying to set up a Hyperledger Fabric Network with Hyperledger Explorer. I spin up a VM on the digital ocean cloud with ubuntu OS. From there, I spin up 3 orderers node, and 2 peers node. Which result in total of 5 nodes. (I am using RAFT setup).

However, I encounter the error as below when trying to start the hyperledger fabric explorer docker-container images.

Error:

> [email protected] app-start /opt/explorer
> ./start.sh

[2021-02-18T07:32:21.828] [INFO] PgService - SSL to Postgresql disabled
[2021-02-18T07:32:21.829] [INFO] PgService - connecting to Postgresql postgres://hppoc:******@explorerdb.mynetwork.com:5432/fabricexplorer
[2021-02-18T07:32:21.898] [INFO] Platform -  network_config.id  test-network  network_config.profile  ./connection-profile/test-network.json
[2021-02-18T07:32:22.013] [INFO] FabricConfig - config.client.tlsEnable  true
[2021-02-18T07:32:22.013] [INFO] FabricConfig - FabricConfig, this.config.channels  airlinechannel
[2021-02-18T07:32:22.016] [INFO] FabricGateway - enrollUserIdentity: userName : exploreradmin
2021-02-18T07:32:25.221Z - error: [ServiceEndpoint]: Error: Failed to connect before the deadline on Endorser- name: peer1.acme.com, url:grpcs://peer1.acme.com:7051, connected:false, connectAttempted:true
2021-02-18T07:32:25.222Z - error: [ServiceEndpoint]: waitForReady - Failed to connect to remote gRPC server peer1.acme.com url:grpcs://peer1.acme.com:7051 timeout:3000
2021-02-18T07:32:25.223Z - info: [NetworkConfig]: buildPeer - Unable to connect to the endorser peer1.acme.com due to Error: Failed to connect before the deadline on Endorser- name: peer1.acme.com, url:grpcs://peer1.acme.com:7051, connected:false, connectAttempted:true
2021-02-18T07:32:28.250Z - error: [ServiceEndpoint]: Error: Failed to connect before the deadline on Discoverer- name: peer1.acme.com, url:grpcs://peer1.acme.com:7051, connected:false, connectAttempted:true
2021-02-18T07:32:28.250Z - error: [ServiceEndpoint]: waitForReady - Failed to connect to remote gRPC server peer1.acme.com url:grpcs://peer1.acme.com:7051 timeout:3000
2021-02-18T07:32:28.250Z - error: [ServiceEndpoint]: ServiceEndpoint grpcs://peer1.acme.com:7051 reset connection failed :: Error: Failed to connect before the deadline on Discoverer- name: peer1.acme.com, url:grpcs://peer1.acme.com:7051, connected:false, connectAttempted:true
2021-02-18T07:32:28.251Z - error: [DiscoveryService]: send[airlinechannel] - no discovery results
[2021-02-18T07:32:28.251] [ERROR] FabricClient - Error: DiscoveryService has failed to return results
    at DiscoveryService.send (/opt/explorer/node_modules/fabric-network/node_modules/fabric-common/lib/DiscoveryService.js:370:10)
    at process._tickCallback (internal/process/next_tick.js:68:7)
[2021-02-18T07:32:28.252] [INFO] FabricClient - ********* call to initializeDetachClient **********
[2021-02-18T07:32:28.253] [INFO] FabricClient - initializeDetachClient, network config)  { name: 'test-network',
  version: '1.0.0',
  client:
   { tlsEnable: true,
     adminCredential: { id: 'exploreradmin', password: 'exploreradminpw' },
     enableAuthentication: true,
     organization: 'AcmeMSP',
     connection: { timeout: [Object] } },
  channels: { airlinechannel: { peers: [Object] } },
  organizations:
   { AcmeMSP:
      { mspid: 'AcmeMSP',
        adminPrivateKey: [Object],
        peers: [Array],
        signedCert: [Object] } },
  peers:
   { 'peer1.acme.com': { tlsCACerts: [Object], url: 'grpcs://peer1.acme.com:7051' } } }
[2021-02-18T07:32:28.253] [INFO] FabricClient - ************************************* initializeDetachClient *************************************************
[2021-02-18T07:32:28.254] [INFO] FabricClient - Error : Failed to connect client peer, please check the configuration and peer status
[2021-02-18T07:32:28.254] [INFO] FabricClient - Info :  Explorer will continue working with only DB data
[2021-02-18T07:32:28.254] [INFO] FabricClient - ************************************** initializeDetachClient ************************************************
[2021-02-18T07:32:28.259] [INFO] Platform - initializeListener, network_id, network_client  test-network { name: 'test-network',
  version: '1.0.0',
  client:
   { tlsEnable: true,
     adminCredential: { id: 'exploreradmin', password: 'exploreradminpw' },
     enableAuthentication: true,
     organization: 'AcmeMSP',
     connection: { timeout: [Object] } },
  channels: { airlinechannel: { peers: [Object] } },
  organizations:
   { AcmeMSP:
      { mspid: 'AcmeMSP',
        adminPrivateKey: [Object],
        peers: [Array],
        signedCert: [Object] } },
  peers:
   { 'peer1.acme.com': { tlsCACerts: [Object], url: 'grpcs://peer1.acme.com:7051' } } }
[2021-02-18T07:32:28.260] [INFO] main - Please open web browser to access :http://localhost:8080/
[2021-02-18T07:32:28.261] [INFO] main - pid is 20
[2021-02-18T07:32:28.263] [ERROR] main - <<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>
[2021-02-18T07:32:28.263] [ERROR] main - Error :  [ 'Default client peer is down and no channel details available database' ]
[2021-02-18T07:32:30.264] [INFO] main - Received kill signal, shutting down gracefully
[2021-02-18T07:32:30.266] [INFO] Platform - <<<<<<<<<<<<<<<<<<<<<<<<<< Closing explorer  >>>>>>>>>>>>>>>>>>>>>
[2021-02-18T07:32:30.266] [INFO] main - Closed out connections

Version Detail

  1. Hyperledger Fabric: 2.3.1
  2. Hyperledger Explorer: v1.1.1 (latest tag)

Part 1: Docker Container Setup

a) Docker PS

CONTAINER ID   IMAGE                                                                                                                                                                  COMMAND                  CREATED          STATUS                   PORTS                                            NAMES
9e8768914140   hyperledger/explorer:latest                                                                                                                                            "docker-entrypoint.s…"   3 minutes ago    Up 3 minutes             0.0.0.0:8080->8080/tcp                           explorer.mynetwork.com
903c8c4a4326   hyperledger/explorer-db:latest                                                                                                                                         "docker-entrypoint.s…"   3 minutes ago    Up 3 minutes (healthy)   5432/tcp                                         explorerdb.mynetwork.com
9fed267ae9b1   dev-peer1.budget.com-gocc1.1.0-1.0-2593f1a95def85c64fdfed35e3d3b1051b92ed91549cfe789292ec5475d7db86-e014c6d933da036b6c79b53d29a800d8a6886e374ceb435a30642b885735f8f5   "chaincode -peer.add…"   21 minutes ago   Up 21 minutes                                                             dev-peer1.budget.com-gocc1.1.0-1.0-2593f1a95def85c64fdfed35e3d3b1051b92ed91549cfe789292ec5475d7db86
12407497fa4c   dev-peer1.acme.com-gocc1.1.0-1.0-2593f1a95def85c64fdfed35e3d3b1051b92ed91549cfe789292ec5475d7db86-a3b6caa9293bb826d231b1a31cc47437e58764abe5169a20ed0ee43f25c16b24     "chaincode -peer.add…"   21 minutes ago   Up 21 minutes                                                             dev-peer1.acme.com-gocc1.1.0-1.0-2593f1a95def85c64fdfed35e3d3b1051b92ed91549cfe789292ec5475d7db86
0448e71f68e1   hyperledger/fabric-peer:latest                                                                                                                                         "peer node start"        22 minutes ago   Up 22 minutes            0.0.0.0:8051->7051/tcp, 0.0.0.0:8052->7052/tcp   peer1.budget.com
3266ec37b360   hyperledger/fabric-peer:latest                                                                                                                                         "peer node start"        22 minutes ago   Up 22 minutes            0.0.0.0:7051-7052->7051-7052/tcp                 peer1.acme.com
47ebe9ad79d1   hyperledger/fabric-orderer:latest                                                                                                                                      "orderer"                22 minutes ago   Up 22 minutes            0.0.0.0:8050->7050/tcp                           orderer2.acme.com
09a5f771f47f   hyperledger/fabric-tools:latest                                                                                                                                        "/bin/bash"              22 minutes ago   Up 22 minutes                                                             tools
e132bb01ce22   hyperledger/fabric-orderer:latest                                                                                                                                      "orderer"                22 minutes ago   Up 22 minutes            0.0.0.0:9050->7050/tcp                           orderer3.acme.com
3c61b0316385   hyperledger/fabric-orderer:latest                                                                                                                                      "orderer"                22 minutes ago   Up 22 minutes

b) I use 3 docker-compose files for my configuration setting.

$ docker-compose -f ./config/docker-compose-base.yaml -f ./tls/docker-compose-tls.yaml -f ./raft/docker-compose-raft.yaml up -d

  1. docker-compose-base.yaml

https://gist.github.com/Skyquek/03d1ffad5643d67d8da5b268a4814a7d

  1. docker-compose-tls.yaml

https://gist.github.com/Skyquek/b3b314cb2152ab541e822f72c60a2cbd

  1. docker-compose-raft.yaml

https://gist.github.com/Skyquek/7f8ec2d4d1876283f4a9444675971be8

c) Core.yaml

  1. acme core.yaml

https://gist.github.com/Skyquek/8cdcbc4ee3d53a2277b1c34bb2fca704

Part 2: Blockchain Explorer Setting

1. connection-profile.json

{
        "name": "test-network",
        "version": "1.0.0",
        "client": {
                "tlsEnable": true,
                "adminCredential": {
                        "id": "exploreradmin",
                        "password": "exploreradminpw"
                },
                "enableAuthentication": true,
                "organization": "AcmeMSP",
                "connection": {
                        "timeout": {
                                "peer": {
                                        "endorser": "300"
                                },
                                "orderer": "300"
                        }
                }
        },
        "channels": {
                "airlinechannel": {
                        "peers": {
                                "peer1.acme.com": {}
                        }
                }
        },
        "organizations": {
                "AcmeMSP": {
                        "mspid": "AcmeMSP",
                        "adminPrivateKey": {
                                "path": "/tmp/crypto/peerOrganizations/acme.com/users/[email protected]/msp/keystore/priv_sk"
                        },
                        "peers": ["peer1.acme.com"],
                        "signedCert": {
                                "path": "/tmp/crypto/peerOrganizations/acme.com/users/[email protected]/msp/signcerts/[email protected]"
                        }
                }
        },
        "peers": {
                "peer1.acme.com": {
                        "tlsCACerts": {
                                "path": "/tmp/crypto/peerOrganizations/acme.com/tlsca/tlsca.acme.com-cert.pem"
                        },
                        "url": "grpcs://peer1.acme.com:7051"
                }
        }
}

2. docker-compose.yaml


# SPDX-License-Identifier: Apache-2.0
version: '2.1'

volumes:
  pgdata:
  walletstore:

networks:
  mynetwork.com:
    external:
      name: acloudfan_airline

services:

  explorerdb.mynetwork.com:
    image: hyperledger/explorer-db:latest
    container_name: explorerdb.mynetwork.com
    hostname: explorerdb.mynetwork.com
    environment:
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWORD=password
    healthcheck:
      test: "pg_isready -h localhost -p 5432 -q -U postgres"
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - mynetwork.com

  explorer.mynetwork.com:
    image: hyperledger/explorer:latest
    container_name: explorer.mynetwork.com
    hostname: explorer.mynetwork.com
    environment:
      - DATABASE_HOST=explorerdb.mynetwork.com
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWD=password
      - LOG_LEVEL_APP=debug
      - LOG_LEVEL_DB=debug
      - LOG_LEVEL_CONSOLE=info
      - LOG_CONSOLE_STDOUT=true
      - DISCOVERY_AS_LOCALHOST=true
    volumes:
      - ./config.json:/opt/explorer/app/platform/fabric/config.json
      - ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
      - ./organizations:/tmp/crypto
      - walletstore:/opt/explorer/wallet
    ports:
      - 8080:8080
    depends_on:
      explorerdb.mynetwork.com:
        condition: service_healthy
    networks:
      - mynetwork.com

Solution that I tried

1. Change the tlscs certs path

As stated in Hyperledger Fabric 2.0.1: Error: Failed to connect before the deadline on Discoverer- name:

The problem most likely is due to the error from the path. But the problem still persists.

2. Change the env variable DISCOVERY_AS_LOCALHOST=true to false

Some of them mention that this will fixed the problem. But I can't seem to fix it this way.

3. Tried with hyperledger fabric 2.0 test-network

I tried to run with fabric sample test-network and its run perfectly fine.

4. docker exec -it sh to the explorer.mynetwork.com to ping the peer

The ping can run perfectly fine.

/opt/explorer # ping peer1.acme.com:7051
PING peer1.acme.com:7051 (172.23.0.6): 56 data bytes
64 bytes from 172.23.0.6: seq=0 ttl=64 time=0.138 ms
64 bytes from 172.23.0.6: seq=1 ttl=64 time=0.087 ms
64 bytes from 172.23.0.6: seq=2 ttl=64 time=0.090 ms
64 bytes from 172.23.0.6: seq=3 ttl=64 time=0.089 ms
64 bytes from 172.23.0.6: seq=4 ttl=64 time=0.101 ms
64 bytes from 172.23.0.6: seq=5 ttl=64 time=0.088 ms
^C
--- peer1.acme.com:7051 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.087/0.098/0.138 ms

Its keep on showing that the peer is down or the connection to the peer is fail

I am struggling with this error for few days now. Hope someone can help me to identify the problem. Thank you very much.



Solution 1:[1]

I think you should double-check your network. Explorer should be spun up on the same network with Fabric, so that the peers and other nodes can be connected. To check the Fabric network name, you should check in the docker-compose file which set it up and look for CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE or you can navigate to you CLI and run docker network ls. You should be able to find your fabric network name with the DRIVER which should be bridge

Also, you should make sure that your Fabric network is up and running properly before bringing Explorer up.

Solution 2:[2]

With a similar error, the problem I had was that the keys and certificates for the network had gotten out of sync with the keys and certs for the blockchain explorer. This is a particularly significant problem when running a test network, because the keys and certs will (AFAICT) be regenerated whenever you restart a network, and a test network restarts much more often than a production network.

Copy over everything into the organizations directory, or whatever you call it; repeat this every time you bring up the network you want to use the explorer on. Symlinks also work, though that is probably more brittle and I wouldn't want to rely on it in production.

Solution 3:[3]

All configurations seems good, however you have to upgrade explorer version to be compatible with hyperledger fabric version.

So please use v1.1.4 instead of v1.1.1

Also make sure that you have mounted crypto config correctly, try to access this path inside the container /tmp/crypto/peerOrganizations/acme.com/tlsca/tlsca.acme.com-cert.pem

Try to change tlsCACerts path to use peer tls ca.crt /tmp/crypto/peerOrganizations/acme.com/peers/peer1.acme.com/tls/ca.crt

You have mentioned that the same configurations works with hyperledger fabric v2, if you have tried it locally not on the same server so I please disable the firewall on the server and give it a try

To check if you can reach domain and port please try this

cat > /dev/tcp/peer1.acme.com/7051

Check this https://support.bluemedora.com/s/article/Using-Bash-to-test-if-a-TCP-port-on-a-remote-system-is-open

Solution 4:[4]

I've had this error

[INFO] FabricClient - Error : Failed to connect client peer, please check the configuration and peer status
...
Error :  [ 'Default client peer is down and no channel details available database' ]

What I found was that when we use 256-bit vs 384-bit key length, the error occurs.

Setting local/host made no difference.

I'm using v1.1.4. Will likely test the same with v1.1.5 soon enough and suspect it'll have the same issue.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dharman
Solution 2
Solution 3 Yasser Mas
Solution 4 Rob Evans