what is CORE_PEER_ADDRESS in hyperledger fabric?

2019-08-27 03:28发布

问题:

Hi i just want to know while defining peer in docker file we are setting environment variable "- CORE_PEER_ADDRESS=peer0.org1.example.com:7051" so why there is the same "7051" port for other organization also. as i can see in below file for while defining peer in org2 they used same port.i just want to know about this.

 # Copyright IBM Corp. All Rights Reserved.
 #
 # SPDX-License-Identifier: Apache-2.0
 #

version: '2'

services:

orderer.example.com:
  container_name: orderer.example.com
  image: hyperledger/fabric-orderer:$IMAGE_TAG
  environment:
    - ORDERER_GENERAL_LOGLEVEL=INFO
    - 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
  - orderer.example.com:/var/hyperledger/production/orderer
  ports:
    - 7050:7050

peer0.org1.example.com:
  container_name: peer0.org1.example.com
  extends:
    file: peer-base.yaml
    service: peer-base
  environment:
    - CORE_PEER_ID=peer0.org1.example.com
    - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
    - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
    - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
    - CORE_PEER_LOCALMSPID=Org1MSP
  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
      - peer0.org1.example.com:/var/hyperledger/production
  ports:
    - 7051:7051
    - 7053:7053

peer1.org1.example.com:
  container_name: peer1.org1.example.com
  extends:
    file: peer-base.yaml
    service: peer-base
  environment:
    - CORE_PEER_ID=peer1.org1.example.com
    - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
    - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
    - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
    - CORE_PEER_LOCALMSPID=Org1MSP
  volumes:
      - /var/run/:/host/var/run/
      - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
      - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
      - peer1.org1.example.com:/var/hyperledger/production

  ports:
    - 8051:7051
    - 8053:7053

peer0.org2.example.com:
  container_name: peer0.org2.example.com
  extends:
    file: peer-base.yaml
    service: peer-base
  environment:
    - 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_GOSSIP_BOOTSTRAP=peer1.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
      - peer0.org2.example.com:/var/hyperledger/production
  ports:
    - 9051:7051
    - 9053:7053

peer1.org2.example.com:
  container_name: peer1.org2.example.com
  extends:
    file: peer-base.yaml
    service: peer-base
  environment:
    - CORE_PEER_ID=peer1.org2.example.com
    - CORE_PEER_ADDRESS=peer1.org2.example.com:7051
    - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
    - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
    - CORE_PEER_LOCALMSPID=Org2MSP
  volumes:
      - /var/run/:/host/var/run/
      - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
      - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
      - peer1.org2.example.com:/var/hyperledger/production
  ports:
    - 10051:7051
    - 10053:7053

回答1:

In docker-composer file, right side port 7051 is belong to HostOS where containers are running.

Based on this configuration, 7051 port is mapped to Peer port on left side to communicate from HOST OS.

For example, You can run CLI utility from Host OS.



回答2:

The core peer address is only necessary for the client node. On other nodes is not really necessary. On a client node that is going to indicate on what peer you want to execute the commands you are using, for example installing a chaincode or invoking it.

For example, imagine that you have 2 peers and you want to install on them 2 chaincodes, first time you make and execution it would execute the code on the machine that you have defined as your CORE_PEER_ADDRESS:

peer chaincode install -p <path> -n <name> -v <version>

Now, to install in the other chaincode, you would set your CORE_PEER_ADDRESS as the next peer:

export CORE_PEER_ADDRESS=peer1.kaytek.es:7051
peer chaincode install -p <path> -n <name> -v <version>