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模式_第1张图片
这里写图片描述

本文则介绍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

测试

java-version

配置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模式_第2张图片
zookeeper-config

创建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模式_第3张图片
kafka-config01

添加default.replication.factor,建议为broker节点的个数
添加message.max.bytes和replica.fetch.max.bytes,为了避免传输数据了较大的chaincode出现错误

CentOS配置fabric-1.0的kafka模式_第4张图片
kafka-config02

配置zookeeper集群

CentOS配置fabric-1.0的kafka模式_第5张图片
kafka-config03

启动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模式_第6张图片
configtx-kafka

重新生成创世区块文件,重启orderer即可。

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

你可能感兴趣的:(CentOS配置fabric-1.0的kafka模式)