hyperledger caliper with multi-host deployment using docker-swarm

huangapple go评论50阅读模式
英文:

hyperledger caliper with multi-host deployment using docker-swarm

问题

I have trouble in executing chaincode such as fabcar, smallbank, etc...
I am working with two servers.
The first server has 1 org (2 peers), 2 orderers, and a CLI.
The second server has 1 org (2 peers) and 1 orderer.

Below is a crypto-config.yaml file:

OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    EnableNodeOUs: true
    Specs:
      - Hostname: orderer
        SANS:
          - localhost
          - 127.0.0.1
          - orderer.example.com
      - Hostname: orderer1
        SANS:
          - localhost
          - 127.0.0.1
          - orderer1.example.com
      - Hostname: orderer2
        SANS:
          - localhost
          - 127.0.0.1
          - orderer2.example.com

PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
      SANS:
        - localhost
        - 127.0.0.1
        - "{{.Hostname}}.org1.example.com"
    Users:
      Count: 1
  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
      SANS:
        - localhost
        - 127.0.0.1
        - "{{.Hostname}}.org2.example.com"
    Users:
      Count: 1

Below is a configtx.yaml file:

Organizations:
  - &OrdererOrg
    Name: OrdererOrg
    ID: OrdererMSP
    MSPDir: ../organizations/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.admin')"
    OrdererEndpoints:
      - orderer.example.com:7050
      - orderer1.example.com:8050
      - orderer2.example.com:9050

  - &Org1
    Name: Org1MSP
    ID: Org1MSP
    MSPDir: ../organizations/peerOrganizations/org1.example.com/msp
    Policies:
      Readers:
        Type: Signature
        Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
      Writers:
        Type: Signature
        Rule: "OR('Org1MSP.admin', 'Org1MSP.client')"
      Admins:
        Type: Signature
        Rule: "OR('Org1MSP.admin')"
      Endorsement:
        Type: Signature
        Rule: "OR('Org1MSP.peer')"
    AnchorPeers:
      - Host: peer0.org1.example.com
        Port: 7051

  - &Org2
    Name: Org2MSP
    ID: Org2MSP
    MSPDir: ../organizations/peerOrganizations/org2.example.com/msp
    Policies:
      Readers:
        Type: Signature
        Rule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"
      Writers:
        Type: Signature
        Rule: "OR('Org2MSP.admin', 'Org2MSP.client')"
      Admins:
        Type: Signature
        Rule: "OR('Org2MSP.admin')"
      Endorsement:
        Type: Signature
        Rule: "OR('Org2MSP.peer')"
    AnchorPeers:
      - Host: peer0.org2.example.com
        Port: 9051

Capabilities:
  Channel:
    V2_0: true
  Orderer:
    V2_0: true
  Application:
    V2_0: true

Application:
  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"

Orderer:
  OrdererType: etcdraft
  Addresses:
    - orderer.example.com:7050
    - orderer1.example.com:8050
    - orderer2.example.com:9050
  EtcdRaft:
    Consenters:
      - Host: orderer.example.com
        Port: 7050
       

<details>
<summary>英文:</summary>

i have trouble in executing chaincode such as fabcar, smallbank, etc... 
i am working with two servers.
First server has 1org(2peers), 2orderers, cli.
second server has 1org(2peers), 1orderer.

below is a crypto-config.yaml file

Copyright IBM Corp. All Rights Reserved.

SPDX-License-Identifier: Apache-2.0

---------------------------------------------------------------------------

"OrdererOrgs" - Definition of organizations managing orderer nodes

---------------------------------------------------------------------------

OrdererOrgs:

---------------------------------------------------------------------------

Orderer

---------------------------------------------------------------------------

  • Name: Orderer
    Domain: example.com
    EnableNodeOUs: true

    ---------------------------------------------------------------------------

    "Specs" - See PeerOrgs for complete description

    ---------------------------------------------------------------------------

    Specs:

    • Hostname: orderer
      SANS:

      • localhost
      • 127.0.0.1
      • orderer.example.com
    • Hostname: orderer1
      SANS:

      • localhost
      • 127.0.0.1
      • orderer1.example.com
    • Hostname: orderer2
      SANS:

      • localhost
      • 127.0.0.1
      • orderer2.example.com

---------------------------------------------------------------------------

"PeerOrgs" - Definition of organizations managing peer nodes

---------------------------------------------------------------------------

PeerOrgs:

---------------------------------------------------------------------------

Org1

---------------------------------------------------------------------------

  • Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: true
    Template:
    Count: 2
    SANS:
    - localhost
    - 127.0.0.1
    - "{{.Hostname}}.org1.example.com"

    Start: 5

    Hostname: {{.Prefix}}{{.Index}} # default

    ---------------------------------------------------------------------------

    "Users"

    ---------------------------------------------------------------------------

    Count: The number of user accounts in addition to Admin

    ---------------------------------------------------------------------------

    Users:
    Count: 1

---------------------------------------------------------------------------

"PeerOrgs" - Definition of organizations managing peer nodes

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Org2

---------------------------------------------------------------------------

  • Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
    Count: 2
    SANS:
    - localhost
    - 127.0.0.1
    - "{{.Hostname}}.org2.example.com"

    Start: 5

    Hostname: {{.Prefix}}{{.Index}} # default

    ---------------------------------------------------------------------------

    "Users"

    ---------------------------------------------------------------------------

    Count: The number of user accounts in addition to Admin

    ---------------------------------------------------------------------------

    Users:
    Count: 1


below is a configtx.yaml file.

Copyright IBM Corp. All Rights Reserved.

SPDX-License-Identifier: Apache-2.0

3orgs test


################################################################################

Section: Organizations

- This section defines the different organizational identities which will

be referenced later in the configuration.

################################################################################
Organizations:

