1.简介
由于zookeeper慢慢的成了kafka的瓶颈,kafka提出了去zookeeper化的概念,并在2.8版本之后版本都包含了kraft模式,也就是不需要使用zookeeper了,目前这种模式还不成熟,企业中使用kafka还是推荐使用zk+kafka的方式,否则可能会出现意想不到的错误。
2.环境准备
准备2台centos虚拟机以及kafka3.0的压缩包即可,上一节中,已经介绍了如何下载以及如何安装centos虚拟机了。
3.开始搭建
3.1 修改配置文件
解压kafka3.0到/usr/local下,我这里将它更名为kafka2
这里修改的配置文件和之前的配置文件就有一点不同了,需要修改kafka目录下config/kraft/server.properties文件
编辑server.properties文件
vi server.properties
需要修改的参数有:
# 说明本台kafka的角色,是broker还是controller,controller相当于之前的zk
process.roles=broker,controller
# 集群中的唯一ID,不同机器的kafka这里要设置成不一样的
node.id=1
# 集群配置,格式为nodeId@IP:端口,我这里用2台做集群,中间用逗号分隔
controller.quorum.voters=1@192.168.181.128:9093,2@192.168.181.129:9093
listeners=PLAINTEXT://192.168.181.128:9092,CONTROLLER://192.168.181.128:9093
# kakfa机器注册的IP
advertised.listeners=PLAINTEXT://192.168.181.128:9092
# 数据存储的地址
log.dirs=/usr/local/kafka2/data
保存退出,将配置好的kafka发送到另一台机器上
scp -r /usr/local/kafka2 root@192.168.181.129:/usr/local/
将第二台机器的node.id还有注册地址改一下
node.id=2
listeners=PLAINTEXT://192.168.181.129:9092,CONTROLLER://192.168.181.129:9093
advertised.listeners=PLAINTEXT://192.168.181.129:9092
先前我们已经把9092端口打开了,这里我们将9093端口也打开一下,用作kafka之间的通讯
firewall-cmd --zone=public --add-port=9093/tcp --permanent
3.2 生成集群唯一ID
kraft模式需要我们生成集群的唯一ID,用来配置集群环境,kafka给我们提供了一个工具kafka-storage.sh
/usr/local/kafka2/bin/kafka-storage.sh random-uuid
利用该UUID配置一下我们的集群环境(注意每个kafka都要运行一下,要使用这同一个UUID)
/usr/local/kafka2/bin/kafka-storage.sh format -t e32o2jB4SwGFQYn18rauDA -c /usr/local/kafka2/config/kraft/server.properties
可以看到,这么做的目的,是将我们的UUID写到配置文件当中
3.3 启动kafka集群
/usr/local/kafka2/bin/kafka-server-start.sh -daemon /usr/local/kafka2/config/kraft/server.properties
3.4 验证一下kafka有没有搭建成功
往第一台borker里面新建一个主题first,发现第二台机器也可以看到这个主题,集群搭建成功