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

Adelaide ·
更新时间:2024-11-13
· 999 次阅读

环境角色规划如下,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 第三步:所有服务器下载镜像,(可以选择部分所需) wget https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh 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:  peer0.org1.example.com:    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       # https://docs.docker.com/compose/networking/       #- 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/       - ./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      - 7052:7052      - 7053:7053    extra_hosts:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"  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      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/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/crypto/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/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp    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:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"      - "peer0.org1.example.com:10.12.237.114"      - "peer1.org1.example.com:10.12.237.120"      - "peer0.org2.example.com:10.12.237.127"      - "peer1.org2.example.com:10.12.237.132" ############################################################################## #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:  peer0.org2.example.com:    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       # https://docs.docker.com/compose/networking/       #- 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/       - ./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:      - 7051:7051      - 7052:7052      - 7053:7053    extra_hosts:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"  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      - 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.org2.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    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:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"      - "peer0.org1.example.com:10.12.237.114"      - "peer1.org1.example.com:10.12.237.120"      - "peer0.org2.example.com:10.12.237.127"      - "peer1.org2.example.com:10.12.237.132" ################################################################################## #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:  peer1.org1.example.com:    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       # https://docs.docker.com/compose/networking/       #- 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/       - ./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    ports:      - 7051:7051      - 7052:7052      - 7053:7053    extra_hosts:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"  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      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp    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:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"      - "peer0.org1.example.com:10.12.237.114"      - "peer1.org1.example.com:10.12.237.120"      - "peer0.org2.example.com:10.12.237.127"      - "peer1.org2.example.com:10.12.237.132" ############################################################################################ #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:  peer1.org2.example.com:    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       # https://docs.docker.com/compose/networking/       #- 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/       - ./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    ports:      - 7051:7051      - 7052:7052      - 7053:7053    extra_hosts:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"  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      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.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/peer1.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/peer1.org2.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    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:      - "orderer0.example.com:10.12.237.103"      - "orderer1.example.com:10.12.236.210"      - "orderer2.example.com:10.12.237.112"      - "peer0.org1.example.com:10.12.237.114"      - "peer1.org1.example.com:10.12.237.120"      - "peer0.org2.example.com:10.12.237.127"      - "peer1.org2.example.com:10.12.237.132" 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:  orderer0.example.com:    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      - ./crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp:/var/hyperledger/orderer/msp      - ./crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/:/var/hyperledger/orderer/tls    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:  orderer1.example.com:    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      - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/var/hyperledger/orderer/msp      - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/var/hyperledger/orderer/tls    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:  orderer2.example.com:    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      - ./crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp:/var/hyperledger/orderer/msp      - ./crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/:/var/hyperledger/orderer/tls    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 为创建通道设置变量 ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem 创建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 为实例化智能合约设置环境变量 ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem 实例化智能合约,区块初始化数据为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"]}'
作者:li.junmin



ubuntu fabric kafka

需要 登录 后方可回复, 如果你还没有账号请 注册新账号