Set muti Org in Fabric 2.3 - phoebeum/phoebeum.github.io GitHub Wiki

Generate CA

1.Enter file-bin, save cryptogen(in bin) and edit it.

cd bin               
./cryptogen showtemlate > ../crypto-config.yaml

2.Edit crypto-config.yaml
EnableNodeOUs, change false to true.
Add orderer
In Specs add Hostname
PZRHS0-HP5-GJ-4-KJ9-MR.png

OrdererOrgs:
  # ---------------------------------------------------------------------------
  # Orderer
  # ---------------------------------------------------------------------------
  - Name: Orderer
    Domain: org0.example.com             #example.com
    EnableNodeOUs: true

    # ---------------------------------------------------------------------------
    # "Specs" - See PeerOrgs below for complete description
    # ---------------------------------------------------------------------------
    Specs:
      - Hostname: orderer0              #add ordererX
      - Hostname: orderer1

Add OrgX
Every org need config, if org has mutiple peer, change number in Template Count.
C-J-9-WD4-DF-A1-323-T-Y.png

# ---------------------------------------------------------------------------
  # Org2: See "Org1" for full specification
  # ---------------------------------------------------------------------------
  - Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
      Count: 1
    Users:
      Count: 1

3.Gnerate identity file
./cryptogen generate --config=crypto-config.yaml --output=crypto-config
Verify identity file
tree crypto-config
4.Edit config file
edit configtx.yaml
重启网卡 sudo /etc/init.d/network-manager restart

mkdir multiple-deployment
cd multiple-deployment
version: '2'

