CentOS配置fabric-1.0的kafka模式

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

fabric-1.0的orderer提供solo、kafka和bft三種模式,分別可以認(rèn)為是中心化、半中心化和去中心化。其中solo模式指整個fabric網(wǎng)絡(luò)依賴于一個orderer節(jié)點,而kafka模式依賴于一個kafka集群,bft模式則是去中心化的orderer集群,但目前bft模式并沒有在fabric-1.0中實現(xiàn)。

這里寫圖片描述

本文則介紹fabric-1.0的kafka模式搭建。fabric-1.0環(huán)境配置請參考這里。

配置Java環(huán)境

下載并解壓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

配置環(huán)境變量

編輯/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

導(dǎo)入環(huán)境變量

$ source /etc/profile

測試

java-version

配置Zookeeper

zookeeper集群至少3個節(jié)點

下載并解壓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

配置以下參數(shù)

zookeeper-config

創(chuàng)建myid文件

在$dataDir中創(chuàng)建myid

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

在文件中寫入1
其他節(jié)點相應(yīng)寫入2和3

啟動zookeeper服務(wù)

在各個節(jié)點上啟動zkServer,確保相應(yīng)端口的防火墻權(quán)限打開

$ 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,其他節(jié)點對應(yīng)1,2

kafka-config01

添加default.replication.factor,建議為broker節(jié)點的個數(shù)
添加message.max.bytes和replica.fetch.max.bytes,為了避免傳輸數(shù)據(jù)了較大的chaincode出現(xiàn)錯誤

kafka-config02

配置zookeeper集群

kafka-config03

啟動kafka服務(wù)

后臺啟動kafka服務(wù)

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

查看日志

$ tailf logs/server.log

測試

創(chuàng)建topic

$ bin/kafka-topics.sh --create --zookeeper 192.168.12.10:2181 --replication-factor 3 --partitions 3  --topic cluster-test 
#--zookeeper是集群列表,可以指定所有節(jié)點,也可以指定為部分列表
#--replication-factor 為復(fù)制數(shù)目,數(shù)據(jù)會自動同步到其他broker上,防止某個broker宕機數(shù)據(jù)丟失
#--partitions 一個topic可以切分成多個partition,一個消費者可以消費多個partition,但一個partition只能被一個消費者消費

查看topic詳情

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

啟動生產(chǎn)者

$ 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

在生產(chǎn)者console輸入消息進行發(fā)送
在消費者console就可以看到消息了

修改fabric的configtx.yaml配置文件

修改fabric/common/configtx/tool/configtx.yaml
配置OrdererType為kafka,并配置broker列表

configtx-kafka

重新生成創(chuàng)世區(qū)塊文件,重啟orderer即可。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容