Ubuntu16.4部署fabric1.4+kafka集群最新最完整

 
环境角色规划如下,7台服务器hosts文件统一配置:
vim /etc/hosts
10.12.237.103     orderer0.example.com
10.12.236.210     orderer1.example.com
10.12.237.112     orderer2.example.com
10.12.237.114     peer0.org1.example.com
10.12.237.120     peer1.org1.example.com
10.12.237.127     peer0.org2.example.com
10.12.237.132     peer1.org2.example.com
10.12.237.114     kafka0
10.12.237.120     kafka1
10.12.237.127     kafka2
10.12.237.132     kafka3
10.12.237.103     zookeeper0
10.12.236.210     zookeeper1
10.12.237.112     zookeeper2
 
 
第一步:更换apt源:
 
cd /etc/apt/
cp sources.list sources.list.bak
>sources.list
 
vim sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu xenial stable
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu xenial stable
 
apt-get update
这步报错:
........
gn:5 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu xenial InRelease
Fetched 66.2 kB in 21s (3,031 B/s)
Reading package lists... Done
W: GPG error: https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
W: The repository 'https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu xenial InRelease' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
 
解决方法:执行下面命令并重新update:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
apt-get update
 
#update成功之后所有参与服务器执行第一步:
scp sources.list 10.12.237.103:/etc/apt/
scp sources.list 10.12.237.112:/etc/apt/
scp sources.list 10.12.237.114:/etc/apt/
scp sources.list 10.12.237.120:/etc/apt/
scp sources.list 10.12.237.127:/etc/apt/
scp sources.list 10.12.237.132:/etc/apt/
 
 
第二步:安装开发软件(docker,docker-compose,nodejs,go)
docker:
cd
sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-cache madison docker-ce
apt-get -y install docker-ce=5:18.09.6~3-0~ubuntu-xenial docker-ce-cli=5:18.09.6~3-0~ubuntu-xenial containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
 
docker-compose:
apt-get update
cd /var/lib/dpkg
mv info info.baksudo
mkdir info
apt-get -y install python3-pip
pip3 -v
pip3 install --default-timeout=100 --upgrade pip
pip -V
apt-get update
pip install docker-compose==1.24.0
 
nodejs:
apt-get update
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install -y nodejs
 
go:
cd /opt
mkdir golang
cd golang
wget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
tar -zxvf go1.12.9.linux-amd64.tar.gz
vim /etc/profile
export GOPATH=/opt/gopath
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH
source /etc/profile
 
依赖工具:
apt-get install  libtool libltdl-dev -y
 
 
第三步:所有服务器下载镜像,(可以选择部分所需)
chmod +x ./bootstrap.sh
#执行脚本之前要修改脚本内容: 这里用fabric1.4.0的版本,修改内容为标红处
 
 
./bootstrap.sh
 
第四步:所有服务器创建kafkapeer目录
mkdir -p $GOPATH/src/ github.com/hyperledger/
cd $GOPATH/src/ github.com/hyperledger/
mkdir -p fabric/kafkapeer
 
