【问题标题】:Port error when setting up Dev mode of Hyperledger Fabric设置 Hyperledger Fabric 的开发模式时出现端口错误
【发布时间】:2020-12-21 03:33:51
【问题描述】:

我正在按照 Hyperledger Fabric 官网的说明搭建开发环境: https://hyperledger-fabric.readthedocs.io/en/latest/peer-chaincode-devmode.html 我已成功使用以下命令启动排序器:

ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo orderer

这个命令一开始不起作用,但在我cd fabric/sampleconfig之后它起作用了

2020-12-21 11:23:15.084 CST [orderer.common.server] Main -> INFO 009 Starting orderer:  Version: 2.3.0  Commit SHA: dc2e59b3c  Go version: go1.15.6  OS/Arch: darwin/amd64 
2020-12-21 11:23:15.084 CST [orderer.common.server] Main -> INFO 00a Beginning to serve requests

但是当我使用:

export PATH=$(pwd)/build/bin:$PATH 
export FABRIC_CFG_PATH=$(pwd)/sampleconfig
export FABRIC_LOGGING_SPEC=chaincode=debug
export CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
peer node start --peer-chaincodedev=true

发现一个错误:

FABRIC_LOGGING_SPEC=chaincode=debug 
CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
peer node start --peer-chaincodedev=true

2020-12-21 11:25:13.047 CST [nodeCmd] serve -> INFO 001 Starting peer:  Version: 2.3.0 Commit SHA: dc2e59b3c Go version: go1.15.6 OS/Arch: darwin/amd64 Chaincode: Base Docker Label: org.hyperledger.fabric   Docker Namespace: hyperledger
2020-12-21 11:25:13.048 CST [peer] getLocalAddress -> INFO 002 Auto-detected peer address: 10.200.83.208:7051 
2020-12-21 11:25:13.048 CST [peer] getLocalAddress -> INFO 003 Host is 0.0.0.0 , falling back to auto-detected address: 10.200.83.208:7051  Error: failed to initialize operations subsystem: listen tcp 127.0.0.1:9443: bind: address already in use

这是错误:

Error: failed to initialize operations subsystem: listen tcp 127.0.0.1:9443: bind: address already in use

我检查了这个问题,这似乎是因为对等节点使用相同的端口 9443 作为同一服务的排序节点。如何让两个节点分别运行?看来 docker 也在运行。

【问题讨论】:

    标签: docker hyperledger-fabric dev-mode


    【解决方案1】:

    如果您发现错误,可以轻松关注
    Error: failed to initialize operations subsystem: listen tcp 127.0.0.1:9443: bind: address already in use
    据说9443端口已经在使用中了。


    您似乎没有在基于 docker 的虚拟网络上将 orderer 和 peer 作为单独的容器运行,而是在主机 pc 上运行。
    这最终似乎与请求您电脑上的一个端口 9443 的两台服务器发生冲突。\


    参考下面fabric-2.3/sampleconfig的配置,可以看到每个9443端口都分配给了服务器。将其中一个分配给另一个端口可以解决此问题。

    fabric-2.3/sampleconfig/orderer.yaml

    orderer的配置

    # orderer.yaml
    ...
    Admin:
        # host and port for the admin server
        ListenAddress: 127.0.0.1:9443
    ...
    

    fabric-2.3/sampleconfig/core.yaml

    对等体的配置

    # core.yaml
    ...
    operations:
        # host and port for the operations server
        # listenAddress: 127.0.0.1:9443
        listenAddress: 127.0.0.1:10443
    ...
    

    【讨论】:

    • 是的,它有效。谢谢你。但是其他端口也会发生冲突。你知道如何在两个 docker 容器中运行 orderer 和 peer 进程吗?感谢您的帮助。
    • 在处理多个容器时,建议通过docker-compose搭建网络。 Fabric也一样,如果是通过容器构建,只需要考虑主机PC上的端口冲突和不同的网络拓扑。在此处查看面料的官方样品。 fabric-samples/docker-compose-test-net.yaml
    • 真的很有帮助。非常感谢!
    【解决方案2】:

    这不是端口映射/冲突问题的直接答案,但我们使用新的Kubernetes Test Network 作为在本地系统上运行的开发平台以及在 KIND 中运行的虚拟 Kubernetes 集群(Kubernetes in码头工人)。

    在这种模式下,可以使用网关客户端(通过端口转发或入口公开)开发应用程序,并且可以在集群中启动作为服务运行的智能合约,也可以在容器中的本地主机操作系统上运行,二进制文件,或在调试器中启动。

    development setup 的文档仍然很少,但我们很想听听有关整体方法的反馈,因为它为在开发环境中使用测试网络提供了指数级更好的体验。通常,在本地 Kubernetes 集群上工作时,使用 Compose 进行“端口杂耍”的过程不再相关。在这种模式下,您可以在主机网络上运行服务,指示 peers/orderers/等。连接到在主机操作系统上运行的远程进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多