kafka KRaft 集群搭建

kafka KRaft集群安装

包下载

https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz

kafka集群构建好后的数据目录结构

[root@localhost data]# tree /data/kafka
/data/kafka
├── kafka-1	# 节点1源码目录
├── kafka-2	# 节点2源码目录
├── kafka-3	# 节点3源码目录
└── kafkadata	# kafka数据存放目录
    ├── kafkadata1	# 节点1数据存放目录
    ├── kafkadata2	# 节点2数据存放目录
    └── kafkadata3	# 节点3数据存放目录

更改kafka配置文件

kafka节点1配置文件
[root@localhost kraft]# cat cat /data/kafka/kafka-1/config/kraft/server.properties  |grep -Ev "#|^$"
# 表示kafka的KRaft模式
process.roles=broker,controller
# 集群节点的标记
node.id=1
# 参与集群投票节点
controller.quorum.voters=1@localhost:19093,2@localhost:29093,3@localhost:39093
# 定义监听地址
listeners=PLAINTEXT://:19092,CONTROLLER://:19093
inter.broker.listener.name=PLAINTEXT
# 对外宣告地址
advertised.listeners=PLAINTE
<think>嗯,用户想了解如何在不使用ZooKeeper的情况下搭建Kafka集群。首先我记得Kafka在旧版本中依赖ZooKeeper来管理集群元数据和控制器选举,但最新版本好像支持去ZooKeeper化了。需要确认具体版本,比如Kafka 3.0之后开始引入Kraft协议来替代ZooKeeper。 接下来,我需要整理具体的步骤。首先用户需要下载支持Kraft模式的Kafka版本,比如3.0及以上。然后配置每个节点的server.properties文件,设置process.roles、node.id、controller.quorum.voters等参数。每个节点的配置需要调整对应的监听地址和端口,以及日志目录。之后,需要初始化集群元数据,使用kafka-storage.sh工具格式化存储目录。最后启动各个节点,并验证集群状态。 用户可能遇到的问题包括配置文件错误、节点ID冲突、端口未开放等。需要提醒他们检查配置项是否正确,确保所有节点配置一致,并且网络互通。另外,权限问题可能也需要处理,比如使用chown赋予文件夹权限,这在引用[4]中提到过。 还需要比较使用ZooKeeper和Kraft的区别,比如Kafka自管理元数据带来的优势,如简化部署和维护。同时,用户可能需要知道如何验证集群是否正常运行,比如创建Topic和测试消息生产消费。引用[5]里提到了格式化存储目录的步骤,这也是关键的一环。 最后,生成相关问题,比如如何验证集群状态、Kraft模式的优势、配置文件参数解释以及兼容性考虑。这些都能帮助用户更全面地理解不使用ZooKeeper搭建Kafka集群的过程和注意事项。</think>### 不使用ZooKeeper搭建Kafka集群的方案 自Kafka 3.0版本起,官方支持通过**KRaftKafka Raft Metadata)协议**替代ZooKeeper,实现自管理的元数据集群[^5]。以下是具体步骤: --- #### 1. **环境准备** - **下载Kafka 3.0+版本**:确保所有节点使用相同版本(如3.7.1)。 - **节点规划**:例如3台服务器(node1、node2、node3),均需配置`config/kraft/server.properties`。 --- #### 2. **配置KRaft模式** 修改`server.properties`文件,关键参数如下: ```properties # 定义节点角色(broker和controller) process.roles=broker,controller # 节点唯一ID(每个节点不同) node.id=1 # 控制器节点列表(所有节点需包含) controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093 # 监听地址(根据节点实际IP调整) listeners=PLAINTEXT://:9092,CONTROLLER://:9093 # 日志存储目录 log.dirs=/tmp/kraft-logs ``` --- #### 3. **初始化元数据存储** 在**任意一个节点**执行格式化命令: ```bash # 生成集群唯一ID bin/kafka-storage.sh random-uuid # 格式化存储目录(假设集群ID为Lf7g3eSTQ6mZ6wJ4JYb_hw) bin/kafka-storage.sh format -t Lf7g3eSTQ6mZ6wJ4JYb_hw -c config/kraft/server.properties ``` --- #### 4. **启动集群** 在所有节点执行启动命令: ```bash bin/kafka-server-start.sh config/kraft/server.properties ``` --- #### 5. **验证集群状态** ```bash # 创建Topic测试 bin/kafka-topics.sh --create --topic test --bootstrap-server node1:9092 --partitions 3 --replication-factor 3 # 查看集群节点信息 bin/kafka-metadata-shell.sh --snapshot /tmp/kraft-logs/__cluster_metadata-0/00000000000000000000.log ``` --- #### **注意事项** 1. **配置文件一致性**:所有节点的`controller.quorum.voters`需包含全部控制器节点信息[^5]。 2. **网络互通**:确保节点间端口(如9093)开放。 3. **权限管理**:若使用普通用户部署,需通过`chown -R`赋权存储目录[^4]。 --- ### 相关问题 1. **如何验证KRaft模式下Kafka集群是否正常工作?** 2. **KRaft模式相比ZooKeeper有哪些性能优势?** 3. **`controller.quorum.voters`参数的具体作用是什么?** 4. **Kafka 3.0+版本是否完全兼容旧版ZooKeeper模式?** --- ### 引用说明 [^1]: Kafka的Leader选举机制设计。 [^4]: Linux权限管理与用户切换操作。 [^5]: Kafka 3.0+版本KRaft模式配置指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值