首页 文章

针对第一网络示例的Hyperledger结构多主机设置

提问于
浏览
1

我正在尝试使用以下配置的docker swarm在Multihost环境中设置第一个网络示例,以便开始:

HOST1

  • Orderer

  • Org1-pee0

  • Org1-peer1

  • CLI

HOST2

  • Org2-pee0

  • Org2-pee1

我只更改了docker-compose-cli.yaml以使其与swarm兼容(下面给出的代码) . I am not able to add the Host2 / Org2 peers to channel .

按顺序执行以下步骤:

  • byfn -m generate

  • docker stack deploy --compose-file docker-compose-cli.yaml overnet

  • 进入CLI泊坞窗并执行./scripts/script.sh mychannel

我一直得到以下错误

2017-08-15 02:42:49.512 UTC [msp] GetDefaultSigningIdentity - > DEBU 006获取默认签名身份错误:获取代言客户端通道时出错:PER:404 - 尝试连接到本地对等/ / opt / gopath / src /时出错github.com/hyperledger/fabric/peer/common/common.go:116 github.com/hyperledger/fabric/peer/common.GetEndorserClient /opt/gopath/src/github.com/hyperledger/fabric/peer/channel/channel . 去:149 github.com/hyperledger/fabric/peer/channel.InitCmdFactory /opt/gopath/src/github.com/hyperledger/fabric/peer/channel/join.go:138 github.com/hyperledger/fabric/peer /channel.join /opt/gopath/src/github.com/hyperledger/fabric/peer/channel/join.go:42 github.com/hyperledger/fabric/peer/channel.joinCmd.func1的/ opt / GOPATH / src目录/ github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:599 github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).execute的/ opt / gopath / src / github.com / hyperledger / fabric / vendor / github.com / spf13 / cobra / command.go:689 github.com/hyperledger/fab RIC /供应商/ github.com / spf13 /眼镜蛇 . (命令).ExecuteC /opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:648 github上 . com / hyperledger / fabric / vendor / github.com / spf13 / cobra . ( Command).Execute /opt/gopath/src/github.com/hyperledger/fabric/peer/main.go:118 main.main / opt / go / src / runtime / proc.go:192 runtime.main /opt/go/src/runtime/asm_amd64.s:2087 runtime.goexit引起:x509:证书对peer0.org1.example.com,peer0有效,不是peer0.org2.example.com

搬运工-撰写-cli.yaml

订货人

version: '3'
networks:
  overnet:

services:

  orderer_example_com:
    image: hyperledger/fabric-orderer
    environment:
      - ORDERER_GENERAL_LOGLEVEL=debug
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: orderer
    volumes:
    - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
    - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
    - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
    ports:
      - 7050:7050
#      - 7049:7049
    networks:
      - overnet
    deploy:
       replicas: 1
       placement:
          constraints: [node.role == manager]

Org1同行

peer0_org1_example_com:
    image: hyperledger/fabric-peer
    volumes:
        - /var/run/:/host/var/run/
        - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
        - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 7051:7051
      - 7053:7053
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=overnet
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    networks:
      - overnet
    deploy:
       replicas: 1
       placement:
          constraints: [node.role == manager]

Org2同行

peer0_org2_example_com:
    image: hyperledger/fabric-peer
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=overnet
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
        - /var/run/:/host/var/run/
        - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 9051:7051
      - 9053:7053
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    networks:
      - overnet
    deploy:
       mode: replicated
       replicas: 1
       placement:
          constraints: [node.role == worker]

CLI

cli:
    image: hyperledger/fabric-tools
    tty: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_ID=cli
      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org4.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
#    command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'
    volumes:
        - /var/run/:/host/var/run/
        - ./chaincode/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go
        - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
        - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
        - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    depends_on:
      - orderer_example_com
      - peer0_org1_example_com
      - peer1_org1_example_com
      - peer0_org2_example_com
      - peer1_org2_example_com
    networks:
      - overnet
    deploy:
       replicas: 1
       placement:
          constraints: [node.role == manager]

