无法通过NodeJS查询/调用Hyperledger Fabric Peers(在docker swarm网络中) - GRPC / S截止时间错误

问题描述 投票:2回答:1

我安装,查询过程,通过CLI调用fabcar chaincode。一切都很成功。

enrolAdmin.js和registerUser.js成功运行。

但是,当我运行query.js时,我遇到以下错误

错误

error: [Remote.js]: Error: Failed to connect before the deadline URL:grpc://192.168.56.171:7051
error: [Remote.js]: Error: Failed to connect before the deadline URL:grpc://192.168.56.171:8051
error: [Network]: _initializeInternalChannel: Unable to initialize channel. Attempted to contact 2 Peers. Last error was Error: Failed to connect before the deadline URL:grpc://192.168.56.171:8051
Failed to evaluate transaction: Error: Unable to initialize channel. Attempted to contact 2 Peers. Last error was Error: Failed to connect before the deadline URL:grpc://192.168.56.171:8051

仅供参考 - 我在TLS禁用和启用时都进行了相同的测试。仍然失败

环境我已经在Docker swarm的帮助下扩展了Hyperledger Fabric first-network e2e以在多个主机中工作。

连接配置文件(不含TLS)如下

{
    "name": "first-network",
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300"
                },
                "orderer": "300"
            }
        }
    },
    "channels": {
        "mychannel": {
            "orderers": [
                "orderer.example.com",
            ],
            "peers": {
                "peer0.org1.example.com": {},
                "peer1.org1.example.com": {},
                "peer0.org2.example.com": {},
                "peer1.org2.example.com": {}
            }
        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                "peer1.org1.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com"
            ]
        },
        "Org2": {
            "mspid": "Org2MSP",
            "peers": [
                "peer0.org2.example.com",
                "peer1.org2.example.com"
            ],
            "certificateAuthorities": [
                "ca.org2.example.com"
            ]
        }
    },
    "orderers": {
        "orderer.example.com": {
            "url": "grpc://192.168.56.170:7050"
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpc://192.168.56.171:7051"
        },
        "peer1.org1.example.com": {
            "url": "grpc://192.168.56.171:8051"
        },
        "peer0.org2.example.com": {
            "url": "grpc://192.168.56.172:7051"
        },
        "peer1.org2.example.com": {
            "url": "grpc://192.168.56.172:8051"
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "http://192.168.56.171:7054",
            "caName": "ca.org1.example.com"
        },
        "ca.org2.example.com": {
            "url": "http://192.168.56.172:7054",
            "caName": "ca.org2.example.com"
        }
    }
}

docker-compose文件结构片段如下,

networks:
  hyperledger:
        external: 
            name: hyperledger
  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    -----------------------
    -----------------------
    -----------------------
    ports:
      - 7051:7051
    networks:
      hyperledger:
        aliases:
         - peer0.org1.example.com 

预期结果 - 通过NodeJS连接到Hyperledger docker swarm容器

docker hyperledger-fabric hyperledger grpc
1个回答
0
投票

我找到了解决问题的方法。确保telnet从网络外部工作到所需的容器。通过运行

telnet 192.168.128.171 7051

如果Telnet不起作用 - >问题必定是因为端口未正确发布/公开。首先检查以下内容,

确保将CORE_PEER_LISTENADDRESS设置为在docker-compose文件中侦听所需的端口。如下,对于peer0.org1.eaxmple.com - > 7051,

CORE_PEER_LISTENADDRESS=0.0.0.0:7051

如果Telnet正常工作 - >检查连接配置文件。如果启用了TLS,请确保正确传递tls证书/ PEM文件,并将连接设置为GRPCS(而不是GRPC)

连接配置文件

            "certificateAuthorities": [

                "ca.org1.example.com"

            ],

            "adminPrivateKey": {

                "path": "crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_sk"

            },

            "signedCert": {

                "path": "crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected]"

            }
        "peer0.org1.example.com": {

            "url": "grpcs://192.168.128.171:7051",

            "grpcOptions": {

                "ssl-target-name-override": "peer0.org1.example.com",

                "request-timeout": 120001

            },

            "tlsCACerts": {

                "path": "crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem"

            }

        },

请查看以下链接以获取进一步参考https://fabric-sdk-node.github.io/tutorial-network-config.html

© www.soinside.com 2019 - 2024. All rights reserved.