前言
在這裡我推薦兩位大神的部落格,可以參考或者直接跟着這兩位大神學習,我是閱讀這兩位大神的部落格和《深度探索區塊鍊Hyperledger技術與應用》一書部署的
《深度探索區塊鍊Hyperledger技術與應用》作者:張增駿、董甯、朱軒彤、陳劍雄 著。
深藍大大:https://www.cnblogs.com/studyzy/category/1024666.html
Aberic大神:https://www.cnblogs.com/aberic/category/1148898.html
所有的peer節點都是記賬節點,負責驗證從排序服務節點區塊裡的交易,維護狀态資料和賬本的副本。部分節點會執行交易并對出結果進行從簽名背書,充當背書節點的角色。背書節點是動态的角色,是與具體鍊碼綁定的。每一個鍊碼在執行個體化的時候都會設定背書政策,指定那些節點對交易背書後才是有效的,也隻有在應用程式向它發起交易背書請求的時候才是背書節點,其他的時候就是普通的記賬節點,隻負責驗證交易并記賬。
在準備篇介紹crypto-config.yaml時說了可以部署的peer節點是PeerOrgs.Template屬性設定的(生成了對應的MSP證書),在這裡部署peer0節點。
在配置檔案中定義了五個org,每一個org中有兩個peer(peer0和peer1),我們把這五個peer0分别部署在五個不同的機器上。node1-node5
下一篇:Hyperledger Fabric 1.0 快速搭建 -------- 多機部署 Fabric CA節點服務
開始
編寫peer.yaml檔案
[[email protected] ~]# mkdir -p /u01/chainConfig/configfile/peer
[[email protected] ~]# vi peer.yaml
#copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
peer:
image: hyperledger/fabric-peer:x86_64-1.0.1
extends:
file: ../hosts.yaml #host檔案是上一章節提到的
service: myYwhHost
environment:
- CORE_LOGGING_LEVEL=debug
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=${PEERNAME}:5984 #連接配接couchdb,儲存狀态資料,couchdb支援原生的json和位元組數組的操作。
- CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=test
- CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=test
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_PEER_TLS_ENABLED=true #日志的級别
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt #用到了tls證書來通信
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- CORE_PEER_ADDRESS=${PEERNAME}:7051
- CORE_PEER_ID=${PEERNAME}
- CORE_PEER_LOCALMSPID=${MSPID}
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=${PEERNAME}:7051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.ywhOrg1.example.com:7051 #peer節點啟動時連接配接的peer節點,一般配置同一個組織下的peer節點,其實這裡我是都寫得這個,有警告但是好像沒影響到什麼
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
volumes:
- /var/run/:/var/run/
- /u01/chainConfig/crypto-config/peerOrganizations/${ORGNAME}/peers/${PEERNAME}/msp:/etc/hyperledger/fabric/msp
- /u01/chainConfig/crypto-config/peerOrganizations/${ORGNAME}/peers/${PEERNAME}/tls:/etc/hyperledger/fabric/tls
- /u01/data/peer/${PEERNAME}/:/var/hyperledger/
ports:
- 7051:7051/tcp
- 7052:7052/tcp
- 7053:7053/tcp
logging:
options: #這裡應該是設定了日志的大小 和日志檔案數量的max 最大檔案數
max-size: "1024m"
max-file: "3"
couchdb: #啟動couchdb
image: hyperledger/fabric-couchdb:x86_64-1.0.1
environment:
- COUCHDB_PASSWORD=test
- COUCHDB_USER=test
ports:
- 5984:5984
peer節點的配置檔案配置好以後,把這個檔案發送到node1-node5機器上相同目錄下,然後啟動,設定的環境變量在peer.yaml檔案中都用到了。
node1機器上:
[[email protected] ~]# export PEERNAME=peer0.ywhOrg1.example.com
[[email protected] ~]# export ORGNAME= ywhOrg1.example.com
[[email protected] ~]# export MSPID=Ywh1OrgMSP
[[email protected] ~]# mkdir -p /u01/data/peer/${PEERNAME}
[[email protected] ~]# docker-compose -f /u01/chainConfig/configfile/peer/peer.yaml up -d
node2機器上
[[email protected] ~]# export PEERNAME=peer0.ywhOrg2.example.com
[[email protected] ~]# export ORGNAME= ywhOrg2.example.com
[[email protected] ~]# export MSPID=Ywh2OrgMSP
[[email protected] ~]# mkdir -p /u01/data/peer/${PEERNAME}
[[email protected] ~]# docker-compose -f /u01/chainConfig/configfile/peer/peer.yaml up -d
node3-node5機器上跟上面的相同,注意修改三個環境變量就可以了,這裡要修改的這些,要根據準備篇中的配置檔案相對應的修改,應該不是很難就能知道修改哪些。
在啟動每一個peer節點時也會相應的跟着啟動一個couchDB資料庫,用來存儲狀态資料,記錄的是交易執行的結果,最新的狀态代表了通道上所有鍵的最新值。
暫時對于couchDB了解的不好,先不寫了,跟着啟動沒有報錯即可。
把peer啟動後,在node1-node5節點上應該有以下容器,Kafka,Orderer,Zookeeper,Peer,CouchDB五個容器。
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
721a15534ad2 hyperledger/fabric-orderer:x86_64-1.0.1 "orderer" 8 days ago Up 8 days 0.0.0.0:7050->7050/tcp order
6b393d78f9ee hyperledger/fabric-kafka:x86_64-1.0.1 "/docker-entrypoint.…" 8 days ago Up 8 days 0.0.0.0:9092->9092/tcp, 9093/tcp kafka_kafka_1
68def5411279 hyperledger/fabric-zookeeper:x86_64-1.0.1 "/docker-entrypoint.…" 8 days ago Up 8 days 2888/tcp, 0.0.0.0:2181->2181/tcp, 0.0.0.0:12888->12888/tcp, 0.0.0.0:13888->13888/tcp, 3888/tcp zookeeper_zooleeper1_1
6c32182d844d hyperledger/fabric-peer:x86_64-1.0.1 "peer node start" 12 days ago Up 12 days 0.0.0.0:7051-7053->7051-7053/tcp peer_peer_1
a3d8ce2ed722 hyperledger/fabric-couchdb:x86_64-1.0.1 "tini -- /docker-ent…" 12 days ago Up 12 days 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp peer_couchdb_1
可以用docker -logs -f [peer容器的名字] 來檢視一下日志的資訊,看是否有報錯資訊,如果有報錯資訊,可根據相應的錯誤更改,第一次部署時大機率上的錯誤都是證書檔案不對,名字寫錯,創始區塊的生成有問題等等,可以把配置檔案中的資訊确認一下,路徑什麼的。