一、前提条件
1、部署Kafka集群构建时,至少需要3台服务器、奇数台
2、Kafka安装需要java环境,jdk1.8
3、Kafka安装包版本: kafka_2.11-0.10.0.1.tar.gz
假设4、3台服务器分别为kafka1、kafka2、kafka3
kafka服务器名称
IP
域名
kafka1
192.168.172.134
kafka1.sd.cn
kafka2
192.168.172.141
kafka2.sd.cn
kafka3
192.168.172.142
kafka3.sd.cn
5、增加主机配置:
二、Zookeeper集群搭建
直接使用kafka拥有的zookeeper构建zk集群
1、将安装包kafka_2.11-0.10.0.1.tar.gz上传到/opt目录
2、解冻: tar-zxvf Kafka _ 2.11-0.10.0.1.tar.gz
3、进入目录: cd /opt/kafka_2.11-0.10.0.1/
4、创建zookeeper目录: mkdir zk_kfk_data
5、进入目录: CD/opt/Kafka _ 2.11-0.10.0.1/config
6、修改zookeeper.properties文件:
三台计算机上的zookeeper.properties文件具有相同的配置,其中data.Dir是zk的数据目录,server.1、server.2和server.3是群集信息。
3358 www.Sina.com/http://www.Sina.com /是zookeeper服务之间通信的端口
3358 www.Sina.com/http://www.Sina.com /是zookeeper与其他APP应用程序通信的端口。
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /
每隔Zookeeper服务器之间或客户端和服务器之间保持心跳的时间间隔(tickTime时间)发送一次心跳。
tickTime以毫秒为单位。
tickTime :此参数用于定义心跳间隔。 zookeeper客户端和服务端之间也有类似于web开发的会话概念,zookeeper中最小的会话过期时间是tickTime的两倍。
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /
集群内的follower服
务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)syncLimit:LF同步通信时限
集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
7、创建myid文件:进入/opt/kafka_2.11-0.10.0.1/zk_kfk_data目录,创建myid文件,将三台服务器上的myid文件分别写入1,2,3。myid是zookeeper集群用来发现彼此的标识,必须创建,且不能相同。
8、执行启动zookeeper命令:
nohup /opt/kafka_2.11-0.10.0.1/xyddp/zookeeper-server-start.sh /opt/kafka_2.11-0.10.0.1/config/zookeeper.properties &>> /opt/kafka_2.11-0.10.0.1/zookeeper.log &
三台机器都执行启动命令,查看zookeeper的日志文件,没有报错就说明zookeeper集群启动成功了。
三、Kafka集群搭建
1、进入目录:cd /opt/kafka_2.11-0.10.0.1/
2、创建kafka日志数据目录:mkdir kafka-logs-1
3、进入目录:cd /opt/kafka_2.11-0.10.0.1/config
4、修改server.properties配置文件:
修改参数如下:
参数名称
参数值
备注
broker.id
0
broker.id的值三个节点要配置不同的值,分别配置为0,1,2
advertised.host.name
kafka1.sd.cn
在hosts文件配置kafka1域名,另外两台分别为:kafka2.sd.cn,kafka3.sd.cn
advertised.port
9092
默认端口,不需要改
log.dirs
/opt/kafka_2.11-0.10.0.1/kafka-logs-1
Kafka日志数据目录
num.partitions
40
分区数,根据自行修改
log.retention.hours
24
日志保存时间
zookeeper.connect
kafka1.sd.cn:3181,kafka2.sd.cn:3181,kafka3.sd.cn:3181
zookeeper连接地址,多个以逗号隔开
5、 启动kafka集群:
nohup /opt/kafka_2.11-0.10.0.1/xyddp/kafka-server-start.sh /opt/kafka_2.11-0.10.0.1/config/server.properties &>> /opt/kafka_2.11-0.10.0.1/kafka.log &
三个节点均要启动;启动无报错,即搭建成功。
四、测试Kafka集群
1、创建topic:test
/opt/kafka_2.11-0.10.0.1/xyddp/kafktopics.sh --create --zookeeper kafka1.sd.cn:3181,kafka2.sd.cn:3181,kafka3.sd.cn:3181 --replication-factor 1 --partitions 1 --topic test
2、列出已创建的topic列表
/opt/kafka_2.11-0.10.0.1/xyddp/kafka-topics.sh --list --zookeeper localhost:3181
3、模拟客户端去发送消息
/opt/kafka_2.11-0.10.0.1/xyddp/kafka-console-producer.sh --broker-list kafka1.sd.cn:9092,kafka2.sd.cn:9092,kafka3.sd.cn:9092 --topic test
4、模拟客户端去接受消息
/opt/kafka_2.11-0.10.0.1/xyddp/kafka-console-consumer.sh --zookeeper kafka1.sd.cn:3181,kafka2.sd.cn:3181,kafka3.sd.cn:3181 --from-beginning --topic test