crypto-config.yaml (Did not make any changes this file, however attaching here for reference)

OrdererOrgs:
  # ------------------------------------------------------------------
  # Orderer
  # ------------------------------------------------------------------ 

  - Name: Orderer
    Domain: example.com
    # ----------------------------------------------------------------
    # "Specs" - See PeerOrgs below for complete description
    # ----------------------------------------------------------------
    Specs:
      - Hostname: orderer
# --------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# --------------------------------------------------------------------
PeerOrgs:
# ------------------------------------------------------------------
  # Org1
  # ------------------------------------------------------------------
  - Name: Org1
    Domain: org1.example.com
    # ----------------------------------------------------------------
    # "Specs"
    # ----------------------------------------------------------------
    # Uncomment this section to enable the explicit definition of hosts in your
# configuration.  Most users will want to use Template, below
#
# Specs is an array of Spec entries.  Each Spec entry consists of two fields:
#   - Hostname:   (Required) The desired hostname, sans the domain.
#   - CommonName: (Optional) Specifies the template or explicit override for
#                 the CN.  By default, this is the template:
#
#                              "{{.Hostname}}.{{.Domain}}"
#
#                 which obtains its values from the Spec.Hostname and
#                 Org.Domain, respectively.
# ---------------------------------------------------------------------------
# Specs:
#   - Hostname: foo # implicitly "foo.org2.example.com"
#     CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above
#   - Hostname: bar
#   - Hostname: baz
# ---------------------------------------------------------------------------
# "Template"
# ---------------------------------------------------------------------------
# Allows for the definition of 1 or more hosts that are created sequentially
# from a template. By default, this looks like "peer%d" from 0 to Count-1.
# You may override the number of nodes (Count), the starting index (Start)
# or the template used to construct the name (Hostname).
#
# Note: Template and Specs are not mutually exclusive.  You may define both
# sections and the aggregate nodes will be created for you.  Take care with
# name collisions
# ---------------------------------------------------------------------------
Template:
  Count: 2
  # Start: 5
  # Hostname: {{.Prefix}}{{.Index}} # default
# ---------------------------------------------------------------------------
# "Users"
# ---------------------------------------------------------------------------
# Count: The number of user accounts _in addition_ to Admin
# ---------------------------------------------------------------------------
Users:
  Count: 1
  # ------------------------------------------------------------------
  # Org2: See "Org1" for full specification
  # ------------------------------------------------------------------
  - Name: Org2
    Domain: org2.example.com
    Template:
      Count: 2
    Users:
      Count: 1

