Kafka配置文件编辑指南
Kafka的核心配置文件是server.properties,主要存放Broker的配置信息。其路径因安装方式而异:
config子目录下(如/usr/local/kafka/config/server.properties、/path/to/kafka/config/server.properties);/etc/kafka/server.properties。sudo cp /usr/local/kafka/config/server.properties /usr/local/kafka/config/server.properties.bak
vim(功能强大)或nano(简单易用),需具备root权限(使用sudo)。server.properties为例)broker.id:Broker在集群中的唯一标识(正整数),集群中所有Broker的broker.id必须唯一。例如:broker.id=0
listeners:Broker监听的地址和端口,格式为协议://主机名:端口(如PLAINTEXT://your.host.name:9092)。若未指定主机名,可设置为0.0.0.0(监听所有接口),但生产环境建议指定具体IP。listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners:向客户端广播的地址和端口(客户端用于连接Broker的地址),需根据客户端网络环境设置(如公网IP或域名)。例如:advertised.listeners=PLAINTEXT://your.public.ip:9092
log.dirs:Kafka日志文件(Segment文件)的存储目录,支持多个目录(逗号分隔),Broker会将分区数据均匀分布到这些目录中。建议选择大容量、高性能的存储设备(如SSD)。log.dirs=/var/kafka-logs
zookeeper.connect:ZooKeeper集群的连接字符串,格式为主机名:端口(如localhost:2181)。若为集群,需列出所有节点(如zk1:2181,zk2:2181,zk3:2181)。zookeeper.connect=localhost:2181
num.partitions:Topic的默认分区数(若创建Topic时未指定分区数,将使用此值)。分区数决定了Topic的并行处理能力,建议根据业务负载设置(如16、32)。num.partitions=8
default.replication.factor:Topic的默认副本因子(每个分区的副本数量),用于保证数据冗余和高可用。生产环境建议设置为3(需集群中有足够的Broker)。default.replication.factor=3
log.retention.hours:日志保留时间(小时),超过此时间的日志将被删除(根据log.cleanup.policy策略)。例如,设置为168小时(7天):log.retention.hours=168
log.cleanup.policy:日志清理策略,可选delete(按时间/大小删除)或compact(压缩,仅保留每个Key的最新值,适用于变更日志场景)。默认为delete。log.cleanup.policy=delete
vim编辑器:按Esc键退出编辑模式,输入:wq(保存并退出);nano编辑器:按Ctrl+O保存文件,按Ctrl+X退出编辑器。修改配置文件后,需重启Kafka服务才能使更改生效:
sudo systemctl restart kafka
# 停止Kafka
sudo /path/to/kafka/bin/kafka-server-stop.sh
# 启动Kafka(指定配置文件路径)
sudo /path/to/kafka/bin/kafka-server-start.sh /path/to/kafka/config/server.properties
检查Broker状态:使用Kafka自带的命令行工具查看Broker是否正常运行:
sudo systemctl status kafka
若状态显示为active (running),则表示Broker已启动。
创建Topic测试:创建一个测试Topic,验证配置是否生效:
/path/to/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test_topic
若命令执行成功,表示Broker监听端口和分区配置正确。
生产消费测试:通过生产者发送消息、消费者接收消息,验证通信是否正常:
/path/to/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test_topic
/path/to/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
若能正常收发消息,则说明配置生效。
log.retention.hours设置过短可能导致数据丢失);unclean.leader.election.enable=false(禁止非同步副本成为Leader,保证数据一致性);security.protocol、sasl.mechanism等参数(参考Kafka安全配置文档)。