Ubuntu配置Kafka的关键注意事项
Kafka依赖Java运行环境(JRE/JDK),推荐安装OpenJDK 8或更高版本(如OpenJDK 11),可通过java -version验证安装是否成功。同时,Kafka早期版本需通过Zookeeper实现集群管理(如broker注册、Topic元数据存储),需提前安装并配置Zookeeper(建议使用3.4及以上版本),配置文件zoo.cfg中需设置dataDir(数据存储路径)和clientPort(客户端连接端口,默认2181)。
Kafka的核心配置文件server.properties需重点关注以下参数:
broker.id=1);PLAINTEXT://your_server_ip:9092,需替换为服务器实际IP,避免使用localhost导致外部无法访问);PLAINTEXT://your_server_ip:9092,集群中需设为对应节点的IP);/data/kafka-logs,并确保目录存在且有读写权限);localhost:2181或zk1:2181,zk2:2181,zk3:2181,多节点用逗号分隔)。/opt/kafka)和日志目录(如/data/kafka-logs)需归属运行Kafka的用户(如kafka用户),并赋予读写权限(sudo chown -R kafka:kafka /opt/kafka /data/kafka-logs);log.dirs=/data/kafka-logs),避免相对路径导致日志丢失或启动错误。ufw或firewalld开放Kafka(默认9092)和Zookeeper(默认2181)端口(如sudo ufw allow 9092/tcp、sudo ufw allow 2181/tcp),避免网络隔离导致客户端无法连接;listeners需绑定到正确的网络接口(如服务器IP或0.0.0.0,若为集群需确保各节点能互相访问)。broker.id必须唯一(如节点1设为1,节点2设为2);listeners需指向自身IP(如PLAINTEXT://192.168.1.1:9092、PLAINTEXT://192.168.1.2:9092),避免端口冲突;zookeeper.connect需配置所有节点地址(如zk1:2181,zk2:2181,zk3:2181),并确保tickTime、initLimit、syncLimit等参数配置合理。log.retention.hours设置日志保留时间(如168小时,即7天),或通过log.retention.bytes限制单个日志文件大小(如1073741824,即1GB);compression.type(如gzip、snappy)可减少日志存储空间占用(适合对存储成本敏感的场景);logrotate工具定期清理旧日志(如在/etc/logrotate.d/kafka中配置daily rotate 7 compress,表示每天轮转并保留7天压缩日志)。num.partitions(分区数,如3)和default.replication.factor(副本数,如2),分区数越多吞吐量越高,副本数越多容错性越好;export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G",设置在kafka-server-start.sh前),避免堆内存不足导致频繁GC;server.properties中设置security.inter.broker.protocol=SASL_PLAINTEXT、sasl.mechanism.inter.broker.protocol=PLAIN,并配置jaas.conf文件),防止未授权broker加入集群;ssl.keystore.location、ssl.truststore.location等参数),保护数据在传输过程中的安全性;authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer开启ACL(访问控制列表),限制客户端对Topic的操作权限(如kafka-acls.sh命令配置用户权限)。