本文主要是介绍单台centos7主机做zookeeper和kafka集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
集群环境越来越普遍了,本教程练习在单台centos主机上做zookeeper和kafka集成集群环境:zookeeper和kafka各三个节点,主要是配置,重点看配置,jdk安装部分略过,亲测通过。
环境说明
主机:CentOS7 64位linux系统
JDK:jdk1.8
Zookeeper:zookeeper-3.4.10.tar.gz 下载网址:http://mirror.bit.edu.cn/apache/zookeeper/
kafka:kafka_2.11-1.0.0.tgz 下载地址:http://kafka.apache.org/downloads
1、Zookeeper部分
1.1、目录结构
搭建的Zookeeper集群准备设置端口为2181/2182/2183,为了便于维护,按照端口号新建目录,并新建子目录data和dataLog,然后把解压后的Zookeeper文件目录拷贝到2181/2182/2183三个目录下,目录结构如图:
1.2、配置文件修改
修改配置文件zookeeper-3.4.10/conf/zoo.cfg,各项说明摘抄自网络,具体每个节点的配置见截图
- initLimit
ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。 - syncLimit
配置follower和leader之间发送消息,请求和应答的最大时间长度。 - tickTime
tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。 - server.id=host:port1:port2
其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。 - dataDir
其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。如果没有配置dataLogDir,那么事务日志也会存储在此目录。
2181/zookeeper-3.4.10/conf/zoo.cfg的配置
2182/zookeeper-3.4.10/conf/zoo.cfg的配置
2183/zookeeper-3.4.10/conf/zoo.cfg的配置
1.3、生成myid文件
在每个data子目录下生成myid文件,文件内容为集群中指定的值,如server.1=192.168.213.4:2888:3888就需指定myid的文件内容为1,server.2=192.168.213.4:2788:3788就需指定myid的文件内容为2,以此类推,具体配置见截图
1.4、命令执行效果
通过命令“2181/zookeeper-3.4.10/bin/zkServer.sh start”分别启动三个节点
通过命令“2183/zookeeper-3.4.10/bin/zkServer.sh status”分别查看三个节点的状态,可以看出2182被选举为了主节点
2、kafka部分
2.1、目录结构
新建三个目录分别命名为kafka1、kafka2、kafka3,并分别创建dataLog子目录,目录结构如图所示
2.2、配置文件修改
修改配置文件“kafka_2.11-1.0.0/config/server.properties”,由于配置文件内容太长,仅列出需要修改的项:
kafka1节点
broker.id=1
listeners=PLAINTEXT://192.168.213.4:9092
port=9092
host.name=192.168.213.4
log.dirs=/home/tmp/kafka1/dataLog
zookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183
kafka2节点
broker.id=2
listeners=PLAINTEXT://192.168.213.4:9093
port=9093
host.name=192.168.213.4
log.dirs=/home/tmp/kafka2/dataLog
zookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183
kafka3节点
broker.id=3
listeners=PLAINTEXT://192.168.213.4:9094
port=9094
host.name=192.168.213.4
log.dirs=/home/tmp/kafka3/dataLog
zookeeper.connect=192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183
2.3、命令执行效果
启动三个kafka节点,创建主题test后分别在三个节点上发送消息,打开一个消费窗口接收消息。
--启动kafka命令(每个节点都要启动)
kafka1/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka1/kafka_2.11-1.0.0/config/server.properties
kafka2/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka2/kafka_2.11-1.0.0/config/server.properties
kafka3/kafka_2.11-1.0.0/bin/kafka-server-start.sh kafka3/kafka_2.11-1.0.0/config/server.properties
--创建主题、列出主题
kafka3/kafka_2.11-1.0.0/bin/kafka-topics.sh --create --zookeeper 192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183 --replication-factor 1 --partitions 1 --topic test
kafka3/kafka_2.11-1.0.0/bin/kafka-topics.sh --list --zookeeper 192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183--根据主题发送消息
kafka1/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9092 --topic test
kafka2/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9093 --topic test
kafka3/kafka_2.11-1.0.0/bin/kafka-console-producer.sh --broker-list 192.168.213.4:9094 --topic test
--根据主题接收消息
kafka3/kafka_2.11-1.0.0/bin/kafka-console-consumer.sh --zookeeper 192.168.213.4:2181,192.168.213.4:2182,192.168.213.4:2183 --topic test --from-beginning
发送消息
接收消息(三个节点发送的消息都已接收到)
本人小白一个,纯粹是练手,亲测通过,欢迎讨论指正
这篇关于单台centos7主机做zookeeper和kafka集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!