天天看點

CentOS配置fabric-1.0的kafka模式

目前fabric1.0将廣播服務從peer節點中分離出來,形成orderer節點,orderer節點提供原子通信保證(Atomic Communication Guarantee),也叫做有序廣播(total-order broadcast)、原子廣播(atomic broadcast), 共識(consensus)。即将peer節點發送過來的交易進行排序、打包為區塊,然後将區塊廣播各個組織的peer節點。

fabric-1.0的orderer提供solo、kafka和bft三種模式,分别可以認為是中心化、半中心化和去中心化。其中solo模式指整個fabric網絡依賴于一個orderer節點,而kafka模式依賴于一個kafka叢集,bft模式則是去中心化的orderer叢集,但目前bft模式并沒有在fabric-1.0中實作。

CentOS配置fabric-1.0的kafka模式

本文則介紹fabric-1.0的kafka模式搭建。fabric-1.0環境配置請參考這裡。

配置Java環境

下載下傳并解壓JDK

從http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html中下載下傳jdk-8u131-linux-x64.tar.gz包并存放在任意目錄

将jdk包解壓到指定目錄

$ sudo mkdir -p /opt/java
$ sudo tar -zxvf jdk-8u131-linux-x64.tar.gz -C /opt/java

           

配置環境變量

編輯/etc/profile,添加

export JAVA_HOME=/opt/java/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

           

導入環境變量

$ source /etc/profile
           

測試

CentOS配置fabric-1.0的kafka模式

配置Zookeeper

zookeeper叢集至少3個節點

下載下傳并解壓zookeeper

從http://zookeeper.apache.org/releases.html#download下載下傳 zookeeper-3.4.10.tar.gz,并解壓

$ tar -zxvf zookeeper-3.4.10.tar.gz -C /home/hyperledger/opt/
           

修改配置檔案

$ cd /home/hyperledger/opt/zookeeper-3.4.10/conf
$ cp zoo_sample.cfg zoo.cfg
$ vim zoo.cfg
           

配置以下參數

CentOS配置fabric-1.0的kafka模式

建立myid檔案

在$dataDir中建立myid

$ mkdir -p /home/hyperledger/data/zookeeper
$ vim /home/hyperledger/data/zookeeper myid
           

在檔案中寫入1

其他節點相應寫入2和3

啟動zookeeper服務

在各個節點上啟動zkServer,確定相應端口的防火牆權限打開

$ bin/zkServer.sh start
           

配置kafka叢集

下載下傳并解壓kafka包

在http://kafka.apache.org/downloads下載下傳 kafka_2.11-0.10.2.0.tgz,解壓檔案

$ tar -zxvf kafka_2.11-0.10.2.0.tgz -C /home/hyperledger/opt/
           

修改配置檔案

$ vim /home/hyperledger/opt/kafka_2.11-0.10.2.0/config/server.properties
           

修改broke.id為0,其他節點對應1,2

CentOS配置fabric-1.0的kafka模式

添加default.replication.factor,建議為broker節點的個數

添加message.max.bytes和replica.fetch.max.bytes,為了避免傳輸資料了較大的chaincode出現錯誤

CentOS配置fabric-1.0的kafka模式

配置zookeeper叢集

CentOS配置fabric-1.0的kafka模式

啟動kafka服務

背景啟動kafka服務

$ bin/kafka-server-start.sh -daemon config/server.properties
           

檢視日志

$ tailf logs/server.log
           

測試

建立topic

$ bin/kafka-topics.sh --create --zookeeper 192.168.12.10:2181 --replication-factor 3 --partitions 3  --topic cluster-test 
#--zookeeper是叢集清單,可以指定所有節點,也可以指定為部分清單
#--replication-factor 為複制數目,資料會自動同步到其他broker上,防止某個broker當機資料丢失
#--partitions 一個topic可以切分成多個partition,一個消費者可以消費多個partition,但一個partition隻能被一個消費者消費
           

檢視topic詳情

$ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic cluster-test
           

啟動生産者

$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic cluster-test
           

啟動消費者

$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic cluster-test --from-beginning
           

在生産者console輸入消息進行發送

在消費者console就可以看到消息了

修改fabric的configtx.yaml配置檔案

修改fabric/common/configtx/tool/configtx.yaml

配置OrdererType為kafka,并配置broker清單

CentOS配置fabric-1.0的kafka模式

重新生成創世區塊檔案,重新開機orderer即可。

另外zookeeper和kafak叢集也可以利用fabric-zookeeper和fabric-kafka鏡像,用docker-compose工具進行部署。

繼續閱讀