天天看點

Hyperledger Fabric 1.0 快速搭建 -------- 多機部署 peer節點

前言

在這裡我推薦兩位大神的部落格,可以參考或者直接跟着這兩位大神學習,我是閱讀這兩位大神的部落格和《深度探索區塊鍊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容器的名字] 來檢視一下日志的資訊,看是否有報錯資訊,如果有報錯資訊,可根據相應的錯誤更改,第一次部署時大機率上的錯誤都是證書檔案不對,名字寫錯,創始區塊的生成有問題等等,可以把配置檔案中的資訊确認一下,路徑什麼的。

繼續閱讀