Hyperledger Fabric 1.0 快速搭建 -------- 多機部署 核心共識節點Orderer
阿新 • • 發佈:2018-12-09
前言
在這裡我推薦兩位大神的部落格,可以參考或者直接跟著這兩位大神學習,我是閱讀這兩位大神的部落格和《深度探索區塊鏈Hyperledger技術與應用》一書部署的
《深度探索區塊鏈Hyperledger技術與應用》作者:張增駿、董寧、朱軒彤、陳劍雄 著。
上一篇文章中我們配置並生成了區塊鏈系統所需要的MSP證書和排序服務創世區塊,這篇文章介紹如何配置核心共識節點並且部署,如果有不對的地方,請告訴我,一定改正。
開始
1.1簡介
核心共識節點由Orderer、Kafka、Zookeeper組成,所以配置了三個.yaml配置檔案,基於Zookeeper和Kafka的叢集方案,啟動順序主要跟隨依賴,先啟動Zookeeper叢集,隨後啟動Kafka叢集,最後啟動Orderer叢集。在上一篇文章生成排序服務創世區塊
使用kafka叢集配置的原因也很簡單,為orderer共識及排序服務提供足夠的容錯空間,當我們向peer節點提交Transaction的時候,peer節點會得到或返回(基於SDK)一個讀寫集結果,該結果會發送給orderer節點進行共識和排序,此時如果orderer節點突然down掉,致使請求服務失效而引發的資料丟失等問題,且目前的sdk對orderer傳送的Transaction的回撥會佔用極長的時間,當大批量資料匯入的時候該回調可認為不可用。
固此,在部署生產環境時,需要對orderer進行容錯處理,而所謂的容錯即搭建一個orderer節點叢集,該叢集會依賴於kafka和zookeeper
1.2Zokeeper
zookeeper選擇3、5、7個節點都可以,選擇奇數個節點可以選擇避免腦裂,一個節點會存在單點問題,7個以上就太多了。
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# ZooKeeper的基本運轉流程:
# 1、選舉Leader。
# 2、同步資料。
# 3、選舉Leader過程中演算法有很多,但要達到的選舉標準是一致的。
# 4、Leader要具有最高的執行ID,類似root許可權。
# 5、叢集中大多數的機器得到響應並follow選出的Leader。
#
[ [email protected] zookeeper]# mdir -p /u01/chainConfig/configfile/zookeeper
[[email protected] zookeeper]# cd /u01/chainConfig/configfile/zookeeper
[[email protected] zookeeper]# vim zookeeper1.yaml
version: '2'
services:
zooleeper1:
image: hyperledger/fabric-zookeeper:x86_64-1.0.1 //啟動映象的版本
extends:
file: ../hosts.yaml //host配置檔案
service: myYwhHost //host配置檔案中的名字
ports:
- 2181:2181 //zookeeper中三個埠 1、2181:對cline端提供服務 2、13888:選舉leader使用 3、12888:叢集內機器通訊使用(Leader監聽此埠)(在不被佔用的前提下可以改變)
- 12888:12888
- 13888:13888
environment: //相當於環境變數
- ZOO_MY_ID=1 //每一個zookeeper的id,(這裡每一個zookeeper是不一樣的)
//下面這句,在哪個zookeeper配置檔案中,那個就是0.0.0.0:12888:13888
//例如在zookeeper2.yaml檔案中:- ZOO_SERVERS=server.1=zookeeper1.ywhExample.com:12888:13888 server.2=0.0.0.0:12888:13888 server.3=zookeeper3.ywhExample.com:12888:13888 server.4=zookeeper4.ywhExample.com:12888:13888 server.5=zookeeper5.ywhExample.com:12888:13888
- ZOO_SERVERS=server.1=0.0.0.0:12888:13888 server.2=zookeeper2.ywhExample.com:12888:13888 server.3=zookeeper3.ywhExample.com:12888:13888 server.4=zookeeper4.ywhExample.com:12888:13888 server.5=zookeeper5.ywhExample.com:12888:13888
volumes: //對映的檔案地址,:右側是內部使用的路徑,:左側是宿主機上的檔案路徑
- /u01/zookeeper/data:/data
- /u01/zookeeper/datalog:/datalog
1.3Kafka
待續....