在 Ubuntu 上部署与配置 Kafka 的关键注意事项
一 基础环境与版本选择
- 安装受支持的 Java(OpenJDK 8 或 11),并验证版本:
java -version。Kafka 对 Java 版本较敏感,建议与所用 Kafka 版本匹配。 - 选择与部署模式匹配的 Kafka 版本:
- Kafka 3.x 及以上支持 KRaft 模式(去 ZooKeeper);
- Kafka 2.x需使用 ZooKeeper。
- 规划目录与权限:为 Kafka 数据与日志目录 单独挂载磁盘,避免使用 /tmp;创建专用系统用户(如 kafka)并授予目录权限,便于安全与维护。
二 部署模式与核心配置
- 使用 ZooKeeper 模式:在
config/server.properties中正确设置broker.id(集群内唯一)、listeners(如PLAINTEXT://:9092)、log.dirs、zookeeper.connect=localhost:2181;- 在
config/zookeeper.properties中设置dataDir与clientPort=2181。
- 使用 KRaft 模式(Kafka ≥ 3.x):
- 生成集群 ID:
bin/kafka-storage.sh random-uuid; - 格式化存储:
bin/kafka-storage.sh format -t <ClusterID> -c config/kraft/server.properties; - 在
config/kraft/server.properties中设置process.roles=broker,controller、controller.quorum.voters=0@<本机IP>:9093、listeners=PLAINTEXT://:9092、controller.listener.names=CONTROLLER、inter.broker.listener.name=PLAINTEXT等; - 启动命令:
bin/kafka-server-start.sh config/kraft/server.properties。
- 生成集群 ID:
- 对外可达性:若客户端不在本机,务必正确配置
advertised.listeners,避免使用localhost导致外部无法连接。
三 网络与防火墙
- 放行必要端口:
- ZooKeeper:2181;Kafka Broker:9092;KRaft 控制器端口 9093(如启用)。
- UFW 示例:
sudo ufw allow 9092,2181,9093/tcp;firewalld 示例:firewall-cmd --permanent --add-port=9092/tcp --add-port=2181/tcp --add-port=9093/tcp && firewall-cmd --reload。
- 监听地址绑定:在
listeners中明确绑定到 0.0.0.0(或指定内网/公网 IP),并确保云服务器安全组规则同步开放。
四 系统资源与 JVM 调优
- 文件描述符与内核参数:提高 ulimit -n(如 65535)并优化内核网络/磁盘参数,避免连接与 I/O 瓶颈。
- 堆内存与 GC:通过
KAFKA_HEAP_OPTS设置堆大小,建议 -Xms 与 -Xmx 等值(如 -Xms4G -Xmx4G),选用 G1 GC 并开启 GC 日志以便排查。 - 直接内存与元空间:可按需设置 -XX:MaxDirectMemorySize、-XX:MetaspaceSize/MaxMetaspaceSize。
- 存储与 I/O:将
log.dirs指向高性能磁盘(如 SSD/NVMe),必要时配置多日志目录;文件系统优先 XFS,挂载时可使用 noatime 降低元数据写入。
五 安全加固与运维实践
- 认证与加密:启用 SASL/PLAIN 或 SCRAM 认证,配置 SSL/TLS 保护传输;在跨机房/公网场景优先启用加密链路。
- 最小权限与系统用户:以 **非 root 专用用户(kafka)**运行进程,目录与文件权限最小化。
- 高可用参数:合理设置 replication.factor ≥ 3、
min.insync.replicas=2,提升容错能力。 - 服务化与自启:为 ZooKeeper 与 Kafka 编写 systemd 单元,设置依赖关系(如 Kafka 依赖 ZooKeeper 或 KRaft 就绪),并启用开机自启。
- 监控与告警:开启 JMX(如
-Dcom.sun.management.jmxremote.port=9999)结合 Prometheus + Grafana 或 Burrow 监控消费延迟与堆积;关注 活跃控制器数量、未复制分区数、磁盘使用率 等关键指标。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1464372.html