Kafka 4.1.1 生产集群部署完整指南(手把手教程)
一、集群规划(生产最小推荐 3 节点)
kafka-1:192.168.1.101
kafka-2:192.168.1.102
kafka-3:192.168.1.103
二、环境准备(所有节点)
1. 系统要求
Linux(CentOS 7+/Ubuntu 20.04+)
Java 17+(Kafka 4.1 强制 Java 17)Apache Kafka
2. 安装 Java(所有节点)
# CentOSsudo yum install -y java-17-openjdk# Ubuntusudo apt install -y openjdk-17-jdk# 验证java -version
3. 关闭防火墙 / 放行端口
# 关闭(或放行 9092、9093)sudo systemctl stop firewalldsudo systemctl disable firewalld
4. 创建用户(推荐非 root 运行)
sudo useradd kafkasudo passwd kafkasudo mkdir -p /opt/kafka /data/kafka-logs /data/kafka-metasudo chown -R kafka:kafka /opt/kafka /data/kafka-logs /data/kafka-meta
三、下载安装 Kafka 4.1.1(所有节点)
# 切换 kafka 用户su - kafka# 下载(Scala 2.13)wget https://downloads.apache.org/kafka/4.1.1/kafka_2.13-4.1.1.tgz# 解压到 /opt/kafkatar -zxf kafka_2.13-4.1.1.tgz -C /opt/mv /opt/kafka_2.13-4.1.1/* /opt/kafka/rm -rf /opt/kafka_2.13-4.1.1# 目录结构/opt/kafka ├── bin/ ├── config/ └── logs/
四、配置 server.properties(所有节点,关键)
vim /opt/kafka/config/server.properties
# 基础node.id=1process.roles=broker,controller# 监听listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093advertised.listeners=PLAINTEXT://192.168.1.101:9092listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXTinter.broker.listener.name=PLAINTEXT# KRaft 仲裁controller.quorum.voters=1@192.168.1.101:9093,2@192.168.1.102:9093,3@192.168.1.103:9093controller.listener.names=CONTROLLER# 数据目录log.dirs=/data/kafka-logsmetadata.log.dir=/data/kafka-meta# 生产默认num.partitions=3default.replication.factor=2min.insync.replicas=1log.retention.hours=168log.segment.bytes=1073741824
node.id=2advertised.listeners=PLAINTEXT://192.168.1.102:9092
node.id=3advertised.listeners=PLAINTEXT://192.168.1.103:9092
注意:KRaft 不再需要zookeeper.connect,删掉或注释
五、初始化集群(仅一次,任意节点执行)
1. 生成集群 UUID
/opt/kafka/bin/kafka-storage.sh random-uuid# 输出类似:6UlNw0IfR5-mEArqnPh1aQ(记下来)
2. 格式化所有节点存储(每个节点都要执行,用上面的 UUID)
# 节点 1/opt/kafka/bin/kafka-storage.sh format \
-t 6UlNw0IfR5-mEArqnPh1aQ \
-c /opt/kafka/config/server.properties# 节点 2/opt/kafka/bin/kafka-storage.sh format \
-t 6UlNw0IfR5-mEArqnPh1aQ \
-c /opt/kafka/config/server.properties# 节点 3/opt/kafka/bin/kafka-storage.sh format \
-t 6UlNw0IfR5-mEArqnPh1aQ \
-c /opt/kafka/config/server.properties
```{insert\_element\_1\_}---## 六、配置 systemd 服务(所有节点,生产必做)```bashsudo vim /etc/systemd/system/kafka.service[Unit]Description=Apache Kafka 4.1.1 (KRaft)After=network.target[Service]Type=simpleUser=kafkaGroup=kafkaEnvironment="KAFKA_HOME=/opt/kafka"Environment="PATH=/opt/kafka/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"WorkingDirectory=/opt/kafkaExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.propertiesExecStop=/opt/kafka/bin/kafka-server-stop.shRestart=on-failureRestartSec=5[Install]WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl enable kafka
七、启动集群(所有节点)
sudo systemctl start kafka# 查看状态sudo systemctl status kafka# 查看日志(排错用)tail -f /opt/kafka/logs/server.log
八、验证集群(任意节点)
1. 查看 KRaft 控制器状态
/opt/kafka/bin/kafka-metadata-quorum.sh \ --bootstrap-controller=192.168.1.101:9093 \ describe --replication
2. 创建测试 Topic
/opt/kafka/bin/kafka-topics.sh \ --create --topic test-topic \ --bootstrap-server 192.168.1.101:9092 \ --partitions 3 --replication-factor 2
3. 生产 / 消费测试
# 生产/opt/kafka/bin/kafka-console-producer.sh \ --topic test-topic --bootstrap-server 192.168.1.101:9092# 消费(新窗口)/opt/kafka/bin/kafka-console-consumer.sh \ --topic test-topic --from-beginning \ --bootstrap-server 192.168.1.101:9092
九、生产环境关键优化(必做)
JVM 内存(默认太小)
vim /opt/kafka/bin/kafka-server-start.sh# 修改export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G" # 生产按内存调整,一般 4~8G
文件句柄 / 线程数
sudo vim /etc/security/limits.conf kafka soft nofile 65535kafka hard nofile 65535kafka soft nproc 65535kafka hard nproc 65535
磁盘:log.dirs 用独立高速磁盘,不要和系统盘混放
十、常用运维命令
# 停止sudo systemctl stop kafka# 查看 Topic 列表/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.1.101:9092# 查看 Topic 详情/opt/kafka/bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server 192.168.1.101:9092




