Hyperledger fabric Hyperledger Fabric Node.js客户端应用程序部署在不同的服务器上

Hyperledger fabric Hyperledger Fabric Node.js客户端应用程序部署在不同的服务器上,hyperledger-fabric,hyperledger,hyperledger-fabric-ca,hyperledger-fabric-sdk-js,Hyperledger Fabric,Hyperledger,Hyperledger Fabric Ca,Hyperledger Fabric Sdk Js,我在Node.js Hyperledger结构客户端库中遇到了以下特定错误: 我已经在一台服务器上部署了我的区块链网络(Hyperledger Fabric 1.4),IP和所有需要的端口都可以从另一台服务器上看到。文档中提供的所有示例/示例都是指通过本地主机的网络 如何启动客户端应用程序并将其指向网络的IP地址而不是本地主机或对等容器名称(例如peer0.org1.example.com) 每个客户端应用程序是否必须将管理员和用户注册到其本地持久性存储中,或者只能由网络本身执行一次(并且可能在

我在Node.js Hyperledger结构客户端库中遇到了以下特定错误:

我已经在一台服务器上部署了我的区块链网络(Hyperledger Fabric 1.4),IP和所有需要的端口都可以从另一台服务器上看到。文档中提供的所有示例/示例都是指通过本地主机的网络

如何启动客户端应用程序并将其指向网络的IP地址而不是本地主机或对等容器名称(例如peer0.org1.example.com)

每个客户端应用程序是否必须将管理员和用户注册到其本地持久性存储中,或者只能由网络本身执行一次(并且可能在稍后阶段从网络装载到应用程序)?我们在这里讨论的是一台主机上的停靠网络和另一台主机上的客户端应用程序(也停靠)

此外,如果调用
createPeer
方法时需要存在.pem证书文件,则如何启动应用程序并连接到例如通过GRCP订购的

我将非常感谢这里提供的任何帮助

编辑,2020年3月12日:

我正在使用对我的网络进行更改的基本网络示例创建3个组织,每个组织有3个对等方和5个Raft订购方。我复制了connection-org1.json文件,将localhost更改为我的外部服务器IP,并出现以下错误:

2020-03-12T12:45:31.503Z - error: [SingleQueryHandler]: evaluate: message=No peers available to query. Errors: ["14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed"], stack=FabricError: No peers available to query. Errors: ["14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed"]
    at SingleQueryHandler.evaluate ((...)/network_files/javascript/node_modules/fabric-network/lib/impl/query/singlequeryhandler.js:44:17), name=FabricError
Failed to evaluate transaction: FabricError: No peers available to query. Errors: ["14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed"]
我能够使用托管在外部IP上的网络在本地计算机上成功注册管理员和用户。但我无法使用连接配置文件查询链码

这是我的连接配置文件:

{
    "name": "first-network-org1",
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300"
                }
            }
        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                "peer1.org1.example.com",
                "peer2.org1.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com"
            ]
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpcs://<IP>:7051",
            "tlsCACerts": {
                "pem": "<CERT>"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org1.example.com",
                "hostnameOverride": "peer0.org1.example.com"
            },
            "endorsingPeer": true,
            "chaincodeQuery": true,
            "ledgerQuery": true,
            "eventSource": true
        },
        "peer1.org1.example.com": {
            "url": "grpcs://<IP>:8051",
            "tlsCACerts": {
                "pem": "<CERT>"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer1.org1.example.com",
                "hostnameOverride": "peer1.org1.example.com"
            }
        },
        "peer2.org1.example.com": {
            "url": "grpcs://<IP>:9051",
            "tlsCACerts": {
                "pem": "<CERT>"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer2.org1.example.com",
                "hostnameOverride": "peer2.org1.example.com"
            }
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "https://<IP>:7054",
            "caName": "ca-org1",
            "tlsCACerts": {
                "pem": "<CERT>"
            },
            "httpOptions": {
                "verify": false
            }
        }
    }
}
{
“名称”:“first-network-org1”,
“版本”:“1.0.0”,
“客户”:{
“组织”:“Org1”,
“联系”:{
“超时”:{
“同行”:{
“背书人”:“300”
}
}
}
},
“组织”:{
“Org1”:{
“mspid”:“Org1MSP”,
“同行”:[
“peer0.org1.example.com”,
“peer1.org1.example.com”,
“peer2.org1.example.com”
],
“认证机构”:[
“ca.org1.example.com”
]
}
},
“同行”:{
“peer0.org1.example.com”:{
“url”:“grpcs://:7051”,
“tlsCACerts”:{
“pem”:”
},
“grpcOptions”:{
“ssl目标名称覆盖”:“peer0.org1.example.com”,
“hostnameOverride”:“peer0.org1.example.com”
},
“背书人”:对,
“chaincodeQuery”:正确,
“账本查询”:正确,
“eventSource”:true
},
“peer1.org1.example.com”:{
“url”:“grpcs://:8051”,
“tlsCACerts”:{
“pem”:”
},
“grpcOptions”:{
“ssl目标名称覆盖”:“peer1.org1.example.com”,
“hostnameOverride”:“peer1.org1.example.com”
}
},
“peer2.org1.example.com”:{
“url”:“grpcs://:9051”,
“tlsCACerts”:{
“pem”:”
},
“grpcOptions”:{
“ssl目标名称覆盖”:“peer2.org1.example.com”,
“hostnameOverride”:“peer2.org1.example.com”
}
}
},
“认证机构”:{
“ca.org1.example.com”:{
“url”:“https://:7054”,
“迦南”:“ca-org1”,
“tlsCACerts”:{
“pem”:”
},
“httpOptions”:{
“验证”:false
}
}
}
}

如果您使用基于
结构工具
图像或类似工具的docker服务进行测试,请设置
核心对等地址
核心对等本地MSPID
核心对等ID
环境变量(在其他变量之间)

如果您正在使用SDK开发应用程序,请配置您的连接配置文件:

您通常在客户端应用程序中注册自己的用户。特权用户或服务注册该用户,然后您使用提供的凭据在应用程序中注册证书。对于基于
fabric tools
的docker服务,请配置
CORE\u PEER\u MSPCONFIGPATH
环境变量。对于使用SDK开发的客户端应用程序,请将您的私钥存储在钱包中()


对于GRPC,您需要组织的TLS CA证书<在docker客户端中的code>CORE\u PEER\u TLS\u ENABLED和
CORE\u PEER\u TLS\u ROOTCERT\u文件
变量或基于SDK的应用程序中的适当连接配置文件。

连接配置文件中。用于连接到网络的yml
文件只需使用
主机ip
更改
本地主机即可好的