Ubuntu 上配置 Kafka 的避错清单
一 基础环境与前置检查
sudo apt update && sudo apt install openjdk-8-jdk -y && java -version。/etc/security/limits.d/99-nofile.conf,写入 * soft nofile 65536、* hard nofile 65536,并确保 PAM 启用;必要时为 Kafka 进程配置更大的 JVM 堆(如在 kafka-server-start.sh 中设置 KAFKA_HEAP_OPTS="-Xmx2G -Xms2G")。kafka:kafka),避免因权限不足导致启动失败。二 配置关键点与常见陷阱
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181。kafka-storage.sh format -t <ClusterID> -c config/kraft/server.properties,同时将 zookeeper.connect=false。broker.id:在集群内必须唯一(每台机器不同)。listeners 与 advertised.listeners:明确协议与地址,例如 PLAINTEXT://0.0.0.0:9092 与 PLAINTEXT://<公网或内网IP>:9092,避免客户端连不通。log.dirs:使用绝对路径,确保磁盘空间充足且目录可写。三 快速自检与连通性验证
kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1kafka-console-producer.sh --broker-list localhost:9092 --topic testkafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginningnc -vz <broker_ip> 9092 或 telnet <broker_ip> 9092;若不通,优先检查 listeners/advertised.listeners、云安全组与系统防火墙。server.log 与 controller.log,关注启动报错、Zookeeper/KRaft 连接异常、端口占用等信息。四 稳定性与安全加固
acks=all、retries=3;Broker 设置 min.insync.replicas=2,提升数据不丢的底线。session.timeout.ms=30000、max.poll.interval.ms=300000,避免频繁 rebalance;处理耗时较长时改为异步/批量处理。SASL_PLAINTEXT/SASL_SSL),按需配置 ACL,避免明文传输与越权访问。五 一键最小可用配置模板
broker.id=0listeners=PLAINTEXT://0.0.0.0:9092advertised.listeners=PLAINTEXT://<服务器IP>:9092log.dirs=/var/lib/kafkazookeeper.connect=localhost:2181KAFKA_CLUSTER_ID="$(kafka-storage.sh random-uuid)"kafka-storage.sh format -t "$KAFKA_CLUSTER_ID" -c config/kraft/server.propertiesprocess.roles=broker,controllernode.id=1controller.quorum.voters=1@<本机IP>:9093listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093advertised.listeners=PLAINTEXT://<服务器IP>:9092listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXTinter.broker.listener.name=PLAINTEXTlog.dirs=/var/lib/kafkazookeeper.connect=falsebin/kafka-server-start.sh -daemon config/kraft/server.properties