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
# 日志段大?。ㄗ止潱?/span>
log.segment.bytes=1073741824
# 網絡線程數
num.network.threads=8
# IO線程數
num.io.threads=8
# 消息最大大?。ㄗ止潱?/span>
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