第五步:生成证书和区块配置文件,先在第一台peer服务器操作( 10.12.237.114     peer0.org1.example.com
#共两个文件,下载镜像的脚本执行完成之后会生成一个fabric-samples目录,下层的basic-network目录下就有这两个文件,需要修改
 
cd $GOPATH/src/ github.com/hyperledger/fabric/kafkapeer
 
vim crypto-config.yaml
OrdererOrgs:
 - Name: Orderer
   Domain: example.com
   CA:
       Country: US
       Province: California
       Locality: San Francisco
   Specs:
     - Hostname: orderer0
     - Hostname: orderer1
     - Hostname: orderer2
PeerOrgs:
 - Name: Org1
   Domain: org1.example.com
   EnableNodeOUs: true
   CA:
       Country: US
       Province: California
       Locality: San Francisco
   Template:
     Count: 2
   Users:
     Count: 1
 - Name: Org2
   Domain: org2.example.com
   EnableNodeOUs: true
   CA:
       Country: US
       Province: California
       Locality: San Francisco
   Template:
     Count: 2
   Users:
     Count: 1

vim 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.admin')"
   - &Org1
       Name: Org1MSP
       ID: Org1MSP
       MSPDir: crypto-config/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')"
       AnchorPeers:
           - Host: peer0.org1.example.com
             Port: 7051
   - &Org2
       Name: Org2MSP
       ID: Org2MSP
       MSPDir: crypto-config/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')"
       AnchorPeers:
           - Host: peer0.org2.example.com
             Port: 7051
Capabilities:
   Global: &ChannelCapabilities
       V1_1: true
   Orderer: &OrdererCapabilities
       V1_1: true
   Application: &ApplicationCapabilities
       V1_2: true
Application: &ApplicationDefaults
   Organizations:
   Policies:
       Readers:
           Type: ImplicitMeta
           Rule: "ANY Readers"
       Writers:
           Type: ImplicitMeta
           Rule: "ANY Writers"
       Admins:
           Type: ImplicitMeta
           Rule: "MAJORITY Admins"
   Capabilities:
       <<: *ApplicationCapabilities
Orderer: &OrdererDefaults
   OrdererType: kafka
   Addresses:
       - orderer0.example.com:7050
       - orderer1.example.com:7050
       - orderer2.example.com:7050
   BatchTimeout: 2s
   BatchSize:
       MaxMessageCount: 10
       AbsoluteMaxBytes: 98 MB
       PreferredMaxBytes: 512 KB
   Kafka:
       Brokers:
           - kafka0:9092
           - kafka1:9092
           - kafka2:9092
           - kafka3: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"
   Capabilities:
       <<: *OrdererCapabilities
Channel: &ChannelDefaults
   Policies:
       Readers:
           Type: ImplicitMeta
           Rule: "ANY Readers"
       Writers:
           Type: ImplicitMeta
           Rule: "ANY Writers"
       Admins:
           Type: ImplicitMeta
           Rule: "MAJORITY Admins"
   Capabilities:
       <<: *ChannelCapabilities
Profiles:
   TwoOrgsOrdererGenesis:
       <<: *ChannelDefaults
       Orderer:
           <<: *OrdererDefaults
           Organizations:
               - *OrdererOrg
       Consortiums:
           SampleConsortium:
               Organizations:
                   - *Org1
                   - *Org2
   TwoOrgsChannel:
       Consortium: SampleConsortium
       Application:
           <<: *ApplicationDefaults
           Organizations:
               - *Org1
               - *Org2

生成公私钥和证书

cd $GOPATH/src/ github.com/hyperledger/fabric/kafkapeer
./bin/cryptogen generate --config=./crypto-config.yaml
 
生成创世区块
mkdir channel-artifacts
./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
 
 
生成通道配置区块
./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel
 
生成锚节点配置文件
./bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
./bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
 
 
拷贝生成文件到其它服务器
scp -r ../kafkapeer/10.12.237.132:/opt/gopath/src/ github.com/hyperledger/fabric/
scp -r ../kafkapeer/10.12.237.127:/opt/gopath/src/ github.com/hyperledger/fabric/
scp -r ../kafkapeer/10.12.237.120:/opt/gopath/src/ github.com/hyperledger/fabric/
scp -r ../kafkapeer/10.12.237.112:/opt/gopath/src/ github.com/hyperledger/fabric/
scp -r ../kafkapeer/10.12.237.103:/opt/gopath/src/ github.com/hyperledger/fabric/
scp -r ../kafkapeer/10.12.236.210:/opt/gopath/src/ github.com/hyperledger/fabric/
 
 
第六步:对应的角色服务器在同一目录下准备相关角色配置文件
cd $GOPATH/src/ github.com/hyperledger/fabric/kafkapeer
 
zookeeper部分
#10.12.237.103     zookeeper0
vim docker-compose-zookeeper.yaml
version: '2'
services:
 zookeeper0:
   container_name: zookeeper0
   hostname: zookeeper0
   image: hyperledger/fabric-zookeeper
   restart: always
   environment:
     - ZOO_MY_ID=1
     - ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
   ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
###################################################
#10.12.236.210     zookeeper1
vim docker-compose-zookeeper.yaml
version: '2'
services:
 zookeeper1:
   container_name: zookeeper1
   hostname: zookeeper1
   image: hyperledger/fabric-zookeeper
   restart: always
   environment:
     - ZOO_MY_ID=2
     - ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
   ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
####################################################
#10.12.237.112     zookeeper2
vim docker-compose-zookeeper.yaml
version: '2'
services:
 zookeeper2:
   container_name: zookeeper2
   hostname: zookeeper2
   image: hyperledger/fabric-zookeeper
   restart: always
   environment:
     - ZOO_MY_ID=3
     - ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
   ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
Kafka部分
#10.12.237.114     kafka0
vim docker-compose-kafka.yaml
version: '2'
services:
 kafka0:
   container_name: kafka0
   hostname: kafka0
   image: hyperledger/fabric-kafka
   restart: always
   environment:
     - KAFKA_MESSAGE_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
   environment:
     - KAFKA_BROKER_ID=1
     - KAFKA_MIN_INSYNC_REPLICAS=2
     - KAFKA_DEFAULT_REPLICATION_FACTOR=3
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
   ports:
     - 9092:9092
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
##################################################
#10.12.237.120     kafka1
vim docker-compose-kafka.yaml
version: '2'
services:
 kafka1:
   container_name: kafka1
   hostname: kafka1
   image: hyperledger/fabric-kafka
   restart: always
   environment:
     - KAFKA_MESSAGE_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
   environment:
     - KAFKA_BROKER_ID=2
     - KAFKA_MIN_INSYNC_REPLICAS=2
     - KAFKA_DEFAULT_REPLICATION_FACTOR=3
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
   ports:
     - 9092:9092
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
#####################################################
#10.12.237.127     kafka2
vim docker-compose-kafka.yaml
version: '2'
services:
 kafka2:
   container_name: kafka2
   hostname: kafka2
   image: hyperledger/fabric-kafka
   restart: always
   environment:
     - KAFKA_MESSAGE_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
   environment:
     - KAFKA_BROKER_ID=3
     - KAFKA_MIN_INSYNC_REPLICAS=2
     - KAFKA_DEFAULT_REPLICATION_FACTOR=3
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
   ports:
     - 9092:9092
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
###################################################
#10.12.237.132     kafka3
vim docker-compose-kafka.yaml
version: '2'
services:
 kafka3:
   container_name: kafka3
   hostname: kafka3
   image: hyperledger/fabric-kafka
   restart: always
   environment:
     - KAFKA_MESSAGE_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024 # 99 * 1024 * 1024 B
     - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
   environment:
     - KAFKA_BROKER_ID=4
     - KAFKA_MIN_INSYNC_REPLICAS=2
     - KAFKA_DEFAULT_REPLICATION_FACTOR=3
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
   ports:
     - 9092:9092
   extra_hosts:
     - "zookeeper0:10.12.237.103"
     - "zookeeper1:10.12.236.210"
     - "zookeeper2:10.12.237.112"
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
peer部分
#10.12.237.114     peer0.org1.example.com
vim docker-compose-peer.yaml
# All elements in this file should depend on the docker-compose-base.yaml
# Provided fabric peer node
version: '2'
services:
   container_name: peer0.org1.example.com
   hostname: peer0.org1.example.com
   image: hyperledger/fabric-peer
   environment:
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      #- CORE_LOGGING_LEVEL=ERROR
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_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
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   command: peer node start
   volumes:
      - /var/run/:/host/var/run/
   ports:
     - 7051:7051
     - 7052:7052
     - 7053:7053
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 cli:
   container_name: cli
   image: hyperledger/fabric-tools
   tty: true
   environment:
     - GOPATH=/opt/gopath
     - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
     # - CORE_LOGGING_LEVEL=ERROR
     - CORE_LOGGING_LEVEL=DEBUG
     - CORE_PEER_ID=cli
     - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
     - CORE_PEER_LOCALMSPID=Org1MSP
     - CORE_PEER_TLS_ENABLED=true
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   volumes:
       - /var/run/:/host/var/run/
       - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/kafkapeer/chaincode/go
       - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
       - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 
##############################################################################
#10.12.237.127     peer0.org2.example.com
vim docker-compose-peer.yaml
# All elements in this file should depend on the docker-compose-base.yaml
# Provided fabric peer node
version: '2'
services:
   container_name: peer0.org2.example.com
   hostname: peer0.org2.example.com
   image: hyperledger/fabric-peer
   environment:
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      #- CORE_LOGGING_LEVEL=ERROR
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_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
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   command: peer node start
   volumes:
      - /var/run/:/host/var/run/
   ports:
     - 7051:7051
     - 7052:7052
     - 7053:7053
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 cli:
   container_name: cli
   image: hyperledger/fabric-tools
   tty: true
   environment:
     - GOPATH=/opt/gopath
     - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
     # - CORE_LOGGING_LEVEL=ERROR
     - CORE_LOGGING_LEVEL=DEBUG
     - CORE_PEER_ID=cli
     - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
     - CORE_PEER_LOCALMSPID=Org2MSP
     - CORE_PEER_TLS_ENABLED=true
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   volumes:
       - /var/run/:/host/var/run/
       - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/kafkapeer/chaincode/go
       - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
       - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 
##################################################################################
#10.12.237.120     peer1.org1.example.com
vim docker-compose-peer.yaml
# All elements in this file should depend on the docker-compose-base.yaml
# Provided fabric peer node
version: '2'
services:
   container_name: peer1.org1.example.com
   hostname: peer1.org1.example.com
   image: hyperledger/fabric-peer
   environment:
      - CORE_PEER_ID=peer1.org1.example.com
      - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      #- CORE_LOGGING_LEVEL=ERROR
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_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
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   command: peer node start
   volumes:
      - /var/run/:/host/var/run/
   ports:
     - 7051:7051
     - 7052:7052
     - 7053:7053
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 cli:
   container_name: cli
   image: hyperledger/fabric-tools
   tty: true
   environment:
     - GOPATH=/opt/gopath
     - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
     # - CORE_LOGGING_LEVEL=ERROR
     - CORE_LOGGING_LEVEL=DEBUG
     - CORE_PEER_ID=cli
     - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
     - CORE_PEER_LOCALMSPID=Org1MSP
     - CORE_PEER_TLS_ENABLED=true
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   volumes:
       - /var/run/:/host/var/run/
       - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/kafkapeer/chaincode/go
       - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
       - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 
############################################################################################
#10.12.237.132     peer1.org2.example.com
vim docker-compose-peer.yaml
# All elements in this file should depend on the docker-compose-base.yaml
# Provided fabric peer node
version: '2'
services:
   container_name: peer1.org2.example.com
   hostname: peer1.org2.example.com
   image: hyperledger/fabric-peer
   environment:
      - CORE_PEER_ID=peer1.org2.example.com
      - CORE_PEER_ADDRESS=peer1.org2.example.com:7051
      - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      #- CORE_LOGGING_LEVEL=ERROR
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_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
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   command: peer node start
   volumes:
      - /var/run/:/host/var/run/
   ports:
     - 7051:7051
     - 7052:7052
     - 7053:7053
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 cli:
   container_name: cli
   image: hyperledger/fabric-tools
   tty: true
   environment:
     - GOPATH=/opt/gopath
     - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
     # - CORE_LOGGING_LEVEL=ERROR
     - CORE_LOGGING_LEVEL=DEBUG
     - CORE_PEER_ID=cli
     - CORE_PEER_ADDRESS=peer1.org2.example.com:7051
     - CORE_PEER_LOCALMSPID=Org2MSP
     - CORE_PEER_TLS_ENABLED=true
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
   volumes:
       - /var/run/:/host/var/run/
       - ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/kafkapeer/chaincode/go
       - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
       - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
   extra_hosts:
     - "orderer1.example.com:10.12.236.210"
 
orderer部分
#10.12.237.103     orderer0.example.com
vim docker-compose-orderer.yaml
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
   container_name: orderer0.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]
     - ORDERER_KAFKA_RETRY_LONGINTERVAL=10s
     - ORDERER_KAFKA_RETRY_LONGTOTAL=100s
     - ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
     - ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
     - ORDERER_KAFKA_VERBOSE=true
     - ORDERER_KAFKA_BROKERS=[10.12.237.114:9092,10.12.237.120:9092,10.12.237.127:9092,10.12.237.132:9092]      
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric
   command: orderer
   volumes:
     - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
   ports:
     - 7050:7050
   extra_hosts:
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
 