# SampleOrg defines an MSP using the sampleconfig.  It should never be used
# in production but may be used as a template for other definitions
- &amp;OrdererOrg
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: OrdererOrg
# ID to load the MSP definition as
ID: OrdererMSP
# MSPDir is the filesystem path which contains the MSP configuration
MSPDir: ../organizations/ordererOrganizations/example.com/msp
# Policies defines the set of policies at this level of the config tree
# For organization policies, their canonical path is usually
#   /Channel/&lt;Application|Orderer&gt;/&lt;OrgName&gt;/&lt;PolicyName&gt;
Policies:
Readers:
Type: Signature
Rule: &quot;OR(&#39;OrdererMSP.member&#39;)&quot;
Writers:
Type: Signature
Rule: &quot;OR(&#39;OrdererMSP.member&#39;)&quot;
Admins:
Type: Signature
Rule: &quot;OR(&#39;OrdererMSP.admin&#39;)&quot;
OrdererEndpoints:
- orderer.example.com:7050
- orderer1.example.com:8050
- orderer2.example.com:9050
# 230118
- &amp;Org1
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org1MSP
# ID to load the MSP definition as
ID: Org1MSP
MSPDir: ../organizations/peerOrganizations/org1.example.com/msp
# Policies defines the set of policies at this level of the config tree
# For organization policies, their canonical path is usually
#   /Channel/&lt;Application|Orderer&gt;/&lt;OrgName&gt;/&lt;PolicyName&gt;
Policies:
Readers:
Type: Signature
Rule: &quot;OR(&#39;Org1MSP.admin&#39;, &#39;Org1MSP.peer&#39;, &#39;Org1MSP.client&#39;)&quot;
Writers:
Type: Signature
Rule: &quot;OR(&#39;Org1MSP.admin&#39;, &#39;Org1MSP.client&#39;)&quot;
Admins:
Type: Signature
Rule: &quot;OR(&#39;Org1MSP.admin&#39;)&quot;
Endorsement:
Type: Signature
Rule: &quot;OR(&#39;Org1MSP.peer&#39;)&quot;
# leave this flag set to true.
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication.  Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org1.example.com
Port: 7051                
- &amp;Org2
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org2MSP
# ID to load the MSP definition as
ID: Org2MSP
MSPDir: ../organizations/peerOrganizations/org2.example.com/msp
# Policies defines the set of policies at this level of the config tree
# For organization policies, their canonical path is usually
#   /Channel/&lt;Application|Orderer&gt;/&lt;OrgName&gt;/&lt;PolicyName&gt;
Policies:
Readers:
Type: Signature
Rule: &quot;OR(&#39;Org2MSP.admin&#39;, &#39;Org2MSP.peer&#39;, &#39;Org2MSP.client&#39;)&quot;
Writers:
Type: Signature
Rule: &quot;OR(&#39;Org2MSP.admin&#39;, &#39;Org2MSP.client&#39;)&quot;
Admins:
Type: Signature
Rule: &quot;OR(&#39;Org2MSP.admin&#39;)&quot;
Endorsement:
Type: Signature
Rule: &quot;OR(&#39;Org2MSP.peer&#39;)&quot;
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication.  Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org2.example.com
Port: 9051

Capabilities:
# Channel capabilities apply to both the orderers and the peers and must be
# supported by both.
# Set the value of the capability to true to require it.
Channel: &ChannelCapabilities
V2_0: true

# Orderer capabilities apply only to the orderers, and may be safely
# used with prior release peers.
# Set the value of the capability to true to require it.
Orderer: &amp;OrdererCapabilities
V2_0: true
# Application capabilities apply only to the peer network, and may be safely
# used with prior release orderers.
# Set the value of the capability to true to require it.
Application: &amp;ApplicationCapabilities
V2_0: true

Application: &ApplicationDefaults

# Organizations is the list of orgs which are defined as participants on
# the application side of the network
Organizations:
# Policies defines the set of policies at this level of the config tree
# For Application policies, their canonical path is
#   /Channel/Application/&lt;PolicyName&gt;
Policies:
Readers:
Type: ImplicitMeta
Rule: &quot;ANY Readers&quot;
Writers:
Type: ImplicitMeta
Rule: &quot;ANY Writers&quot;
Admins:
Type: ImplicitMeta
Rule: &quot;MAJORITY Admins&quot;
LifecycleEndorsement:
Type: ImplicitMeta
Rule: &quot;MAJORITY Endorsement&quot;
Endorsement:
Type: ImplicitMeta
Rule: &quot;MAJORITY Endorsement&quot;
Capabilities:
&lt;&lt;: *ApplicationCapabilities

################################################################################

SECTION: Orderer

- This section defines the values to encode into a config transaction or

genesis block for orderer related parameters

################################################################################
Orderer: &OrdererDefaults

# Orderer Type: The orderer implementation to start
OrdererType: etcdraft
Addresses:
- orderer.example.com:7050
- orderer1.example.com:8050
- orderer2.example.com:9050
EtcdRaft:
Consenters:
- Host: orderer.example.com
Port: 7050
ClientTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
ServerTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
- Host: orderer1.example.com
Port: 8050
ClientTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt
ServerTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt
- Host: orderer2.example.com
Port: 9050
ClientTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
ServerTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
# 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
Organizations:
Policies:
Readers:
Type: ImplicitMeta
Rule: &quot;ANY Readers&quot;
Writers:
Type: ImplicitMeta
Rule: &quot;ANY Writers&quot;
Admins:
Type: ImplicitMeta
Rule: &quot;MAJORITY Admins&quot;
BlockValidation:
Type: ImplicitMeta
Rule: &quot;ANY Writers&quot;

Channel: &ChannelDefaults
Policies:
# Who may invoke the 'Deliver' API
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
# Who may invoke the 'Broadcast' API
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
# By default, who may modify elements at this config level
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"

Capabilities:
&lt;&lt;: *ChannelCapabilities

Profiles:

TwoOrgsOrdererGenesis:
&lt;&lt;: *ChannelDefaults
Orderer:
&lt;&lt;: *OrdererDefaults
Organizations:
- *OrdererOrg
Capabilities:
&lt;&lt;: *OrdererCapabilities
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
TwoOrgsChannel:
Consortium: SampleConsortium
&lt;&lt;: *ChannelDefaults
Application:
&lt;&lt;: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
&lt;&lt;: *ApplicationCapabilities

below is a docker-compose.yaml file which i run at the first server(host1)

Copyright IBM Corp. All Rights Reserved.

SPDX-License-Identifier: Apache-2.0

version: '3.7'
#version: '2'

volumes:
orderer.example.com:
orderer1.example.com:
peer0.org1.example.com:
peer1.org1.example.com:

networks:
test:
external:
name: testnet

services:

orderer.example.com:
container_name: orderer.example.com
image: hyperledger/fabric-orderer:2.2.5
environment:
- FABRIC_LOGGING_SPEC=INFO
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_LISTENPORT=7050
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:17050
# 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]
- ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1
- ORDERER_KAFKA_VERBOSE=true
- ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
command: orderer
volumes:
- ../system-genesis-block/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
- orderer.example.com:/var/hyperledger/production/orderer
ports:
- 7050:7050
networks:
- test

orderer1.example.com:
container_name: orderer1.example.com
image: hyperledger/fabric-orderer:2.2.5
environment:
- FABRIC_LOGGING_SPEC=INFO
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_LISTENPORT=8050
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:18050
# 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]
- ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1
- ORDERER_KAFKA_VERBOSE=true
- ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
command: orderer
volumes:
- ../system-genesis-block/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ../organizations/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/var/hyperledger/orderer/msp
- ../organizations/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/var/hyperledger/orderer/tls
- orderer1.example.com:/var/hyperledger/production/orderer
ports:
- 8050:8050
networks:
- test

#peer0.org1

peer0.org1.example.com:
container_name: peer0.org1.example.com
image: hyperledger/fabric-peer:2.2.5
environment:
#Generic peer variables
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=testnet
- FABRIC_LOGGING_SPEC=INFO
#- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_TLS_ENABLED=true
- 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
# Peer specific variabes
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_LISTENADDRESS=0.0.0.0:7051
- CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:17051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:17051
volumes:
- /var/run/docker.sock:/host/var/run/docker.sock
- ../organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ../organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
- peer0.org1.example.com:/var/hyperledger/production
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
ports:
- 7051:7051
networks:
- test

#peer1.org1

peer1.org1.example.com:
container_name: peer1.org1.example.com
image: hyperledger/fabric-peer:2.2.5
environment:
#Generic peer variables
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=testnet
- FABRIC_LOGGING_SPEC=INFO
#- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_TLS_ENABLED=true
- 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
# Peer specific variabes
- CORE_PEER_ID=peer1.org1.example.com
- CORE_PEER_ADDRESS=peer1.org1.example.com:17051
- CORE_PEER_LISTENADDRESS=0.0.0.0:17051
- CORE_PEER_CHAINCODEADDRESS=peer1.org1.example.com:17052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:17052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:17051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:7051
volumes:
- /var/run/docker.sock:/host/var/run/docker.sock
- ../organizations/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ../organizations/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
- peer1.org1.example.com:/var/hyperledger/production
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
ports:
- 17051:17051
networks:
- test

cli:
container_name: cli
image: hyperledger/fabric-tools:2.2.5
tty: true
stdin_open: true
environment:
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- FABRIC_LOGGING_SPEC=INFO
#- FABRIC_LOGGING_SPEC=DEBUG
- SYS_CHANNEL=$SYS_CHANNEL
- CORE_PEER_ID=cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: /bin/bash
volumes:
- /var/run/:/host/var/run/
- ../organizations:/opt/gopath/src/github.com/hyperledger/fabric/peer/organizations
- ../channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
- ../caliper-benchmarks:/opt/gopath/src/github.com/hyperledger/fabric/peer/caliper-benchmarks
depends_on:
- peer0.org1.example.com
- peer1.org1.example.com
- orderer.example.com
networks:
- test


below is a docker-compose.yaml file which i run at the second server(host2)

Copyright IBM Corp. All Rights Reserved.

SPDX-License-Identifier: Apache-2.0

version: '3.7'
#version: '2'

volumes:
orderer2.example.com:
peer0.org2.example.com:
peer1.org2.example.com:

networks:
test:
external:
name: testnet

services:

orderer2.example.com:
container_name: orderer2.example.com
image: hyperledger/fabric-orderer:2.2.5
environment:
- FABRIC_LOGGING_SPEC=INFO
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_LISTENPORT=9050
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:19050
# 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]
- ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1
- ORDERER_KAFKA_VERBOSE=true
- ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
working_dir: /opt/gopath/src/github.com/hyperledger/fabric
command: orderer
volumes:
- ../system-genesis-block/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ../organizations/ordererOrganizations/example.com/orderers/orderer2.example.com/msp:/var/hyperledger/orderer/msp
- ../organizations/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/:/var/hyperledger/orderer/tls
- orderer2.example.com:/var/hyperledger/production/orderer
extra_hosts:
- orderer2.example.com:163.152.20.172
ports:
- 9050:9050
networks:
- test

#peer0.org2

peer0.org2.example.com:
container_name: peer0.org2.example.com
image: hyperledger/fabric-peer:2.2.5
environment:
#Generic peer variables
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=testnet
- FABRIC_LOGGING_SPEC=INFO
#- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_TLS_ENABLED=true
- 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
# Peer specific variabes
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:9051
- CORE_PEER_LISTENADDRESS=0.0.0.0:9051
- CORE_PEER_CHAINCODEADDRESS=peer0.org2.example.com:9052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:9051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:19051
- CORE_PEER_LOCALMSPID=Org2MSP
- CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:19051
volumes:
- /var/run/docker.sock:/host/var/run/docker.sock
- ../organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ../organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
- peer0.org2.example.com:/var/hyperledger/production
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
extra_hosts:
- peer0.org2.example.com:163.152.20.172
ports:
- 9051:9051
networks:
- test

#peer1.org2

peer1.org2.example.com:
container_name: peer1.org2.example.com
image: hyperledger/fabric-peer:2.2.5
environment:
#Generic peer variables
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=testnet
- FABRIC_LOGGING_SPEC=INFO
#- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_TLS_ENABLED=true
- 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
# Peer specific variabes
- CORE_PEER_ID=peer1.org2.example.com
- CORE_PEER_ADDRESS=peer1.org2.example.com:19051
- CORE_PEER_LISTENADDRESS=0.0.0.0:19051
- CORE_PEER_CHAINCODEADDRESS=peer1.org2.example.com:19052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:19052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:19051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:9051
- CORE_PEER_LOCALMSPID=Org2MSP
- CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9051
volumes:
- /var/run/docker.sock:/host/var/run/docker.sock
- ../organizations/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ../organizations/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
- peer1.org2.example.com:/var/hyperledger/production
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
extra_hosts:
- peer1.org2.example.com:163.152.20.172
ports:
- 19051:19051
networks:
- test


i set url of connection.json file to server IP. (not localhost)
Also, this is my networkConfig.yaml

name: Caliper test
version: "2.0.0"

caliper:
blockchain: fabric

channels:

  • channelName: channel1

    contracts:

    • id: fabcar
    • id: fixed-asset
    • id: marbles
    • id: simple
    • id: smallbank

organizations:

  • mspid: Org1MSP
    identities:
    certificates:

    • name: 'User1'
      clientPrivateKey:
      path: '../organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk'
      clientSignedCert:
      path: '../organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem'
      connectionProfile:
      path: '../organizations/peerOrganizations/org1.example.com/connection-org1.json'
      discover: true
  • mspid: Org2MSP
    identities:
    certificates:

    • name: 'User2'
      clientPrivateKey:
      path: '../organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk'
      clientSignedCert:
      path: '../organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem'
      connectionProfile:
      path: '../organizations/peerOrganizations/org2.example.com/connection-org2.json'
      discover: true
      
[enter image description here](https://i.stack.imgur.com/4NhEL.png)
The one thing which is awkward is that each query function of fabcar, smallbank is working well.
[enter image description here](https://i.stack.imgur.com/mFKwg.png)
I packaged and installed fabcar, simple, smallbank within hyperledger caliper benchmarks.
They are all installed well but doesn&#39;t work...
I fixed /etc/hosts.
I also upgraded fabric sdk and bind them again.
I tried almost everything but i couldn&#39;t make it.
what should i do? please help me..
</details>
# 答案1
**得分**: 0
在显示故障的图像中,您可以看到错误,指出它正在尝试连接到`localhost`的URL。这是您想要的吗?每个对等方和排序者是否都可以通过`localhost`主机名访问?如果不是,那么您需要禁用超级烦人的功能,即Fabric节点SDK 2.2和caliper(当绑定到fabric:2.2时)默认将发现的主机名转换为localhost。有关详细信息,请参阅https://hyperledger.github.io/caliper/v0.5.0/fabric-config/new/#common-settings,但主要选项是在使用caliper本地工作程序时,要在管理器启动时添加`--caliper-fabric-gateway-localhost false`,或者在使用caliper远程工作程序时,在每个工作程序的启动时添加它。
<details>
<summary>英文:</summary>
In the image showing the failure, you can see the errors stating it is trying to connect to urls of `localhost`. Is that what you want ? Are each of the peers and orderers reachable on a hostname of `localhost` ? If not then you need to disable the really annoying feature that the fabric node sdk 2.2 and caliper (when bound to fabric:2.2) convert discovered hostnames to localhost by default. See https://hyperledger.github.io/caliper/v0.5.0/fabric-config/new/#common-settings for details but the main option is to either add `--caliper-fabric-gateway-localhost false` to the launching of the manager if you are using caliper local workers or to the launching of each worker if you are using caliper remote workers
</details>

huangapple
  • 本文由 发表于 2023年2月8日 17:59:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/75384077.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定