services:
  orderer0.example.com:
    container_name: orderer0.example.com
    image: hyperledger/fabric-orderer ##:2.3.3
    environment:
      - FABRIC_LOGGING_SPEC=DEBUG
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_BOOTSTRAPMETHOD=file
      - ORDERER_GENERAL_BOOTSTRAPFILE=/home/fabric-samples/multiple-deployment/channel-artifacts/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt]
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.key
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt]
    working_dir: /home/fabric-samples/multiple-deployment
    command: orderer
    volumes:
        - ./channel-artifacts/orderer.genesis.block:/home/fabric-samples/multiple-deployment/channel-artifacts/orderer.genesis.block
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp:/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/:/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls
    ports:
      - 7050:7050
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"

  orderer1.example.com:
    container_name: orderer1.example.com
    image: hyperledger/fabric-orderer ##:2.3.3
    environment:
      - FABRIC_LOGGING_SPEC=INFO
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_BOOTSTRAPMETHOD=file
      - ORDERER_GENERAL_BOOTSTRAPFILE=/home/fabric-samples/multiple-deployment/channel-artifacts/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt]
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.key
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt]
    working_dir: /home/fabric-samples/multiple-deployment
    command: orderer
    volumes:
        - ./channel-artifacts/genesis.block:/home/fabric-samples/multiple-deployment/channel-artifacts/orderer.genesis.block
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls
    ports:
      - 8050:8050
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"
      
  orderer2.example.com:
    container_name: orderer2.example.com
    image: hyperledger/fabric-orderer ##:2.3.3
    environment:
      - FABRIC_LOGGING_SPEC=INFO
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_BOOTSTRAPMETHOD=file
      - ORDERER_GENERAL_BOOTSTRAPFILE=/home/fabric-samples/multiple-deployment/channel-artifacts/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt]
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.key
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt]
    working_dir: /home/fabric-samples/multiple-deployment
    command: orderer
    volumes:
        - ./channel-artifacts/genesis.block:/home/fabric-samples/multiple-deployment/channel-artifacts/orderer.genesis.block
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/home/fabric-samples/multiple-deployment/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls
    ports:
      - 8050:8050
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - 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=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - FABRIC_LOGGING_SPEC=INFO
      - 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=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      # Allow more time for chaincode container to build on install.
      - CORE_CHAINCODE_EXECUTETIMEOUT=300s
    working_dir: /home/fabric-samples/multiple-deployment
    command: peer node start
    volumes:
       - /var/run/:/host/var/run/
       - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/home/fabric-samples/multiple-deployment/msp
       - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/home/fabric-samples/multiple-deployment/tls
    ports:
      - 7051:7051
      - 7052:7052
      - 7053:7053
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"

  peer0.org2.example.com:
    container_name: peer0.org2.example.com
    image: hyperledger/fabric-peer
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:8051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:8051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org2.example.com:8052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:8052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:8051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:8051
      - CORE_PEER_LOCALMSPID=Org2MSP
      - FABRIC_LOGGING_SPEC=INFO
      - 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=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
      # Allow more time for chaincode container to build on install.
      - CORE_CHAINCODE_EXECUTETIMEOUT=300s
    working_dir: /home/fabric-samples/multiple-deployment
    command: peer node start
    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:
      - 8051:8051
      - 8052:8052
      - 8053:8053
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"

  cli1:
    container_name: cli1
    image: hyperledger/fabric-tools
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/home/fabric-samples
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli1
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp
    working_dir: /home/fabric-samples/multiple-deployment
    command: /bin/bash
    volumes:
        - /var/run/:/host/var/run/
        - ./chaincode/go/:/home/fabric-samples/multiple-deployment/chaincode/go
        - ./crypto-config:/home/fabric-samples/multiple-deployment/crypto-config/
        - ./channel-artifacts:/home/fabric-samples/multiple-deployment/channel-artifacts
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"
      - "peer0.org1.example.com:192.168.1.8"
      - "peer0.org2.example.com:192.168.1.8"
      - "peer0.org3.example.com:192.168.1.8"
      - "peer0.org4.example.com:192.168.1.8"
      - "peer0.org5.example.com:192.168.1.8"
      - "peer0.org6.example.com:192.168.1.57"
      - "peer0.org7.example.com:192.168.1.58"
      - "peer0.org8.example.com:192.168.1.8"

  cli2:
    container_name: cli2
    image: hyperledger/fabric-tools
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli2
      - CORE_PEER_ADDRESS=peer0.org6.example.com:8051 ##
      - CORE_PEER_LOCALMSPID=Org6MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org6.example.com/peers/peer0.org6.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org6.example.com/peers/peer0.org6.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org6.example.com/peers/peer0.org6.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org6.example.com/users/[email protected]/msp
    working_dir: /home/fabric-samples/multiple-deployment
    command: /bin/bash
    volumes:
        - /var/run/:/host/var/run/
        - ./chaincode/go/:/home/fabric-samples/multiple-deployment/chaincode/go
        - ./crypto-config:/home/fabric-samples/multiple-deployment/crypto-config
        - ./channel-artifacts:/home/fabric-samples/multiple-deployment/channel-artifacts
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"
      - "peer0.org1.example.com:192.168.1.8"
      - "peer0.org2.example.com:192.168.1.8"
      - "peer0.org3.example.com:192.168.1.8"
      - "peer0.org4.example.com:192.168.1.8"
      - "peer0.org5.example.com:192.168.1.8"
      - "peer0.org6.example.com:192.168.1.57"
      - "peer0.org7.example.com:192.168.1.58"
      - "peer0.org8.example.com:192.168.1.8"
      
  cli3:
    container_name: cli3
    image: hyperledger/fabric-tools
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/home/fabric-samples
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli3
      - CORE_PEER_ADDRESS=peer0.org7.example.com:7051
      - CORE_PEER_LOCALMSPID=Org7MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org7.example.com/peers/peer0.org7.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org7.example.com/peers/peer0.org7.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org7.example.com/peers/peer0.org7.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/home/fabric-samples/multiple-deployment/crypto-config/peerOrganizations/org7.example.com/users/[email protected]/msp
    working_dir: /home/fabric-samples/multiple-deployment
    command: /bin/bash
    volumes:
        - /var/run/:/host/var/run/
        - ./chaincode/go/:/home/fabric-samples/multiple-deployment/chaincode/go
        - ./crypto-config:/home/fabric-samples/multiple-deployment/crypto-config/
        - ./channel-artifacts:/home/fabric-samples/multiple-deployment/channel-artifacts
    extra_hosts:
      - "orderer0.example.com:192.168.1.7"
      - "orderer1.example.com:192.168.1.7"
      - "orderer2.example.com:192.168.1.7"
      - "peer0.org1.example.com:192.168.1.8"
      - "peer0.org2.example.com:192.168.1.8"
      - "peer0.org3.example.com:192.168.1.8"
      - "peer0.org4.example.com:192.168.1.8"
      - "peer0.org5.example.com:192.168.1.8"
      - "peer0.org6.example.com:192.168.1.57"
      - "peer0.org7.example.com:192.168.1.58"
      - "peer0.org8.example.com:192.168.1.8"