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