Kafka配置文件正确编写指南
Kafka的核心配置文件为server.properties,默认位于安装目录的config
子目录下(如/usr/local/kafka/config/server.properties
或/etc/kafka/server.properties
)。编写配置文件前,建议备份原始文件以防止配置错误导致服务异常。
Broker配置是Kafka运行的基础,直接影响服务识别、网络通信和数据存储:
0
、1
、2
。协议://主机名:端口
。常见协议包括PLAINTEXT
(明文传输,仅测试用)、SSL
(加密传输)、SASL_PLAINTEXT
(带认证的明文)。例如:listeners=PLAINTEXT://your.kafka.host:9092
。advertised.listeners=PLAINTEXT://public.kafka.host:9092
。log.dirs=/data/kafka-logs1,/data/kafka-logs2
。主机1:端口1,主机2:端口2,.../chroot
(chroot
为可选的命名空间,用于隔离不同Kafka集群)。例如:zookeeper.connect=localhost:2181/kafka
。这些配置决定了Kafka的性能、数据可靠性和资源利用率:
num.partitions=8
。default.replication.factor=3
。acks
参数配合使用。例如,若设置为2,需至少2个同步副本确认才算写入成功,可保证数据不丢失。建议设置为default.replication.factor-1
(如default.replication.factor=3
时,设置为2)。log.retention.hours=168
。log.segment.bytes=1073741824
。num.network.threads=8
。num.io.threads=8
。Topic级配置可覆盖broker的默认配置,适用于特定topic的特殊需求:
false
(避免非预期的topic创建)。例如:auto.create.topics.enable=false
。log.retention.hours
。例如:retention.ms=604800000
(7天)。max.message.bytes=1048576
(1MB)。none
(不压缩)、gzip
、snappy
、lz4
、zstd
(推荐zstd
,压缩率高且性能好)。例如:compression.type=zstd
。以下是一个生产环境的server.properties
示例(需根据实际情况修改):
# Broker唯一标识 broker.id=0 # 监听地址和端口 listeners=PLAINTEXT://your.kafka.host:9092 # 客户端连接地址 advertised.listeners=PLAINTEXT://public.kafka.host:9092 # 日志存储目录 log.dirs=/data/kafka-logs1,/data/kafka-logs2 # ZooKeeper连接 zookeeper.connect=localhost:2181/kafka # 默认分区数 num.partitions=8 # 默认副本数 default.replication.factor=3 # 最小同步副本数 min.insync.replicas=2 # 日志保留时间(小时) log.retention.hours=168 # 日志段大小(字节) log.segment.bytes=1073741824 # 网络线程数 num.network.threads=8 # IO线程数 num.io.threads=8 # 消息最大大小(字节) message.max.bytes=104857600
Ctrl+O
(vi/nano)保存并退出。# 手动启动(若未配置systemd) /path/to/kafka/bin/kafka-server-stop.sh # 停止现有服务 /path/to/kafka/bin/kafka-server-start.sh /path/to/kafka/config/server.properties # 启动服务 # 若配置了systemd(推荐) sudo systemctl restart kafka
# 查看broker列表 /path/to/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server your.kafka.host:9092 # 创建测试topic并发送/消费消息 /path/to/kafka/bin/kafka-topics.sh --create --bootstrap-server your.kafka.host:9092 --replication-factor 3 --partitions 8 --topic test-topic /path/to/kafka/bin/kafka-console-producer.sh --bootstrap-server your.kafka.host:9092 --topic test-topic /path/to/kafka/bin/kafka-console-consumer.sh --bootstrap-server your.kafka.host:9092 --topic test-topic --from-beginning