Kafka3.x 使用 KRaft 模式部署 不依赖 ZooKeeper

前言

Kafka 从 2.8.0 版本开始引入了 Kafka Raft Metadata Mode(KRaft 模式),这个模式允许 Kafka 在不依赖 ZooKeeper 的情况下进行元数据管理。KRaft 模式在 Kafka 3.0.0 中进入了稳定版本,本文部署的 Kafka_2.12-3.6.0 单机模式

环境

CentOS 7.9
Java JDK 17

1.下载和解压 Kafka

wget https://archive.apache.org/dist/kafka/3.6.0/kafka_2.12-3.6.0.tgz
tar -xzf kafka_2.12-3.6.0.tgz
cd kafka_2.12-3.6.0/

2. 配置 Kafka 使用 KRaft 模式

2.1 修改 Kafka 的配置文件 config/kraft/server.properties

vim config/kraft/server.properties
# 设置 Kafka 数据日志存储目录
log.dirs=/data/kafka/kafka-logs

2.2 生成数据目录ID:

bin/kafka-storage.sh random-uuid

命令格式化数据目录,–cluster-id (上一步的数据目录ID)

 bin/kafka-storage.sh format --config config/kraft/server.properties --cluster-id maE6YugNQHWt9u0xK1XA2A

3. 启动 和 停止 Kafka

3.1启动

Kafka 3.0.0 及之后的版本 ,可以使用以下命令来启动 Kafka:

bin/kafka-server-start.sh  -daemon config/kraft/server.properties

3.2停止

bin/kafka-server-stop.sh  -daemon config/kraft/server.properties

4. 验证 Kafka 是否正常运行

bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

如果配置和启动正确,能看到一个空的主题列表(因为没有创建任何主题)。

5. 创建一个测试主题

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test --partitions 1 --replication-factor 1

6. 生产和消费消息

测试生产和消费消息来验证 Kafka 是否工作正常:

生产消息:

bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test

在命令行中输入消息并按回车。
在这里插入图片描述

消费消息:
新的终端执行

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

在这里插入图片描述

至此 部署完成。

### Kafka 集群部署方案:使用 ZooKeeper 的替代方案 自 Apache Kafka 2.8 版本起,引入了 KRaft (Kafka Raft Metadata)[^1]模式作为元数据管理的新机制,从而允许 Kafka 依赖于外部的 ZooKeeper 实例来管理和协调集群中的元数据。 #### 启用 KRaft 模式的配置方法 为了启用 KRaft 模式,在启动 Kafka Broker 前需修改 `server.properties` 文件并设置如下参数: ```properties process.roles=broker,controller node.id=<unique_node_id> listeners=PLAINTEXT://<host>:9092 controller.quorum.voters=<comma_separated_list_of_controller_nodes> ``` 其中 `<unique_node_id>` 是每个节点唯一的标识符;而 `<comma_separated_list_of_controller_nodes>` 则指定了参与选举控制器的角色列表,格式为 `id@hostname:port,id@hostname:port,...`. 对于已有的基于 ZooKeeperKafka 安装环境来说,如果想要迁移到 KRaft 模式,则需要先备份现有数据,并按照官方文档指导完成迁移过程. #### 运行脚本调整 当采用 KRaft 方式时,再通过 ZooKeeper 来创建或删除主题。此时应直接调用 Kafka 自带工具命令来进行这些操作: ```bash bin/kafka-topics.sh --create --topic my_topic_name \ --partitions 3 --replication-factor 2 \ --bootstrap-server localhost:9092 ``` 同样地,查看、描述以及删除 Topic 可以分别执行对应的子命令选项[--bootstrap-server 参数指定目标服务器地址][^2]: ```bash # 查看所有 topic bin/kafka-topics.sh --list --bootstrap-server localhost:9092 # 描述特定 topic bin/kafka-topics.sh --describe --topic my_topic_name --bootstrap-server localhost:9092 # 删除 topic bin/kafka-topics.sh --delete --topic my_topic_name --bootstrap-server localhost:9092 ``` 以上展示了如何在需要 ZooKeeper 支持的情况下构建和维护一个完整的 Kafka 生产者/消费者消息传递平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值