【问题标题】:Hyperledger Fabric Node.js client application deployed on different server部署在不同服务器上的 Hyperledger Fabric Node.js 客户端应用程序
【发布时间】:2020-03-10 17:31:09
【问题描述】:

我在使用 Node.js Hyperledger Fabric 客户端库来解决这个特定错误:

我的区块链网络(Hyperledger Fabric 1.4)部署在一台服务器上,IP 和所有需要的端口都可以从另一台服务器看到。文档中提供的所有示例/示例均通过 localhost 引用网络。

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

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

还有,如何启动应用程序并连接到例如如果调用 createPeer 方法时需要 .pem 证书文件,则通过 GRCPS 订购?

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

编辑,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
            }
        }
    }
}

【问题讨论】:

    标签: hyperledger-fabric hyperledger hyperledger-fabric-ca hyperledger-fabric-sdk-js


    【解决方案1】:

    如果您使用基于fabric-tools 图像或类似图像的docker 服务进行测试,请设置CORE_PEER_ADDRESSCORE_PEER_LOCALMSPIDCORE_PEER_ID 环境变量(在其他之间)。

    如果您使用 SDK 开发应用程序,请配置您的连接配置文件:https://hyperledger-fabric.readthedocs.io/en/release-1.4/developapps/connectionprofile.html

    您通常在客户端应用程序中注册自己的用户。特权用户或服务注册用户,然后您使用提供的凭据在您的应用程序中注册证书。对于基于fabric-tools的docker服务,配置CORE_PEER_MSPCONFIGPATH环境变量。对于使用 SDK 开发的客户端应用,请将您的私钥存储在钱包中 (https://hyperledger-fabric.readthedocs.io/en/release-1.4/developapps/wallet.html)。

    对于 GRCS,您需要组织的 TLS CA 证书。 CORE_PEER_TLS_ENABLEDCORE_PEER_TLS_ROOTCERT_FILE docker 客户端中的变量或基于 SDK 的应用程序中的合适连接配置文件。

    【讨论】:

      【解决方案2】:

      在用于连接网络的connection-profile.yml 文件中,只需将localhost 更改为host_ip 即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-18
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 2018-02-10
        • 2020-07-10
        • 2019-02-13
        相关资源
        最近更新 更多