##############################################################################
#10.12.236.210     orderer1.example.com
vim docker-compose-orderer.yaml
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
   container_name: orderer1.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]
     - ORDERER_KAFKA_RETRY_LONGINTERVAL=10s
     - ORDERER_KAFKA_RETRY_LONGTOTAL=100s
     - ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
     - ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
     - ORDERER_KAFKA_VERBOSE=true
     - ORDERER_KAFKA_BROKERS=[10.12.237.114:9092,10.12.237.120:9092,10.12.237.127:9092,10.12.237.132:9092]     
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric
   command: orderer
   volumes:
     - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
   ports:
     - 7050:7050
   extra_hosts:
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
 
################################################################
#10.12.237.112     orderer2.example.com
vim docker-compose-orderer.yaml
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
   container_name: orderer2.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]
     - ORDERER_KAFKA_RETRY_LONGINTERVAL=10s
     - ORDERER_KAFKA_RETRY_LONGTOTAL=100s
     - ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
     - ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
     - ORDERER_KAFKA_VERBOSE=true
     - ORDERER_KAFKA_BROKERS=[10.12.237.114:9092,10.12.237.120:9092,10.12.237.127:9092,10.12.237.132:9092]
   working_dir: /opt/gopath/src/github.com/hyperledger/fabric
   command: orderer
   volumes:
     - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
   ports:
     - 7050:7050
   extra_hosts:
     - "kafka0:10.12.237.114"
     - "kafka1:10.12.237.120"
     - "kafka2:10.12.237.127"
     - "kafka3:10.12.237.132"
 
 
