在Ubuntu上搭建Kafka集群需要以下步骤:
准备工作
-
安装Java环境:
sudo apt update sudo apt install openjdk-11-jdk -y
-
开放端口: Kafka需要开放9092端口和9093端口,三台机器上都需开放这两个端口。
sudo firewall-cmd --zone public --add-port 9092/tcp --permanent sudo firewall-cmd --zone public --add-port 9093/tcp --permanent sudo firewall-cmd --reload
下载和解压Kafka
下载预编译的Kafka二进制文件,例如Kafka 3.6.2版本。
wget https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz tar -xzf kafka_2.12-3.6.2.tgz sudo mv kafka_2.12-3.6.2 /usr/local/kafka
配置Kafka
进入配置目录并编辑server.properties
文件。
cd /usr/local/kafka/config/kraft sudo vi server.properties
主要配置项包括:
node.id
: Kafka的broker节点id。controller.quorum.voters
: Kafka集群中的节点,定义了一组Controller节点及其网络地址。advertised.listeners
: 节点自己的监听地址。
创建KRaft集群
在任意一个节点上生成集群id。
/usr/local/kafka/bin/kafka-storage.sh random-uuid
然后在三台机器上执行以下命令完成集群元数据配置:
bin/kafka-storage.sh format -t [生成的字符串] -c config/kraft/server.properties
启动Kafka服务
在每台机器上启动Kafka服务:
cd /usr/local/kafka sudo bin/kafka-server-start.sh -daemon config/kraft/server.properties
验证Kafka是否启动成功
使用以下命令检查Kafka broker是否在监听端口9092:
netstat -tulnp | grep 9092
通信测试
可以通过kafka-console-producer.sh
和kafka-console-consumer.sh
两个脚本进行测试。
创建测试主题
sudo /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092 --replication-factor 3 --partitions 1 --topic test-topic
列出主题
sudo /usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092
生产消息
sudo /usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092 --topic test-topic
消费消息
sudo /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092 --topic test-topic --from-beginning
注意事项
- 确保每个节点的
node.id
不冲突。 - Controller中指定的节点,都要在集群元数据配置后,再逐一启动Kafka服务,否则启动失败。
- 在
server.properties
配置文件里面找到log.dirs
配置的路径,将该路径下的文件全部删除,重新创建KRaft集群,最后重启Kafka。
以上步骤可以帮助你在Ubuntu上成功搭建一个Kafka集群。如果在搭建过程中遇到问题,可以参考相关文档或社区支持。