首页 > 解决方案 > 无法在 AWS 上连接不同机器上的 Orderer 和 Peer 节点

问题描述

我正在尝试建立一个具有单个订购者和 3 个组织的网络,每个组织在 AWS 上都有一个具有 Hyperledger Fabric 版本 2 的对等节点。我可以使用 configtxgen 和以下命令成功地为订购者和通道配置事务生成创世块:

configtxgen -profile ThreeOrgsOrdererGenesis -channelID ordererchannel -outputBlock ./config/genesis.block

configtxgen -profile ChannelAll -outputCreateChannelTx ./config/channel.tx -channelID channelall

这是我的 configtx.yaml 文件:(这里的策略不是一个好的做法,只是在试验)

---
Organizations:

- &OrdererOrg
    Name: OrdererOrg
    ID: OrdererMSP
    MSPDir: ./crypto-config/ordererOrganizations/example.com/msp

    Policies:
      Readers:
          Type: Signature
          Rule: "OR('OrdererMSP.member')"
      Writers:
          Type: Signature
          Rule: "OR('OrdererMSP.member')"
      Admins:
          Type: Signature
          Rule: "OR('OrdererMSP.member')"

- &Org1
    Name: Org1MSP
    ID: Org1MSP
    MSPDir: ./crypto-config/peerOrganizations/org1.example.com/msp

    Policies:
      Readers:
          Type: Signature
          Rule: "OR('Org1MSP.member')"
      Writers:
          Type: Signature
          Rule: "OR('Org1MSP.member')"
      Admins:
          Type: Signature
          Rule: "OR('Org1MSP.member')"
      Endorsement:
          Type: Signature
          Rule: "OR('Org1MSP.member')"

- &Org2
    Name: Org2MSP
    ID: Org2MSP
    MSPDir: ./crypto-config/peerOrganizations/org2.example.com/msp

    Policies:
      Readers:
          Type: Signature
          Rule: "OR('Org2MSP.member')"
      Writers:
          Type: Signature
          Rule: "OR('Org2MSP.member')"
      Admins:
          Type: Signature
          Rule: "OR('Org2MSP.member')"
      Endorsement:
          Type: Signature
          Rule: "OR('Org2MSP.member')"

- &Org3
    Name: Org3MSP
    ID: Org3MSP
    MSPDir: ./crypto-config/peerOrganizations/org3.example.com/msp

    Policies:
      Readers:
          Type: Signature
          Rule: "OR('Org3MSP.member')"
      Writers:
          Type: Signature
          Rule: "OR('Org3MSP.member')"
      Admins:
          Type: Signature
          Rule: "OR('Org3MSP.member')"
      Endorsement:
          Type: Signature
          Rule: "OR('Org3MSP.member')"

Capabilities:

Channel: &ChannelCapabilities
    V1_3: true

Orderer: &OrdererCapabilities
    V1_1: true

Application: &ApplicationCapabilities
    V2_0: true
    V1_3: false
    V1_2: false
    V1_1: false

Application: &ApplicationDefaults

Organizations:

Policies:
    Readers:
        Type: ImplicitMeta
        Rule: "ANY Readers"
    Writers:
        Type: ImplicitMeta
        Rule: "ANY Writers"
    Admins:
        Type: ImplicitMeta
        Rule: "MAJORITY Admins"
    LifecycleEndorsement:
        Type: ImplicitMeta
        Rule: "MAJORITY Endorsement"
    Endorsement:
        Type: ImplicitMeta
        Rule: "MAJORITY Endorsement"

Capabilities:
    <<: *ApplicationCapabilities

Orderer: &OrdererDefaults

OrdererType: solo
Addresses:
    - orderer.example.com:7050
BatchTimeout: 2s
BatchSize:
    MaxMessageCount: 300
    AbsoluteMaxBytes: 99 MB
    PreferredMaxBytes: 512 KB
Kafka:
    Brokers:
        - 127.0.0.1:9092
Organizations:

Policies:
  Readers:
      Type: ImplicitMeta
      Rule: "ANY Readers"
  Writers:
      Type: ImplicitMeta
      Rule: "ANY Writers"
  Admins:
      Type: ImplicitMeta
      Rule: "MAJORITY Admins"

  BlockValidation:
      Type: ImplicitMeta
      Rule: "ANY Writers"

Channel: &ChannelDefaults

Policies:

    Readers:
        Type: ImplicitMeta
        Rule: "ANY Readers"

    Writers:
        Type: ImplicitMeta
        Rule: "ANY Writers"

    Admins:
        Type: ImplicitMeta
        Rule: "MAJORITY Admins"

Capabilities:
    <<: *ChannelCapabilities

Profiles:

ThreeOrgsOrdererGenesis:
    <<: *ChannelDefaults
    Orderer:
        <<: *OrdererDefaults
        Organizations:
            - *OrdererOrg
        Capabilities:
            <<: *OrdererCapabilities
    Consortiums:
        SampleConsortium:
            Organizations:
                - *Org1
                - *Org2
                - *Org3
ChannelAll:
    Consortium: SampleConsortium
    <<: *ChannelDefaults
    Application:
        <<: *ApplicationDefaults
        Organizations:
            - *Org1
            - *Org2
            - *Org3
        Capabilities:
            <<: *ApplicationCapabilities

当我加入peer1我创建的频道时,我在订购者的 docker 日志中收到以下警告:

Handle -> WARN 008 Error reading from 172.31.19.174:35362: rpc error: code = Canceled desc = context canceled

起初,我只是忽略了这个警告,并将其他节点加入了频道。但是,我无法使用使用 Fabric Node SDK 的客户端程序连接到区块链,所以我相信这是问题的根本原因。

标签: hyperledger-fabrichyperledger

解决方案


我注意到你使用

configtxgen -profile OneOrgOrdererGenesis

而在您configtx.yaml的个人资料部分中是ThreeOrgsOrdererGenesis.

也许您应该尝试使用以下命令生成加密文件:

configtxgen -profile ThreeOrgsOrdererGenesis -channelID ordererchannel -outputBlock ./config/genesis.block

configtxgen -profile ChannelAll -outputCreateChannelTx ./config/channel.tx -channelID channelall


推荐阅读