第七步:启动应用程序:
顺序:先启动Zookeeper再启动Kafka,orderer,peer
对应的角色服务器执行如下相同的命令:
cd cd /opt/gopath/src/ github.com/hyperledger /fabric/kafkapeer
docker-compose -f docker-compose-zookeeper.yaml up -d
docker-compose -f docker-compose-kafka.yaml up -d
docker-compose -f docker-compose-orderer.yaml up -d
docker-compose -f docker-compose-peer.yaml up -d
 
第八步:验证创建通道 安装与运行智能合约
#10.12.237.114     peer0.org1.example.com 
 
进入cli容器
docker exec -it cli bash
 
为创建通道设置变量
 
创建Channel
peer channel create -o orderer0.example.com:7050 -c mychannel -f ./channel-artifacts/mychannel.tx --tls --cafile $ORDERER_CA
 
Peer加入Channel
peer channel join -b mychannel.block
 
 
保存mychannel.block到本地
cd cd /opt/gopath/src/ github.com/hyperledger /fabric/kafkapeer
docker cp d98a19fd6da7:/opt/gopath/src/ github.com/hyperledger/fabric/peer/mychannel.block /opt/gopath/src/ github.com/hyperledger/fabric/kafkapeer
 
把mychannel.block发送到其它peer节点
scp mychannel.block 10.12.237.120:/opt/gopath/src/ github.com/hyperledger/fabric/kafkapeer/
scp mychannel.block 10.12.237.127:/opt/gopath/src/ github.com/hyperledger/fabric/kafkapeer/
scp mychannel.block 10.12.237.132:/opt/gopath/src/ github.com/hyperledger/fabric/kafkapeer/
 
准备智能合约:
第三步执行下载镜像脚本之后在fabric-sample目录下层的chaincode目录下层的chaincode_example02/目录下层有一个go目录下层的chaincode_example02.go文件cope到容器对应的位置
cd /opt/gopath/src/ github.com/hyperledger/fabric-samples/chaincode/chaincode_example02/go/
docker cp chaincode_example02.go 1d18d974b787:/opt/gopath/src/ github.com/hyperledger/fabric/kafkapeer/chaincode/go/
 
安装智能合约
docker exec -it cli bash
peer chaincode install -n mycc -p github.com/hyperledger/fabric/kafkapeer/chaincode/go/ -v 1.0
 
为实例化智能合约设置环境变量
 
实例化智能合约,区块初始化数据为a为200,b为400
peer chaincode instantiate -o orderer0.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","200","b","400"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"
 
查询:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
 
 
 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小数苗小数苗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值