在 macOS 上使用 JDK 17 安装和配置 Kafka 最新版本(KRaft 模式)
本文将详细介绍如何在 macOS 上安装并配置 Kafka 的最新版本,使其在 KRaft 模式 下运行。KRaft 模式是 Kafka 3.x 及以上版本推荐的模式,它完全移除了对 ZooKeeper 的依赖。整个过程基于 JDK 17 和 Homebrew 进行安装和配置,并确保 Kafka 可以在后台运行并正常创建主题。
环境要求
macOS 版本:macOS Monterey 及以上版本
Java 版本:JDK 17
Kafka 版本:3.x 及以上(KRaft 模式)
包管理器:Homebrew
步骤 1:使用 Homebrew 安装 Kafka
首先,使用 Homebrew 安装 Kafka。Homebrew 是 macOS 上常用的包管理工具,可以简化软件的安装与更新。
brew install kafka
这条命令会安装 Kafka 的最新版本,Kafka 的配置文件通常位于 /opt/homebrew/etc/kafka/
。
步骤 2:配置 Kafka 使用 KRaft 模式
Kafka 默认依赖 ZooKeeper 来管理集群元数据,但在 Kafka 3.x 及以后的版本中,推荐使用 KRaft 模式 取代 ZooKeeper 来管理元数据。在这种模式下,Kafka 自身充当 broker 和 controller 角色。
打开
server.properties
文件:使用 Vim 编辑 Kafka 的配置文件
server.properties
:vim /opt/homebrew/etc/kafka/server.properties
修改配置文件:
在文件中进行以下修改,确保 Kafka 使用 KRaft 模式并设置好监听器:
# 节点的唯一 ID,标识这个 Kafka broker node.id=1 # broker 的 ID,需要与 node.id 一致 broker.id=1 # 启用 broker 和 controller 的角色 process.roles=broker,controller # 指定选举成员的集群节点,格式为 node.id@host:port controller.quorum.voters=1@localhost:9093 # 设置 broker 和 controller 的监听地址 listeners=PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093 # 指定 controller.listener.names,匹配 CONTROLLER 监听器 controller.listener.names=CONTROLLER # 指定不同监听器的安全协议 listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT # 存储日志的位置 log.dirs=/tmp/kraft-combined-logs
配置项解释:
node.id=1
和broker.id=1
:这两个 ID 都设置为 1,确保 Kafka 节点的唯一性,在 KRaft 模式下它们必须保持一致。process.roles=broker,controller
:定义当前节点既作为 broker,又作为 controller。controller.quorum.voters=1@localhost:9093
:定义控制器集群中的选举成员。listeners
:设置 Kafka 的监听地址,PLAINTEXT://localhost:9092
用于消息传递,CONTROLLER://localhost:9093
用于 controller 管理。controller.listener.names=CONTROLLER
:指定控制器监听器的名称为CONTROLLER
,必须与listeners
中定义的监听器一致。listener.security.protocol.map
:指定每个监听器的安全协议。log.dirs
:设置 Kafka 存储日志的位置。
步骤 3:格式化存储目录
在 KRaft 模式下,Kafka 需要对存储目录进行格式化,以初始化集群元数据。执行以下命令来格式化存储目录:
kafka-storage format --config /opt/homebrew/etc/kafka/server.properties --cluster-id $(kafka-storage random-uuid)
解释:
kafka-storage format
:格式化 Kafka 存储目录。--config
:指定 Kafka 的配置文件。--cluster-id $(kafka-storage random-uuid)
:生成一个新的集群 ID,用于唯一标识 Kafka 集群。
步骤 4:启动 Kafka(后台模式)
完成配置和格式化之后,可以启动 Kafka 服务并使其在后台运行:
kafka-server-start /opt/homebrew/etc/kafka/server.properties &
解释:
kafka-server-start
:启动 Kafka 服务器。&
:使 Kafka 在后台运行,这样你可以继续使用当前的终端会话。
步骤 5:测试 Kafka
启动 Kafka 后,可以通过以下步骤验证 Kafka 是否正常运行。
创建主题:
kafka-topics --create --topic my-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
解释:
--topic my-topic
:指定主题名称为my-topic
。--bootstrap-server localhost:9092
:指定 Kafka broker 的地址。--partitions 1
和--replication-factor 1
:设置主题有 1 个分区和 1 个副本。
发送消息到主题:
kafka-console-producer --topic my-topic --bootstrap-server localhost:9092
启动后,可以在终端中输入消息,每输入一条消息按一次回车,消息就会被发送到 Kafka。
消费消息:
kafka-console-consumer --topic my-topic --bootstrap-server localhost:9092 --from-beginning
解释:
--from-beginning
:指定从主题的起始位置开始消费。
步骤 6:停止 Kafka
如果需要停止 Kafka,可以查找 Kafka 的进程 ID 并终止它。
查找 Kafka 的进程 ID:
ps -ef | grep kafka
停止 Kafka:
假设 Kafka 的进程 ID 是
12345
,可以使用以下命令来停止它:kill 12345
或者更友好地停止:
kill -TERM 12345
总结
通过以上步骤,你可以在 macOS 上使用 JDK 17 安装和配置 Kafka 的最新版本并使其在 KRaft 模式下运行。KRaft 模式使 Kafka 更加简化,无需再依赖 ZooKeeper,从而提升系统的易用性和可靠性。如果你按照本文的步骤操作,相信你可以顺利完成 Kafka 的安装和配置!
如果有任何问题或遇到困难,欢迎在评论区留言交流。