1. 程式人生 > >Hyperledger Fabric 1.0 快速搭建 -------- 多機部署 核心共識節點Orderer

Hyperledger Fabric 1.0 快速搭建 -------- 多機部署 核心共識節點Orderer

前言

在這裡我推薦兩位大神的部落格,可以參考或者直接跟著這兩位大神學習,我是閱讀這兩位大神的部落格和《深度探索區塊鏈Hyperledger技術與應用》一書部署的

《深度探索區塊鏈Hyperledger技術與應用》作者:張增駿、董寧、朱軒彤、陳劍雄  著。

上一篇文章中我們配置並生成了區塊鏈系統所需要的MSP證書和排序服務創世區塊,這篇文章介紹如何配置核心共識節點並且部署,如果有不對的地方,請告訴我,一定改正。

開始

1.1簡介

核心共識節點由Orderer、Kafka、Zookeeper組成,所以配置了三個.yaml配置檔案,基於Zookeeper和Kafka的叢集方案,啟動順序主要跟隨依賴,先啟動Zookeeper叢集,隨後啟動Kafka叢集,最後啟動Orderer叢集。在上一篇文章生成排序服務創世區塊

的配置檔案中也具體配置了kafka,OrdererType: kafka。

使用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

待續....