kafka集群如何在ubuntu搭建
导读:在 Ubuntu 上搭建 Kafka 集群的两种主流方式 使用 KRaft 模式(推荐,Kafka 3.0+):不再依赖 Zookeeper,部署与运维更简单。 使用 Zookeeper 模式:兼容旧版本与既有生态,部署步骤相对繁琐。 下...
在 Ubuntu 上搭建 Kafka 集群的两种主流方式
- 使用 KRaft 模式(推荐,Kafka 3.0+):不再依赖 Zookeeper,部署与运维更简单。
- 使用 Zookeeper 模式:兼容旧版本与既有生态,部署步骤相对繁琐。
下文分别给出可直接复制执行的步骤,默认以 3 台 Ubuntu 服务器为例,节点 IP 分别为 192.168.3.191/192.168.3.192/192.168.3.193,Kafka 版本示例为 3.6.2。请按你的实际 IP 与目录调整。
一、KRaft 模式部署步骤(推荐)
-
环境准备
- 安装 Java 11(Kafka 3.6+ 建议使用 11):
sudo apt update & & sudo apt install -y openjdk-11-jdk
java -version - 创建系统用户与目录(示例):
sudo useradd -r -s /bin/false kafka
sudo mkdir -p /opt/kafka /var/log/kafka
sudo chown -R kafka:kafka /opt/kafka /var/log/kafka - 开放防火墙端口(如使用 ufw):
sudo ufw allow 9092/tcp
sudo ufw reload - 下载并解压 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 /opt/kafka
sudo chown -R kafka:kafka /opt/kafka
- 安装 Java 11(Kafka 3.6+ 建议使用 11):
-
配置 KRaft(每台机器不同)
- 进入配置目录:cd /opt/kafka/config/kraft
- 编辑 server.properties,关键项示例:
节点唯一 ID(三台分别设为 1/2/3)
node.id=1对外通信监听(请替换为各节点内网 IP)
listeners=PLAINTEXT://192.168.3.191:9092
advertised.listeners=PLAINTEXT://192.168.3.191:9092控制器法定人数(3 节点全纳入)
controller.quorum.voters=1@192.168.3.191:9093,2@192.168.3.192:9093,3@192.168.3.193:9093日志目录(确保磁盘空间充足)
log.dirs=/var/log/kafka - 说明:KRaft 模式下 controller 通信默认端口为 9093,与 broker 监听端口 9092 区分。
-
初始化并启动集群
- 在任意一台节点生成集群 ID(只执行一次):
/opt/kafka/bin/kafka-storage.sh random-uuid假设输出:ABCDEF12-3456-7890-ABCD-EF1234567890
- 三台节点分别用同一集群 ID 格式化存储(每台执行一次):
/opt/kafka/bin/kafka-storage.sh format -t ABCDEF12-3456-7890-ABCD-EF1234567890 -c /opt/kafka/config/kraft/server.properties - 启动服务(每台执行):
sudo -u kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties - 检查监听:ss -lntp | grep -E ‘:(9092|9093)’
- 在任意一台节点生成集群 ID(只执行一次):
-
快速验证
- 创建主题(副本因子不超过 broker 数):
/opt/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 - 列出主题:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.3.191:9092 - 生产消息:
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server 192.168.3.191:9092 --topic test-topic - 消费消息:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.3.191:9092 --topic test-topic --from-beginning
- 创建主题(副本因子不超过 broker 数):
二、Zookeeper 模式部署步骤(传统方式)
-
安装并配置 Zookeeper 集群(3 节点)
- 下载解压(示例版本 3.8.0):
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
tar -xzf apache-zookeeper-3.8.0-bin.tar.gz
sudo mv apache-zookeeper-3.8.0-bin /opt/zookeeper - 配置 zoo.cfg(三台一致,除 myid 外):
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=192.168.3.191:2888:3888
server.2=192.168.3.192:2888:3888
server.3=192.168.3.193:2888:3888 - 写入 myid(仅在对应节点):
在 192.168.3.191 上:echo 1 | sudo tee /var/lib/zookeeper/myid
在 192.168.3.192 上:echo 2 | sudo tee /var/lib/zookeeper/myid
在 192.168.3.193 上:echo 3 | sudo tee /var/lib/zookeeper/myid
- 启动并检查:
/opt/zookeeper/bin/zkServer.sh start
/opt/zookeeper/bin/zkServer.sh status
- 下载解压(示例版本 3.8.0):
-
安装并配置 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 /opt/kafka - 编辑 config/server.properties,关键项示例:
每台唯一
broker.id=1监听地址(请替换为各节点内网 IP)
listeners=PLAINTEXT://192.168.3.191:9092
advertised.listeners=PLAINTEXT://192.168.3.191:9092Zookeeper 集群地址
zookeeper.connect=192.168.3.191:2181,192.168.3.192:2181,192.168.3.193:2181
log.dirs=/var/log/kafka - 启动服务(每台执行):
sudo -u kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
- 下载解压(示例版本 3.6.2):
-
快速验证
- 创建主题:
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.3.191:9092 --replication-factor 3 --partitions 1 --topic test-topic - 列出主题:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.3.191:9092 - 生产/消费消息(同上)
- 创建主题:
三、常见问题与优化建议
- 监听与连通性
- 务必正确设置 listeners 与 advertised.listeners,否则远程客户端可能无法连接。
- 云服务器需放通安全组与防火墙的 9092/9093(KRaft 含 9093)端口。
- 唯一性与元数据
- KRaft:各节点 node.id 唯一;Zookeeper:各节点 broker.id 唯一,且 Zookeeper 的 myid 与 server.x 对应。
- KRaft 重新初始化前需清理 log.dirs 下的元数据,并使用同一 cluster id 执行 format。
- 高可用与副本
- 创建主题时 replication.factor ≤ broker 数,建议生产环境 ≥ 3。
- 运维建议
- 使用 systemd 托管 Kafka 服务,配置 JVM 堆 与 日志滚动;监控 网络/磁盘 IO/请求延迟。
- 版本选择
- 新环境优先 KRaft 模式;存量环境或依赖 Zookeeper 工具链的场景可继续使用 Zookeeper 模式。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: kafka集群如何在ubuntu搭建
本文地址: https://pptw.com/jishu/769648.html