3 回答

  • 1

    我能够使用docker swarm模式在多台机器上托管超级分层结构网络 . Swarm模式提供跨多个主机/机器的网络,用于结构网络组件的通信 .

    这篇文章解释了部署过程 . 它创建了一个群网络,所有其他机器都加入了网络 . https://medium.com/@wahabjawed/hyperledger-fabric-on-multiple-hosts-a33b08ef24f

  • 0

    首先,我认为你不必这样做

    进入CLI docker并执行./scripts/script.sh mychannel

    或者你评论过docker compose文件,就像在“Start the network”步骤中描述的那样?

    另一方面,我告诉您,我已经实现了使用docker设置Multihost环境 . 但是,我没有定义网络覆盖,而是为我要启动的所有docker容器定义了 network_mode: host .

    你能否显示出现在Peer和Orderer中的日志?

  • 0

    我已经设置了Fabric网络的mutlihost设置 . 我的orderer和一个对等体在一个主机上,一个对等体在第二个主机上 . 为此,我们需要在orderer部分的configtx.yml文件中进行更改:

    Profiles:
        CommonOrgsOrdererGenesis:
            Orderer:
                <<: *OrdererDefaults
                Organizations:
                    - *OrdererOrg
            Consortiums:
                SampleConsortiumJA:
                    Organizations:
                        - *test
                        - *mch
                        - *test2
                        - *test3
        CommonOrgChannel:
            Consortium: SampleConsortiumJA
            Application:
                <<: *ApplicationDefaults
                Organizations:
                    - *test
                    - *mch
                    - *test2
                    - *test3    
        MJAOrgsOrdererGenesis:
            Orderer:
                <<: *OrdererDefaults
                Organizations:
                    - *OrdererOrg
            Consortiums:
                SampleConsortiumJA:
                    Organizations:
                        - *test
                        - *mch
                        - *test2
        MJAOrgChannel:
            Consortium: SampleConsortiumJA
            Application:
                <<: *ApplicationDefaults
                Organizations:
                    - *test
                    - *mch
                    - *test2
        MABOrgsOrdererGenesis:
            Orderer:
                <<: *OrdererDefaults
                Organizations:
                    - *OrdererOrg
            Consortiums:
                SampleConsortiumAB:
                    Organizations:
                        - *test2
                        - *mch
                        - *test3
        MABOrgChannel:
            Consortium: SampleConsortiumAB
            Application:
                <<: *ApplicationDefaults
                Organizations:
                    - *test
                    - *mch
                    - *test3
        MBJOrgsOrdererGenesis:
            Orderer:
                <<: *OrdererDefaults
                Organizations:
                    - *OrdererOrg
            Consortiums:
                SampleConsortiumBJ:
                    Organizations:
                        - *test3
                        - *mch
                        - *test
        MBJOrgChannel:
            Consortium: SampleConsortiumBJ
            Application:
                <<: *ApplicationDefaults
                Organizations:
                    - *test3
                    - *mch
                    - *test
    
    
    Organizations:
    
        - &OrdererOrg
    
            Name: OrdererOrg
    
            # ID to load the MSP definition as
            ID: OrdererMSP
    
            MSPDir: crypto-config/ordererOrganizations/mch.test/msp
    
        - &test
              Name: test
    
            # ID to load the MSP definition as
            ID: testMSP
    
            MSPDir: crypto-config/peerOrganizations/test.test/msp
    
            AnchorPeers:
    
                - Host: peer0.test.test
                  Port: 7054
        - &airtel
            # DefaultOrg defines the organization which is used in the sampleconfig
            # of the fabric.git development environment
            Name: airtel
    
            # ID to load the MSP definition as
            ID: test2MSP
    
            MSPDir: crypto-config/peerOrganizations/test2.test/msp
    
            Anc
                - Host: peer0.test2.test
                  Port: 7055
        - &bsnl
            # DefaultOrg defines the organization which is used in the sampleconfig
            # of the fabric.git development environment
            Name: test3
    
            # ID to load the MSP definition as
            ID: test3MSP
    
            MSPDir: crypto-config/peerOrganizations/test3.test/msp
    
            AnchorPeers:
                     - Host: peer0.test3.test
                  Port: 7059
        - &mch
    
            Name: mch
    
            # ID to load the MSP definition as
            ID: mchMSP
    
            MSPDir: crypto-config/peerOrganizations/mch.test/msp
    
            AnchorPeers:
                 - Host: peer0.mch.test
                  Port: 7051          
    
    Orderer: &OrdererDefaults
    
        OrdererType: solo
    
        Addresses:
            - 10.64.253.213:7050
    
        # Batch Timeout: The amount of time to wait before creating a batch
        BatchTimeout: 2s
    
        # Batch Size: Controls the number of messages batched into a block
        BatchSize:
    
            MaxMessageCount: 10
    
    
            AbsoluteMaxBytes: 99 MB
    
    
            PreferredMaxBytes: 512 KB
    
        Kafka:
    
            Brokers:
                - 127.0.0.1:9092
    
    
        Organizations:
    
    
    Application: &ApplicationDefaults
    
        Organizations:
    
    ===============================================================
    
    
    after this pull up the orderer and peer1 on one server and peer2 on different server. Create channel using IP of orderer instead of name then copy the channel file to other peer also and join both peers one at a time. Install chaincode on two peers. You are good to go.
    

相关问题