sudo yum install -y java-11-openjdk-devel
)。zoo.cfg
配置文件,設置dataDir
(數據目錄)、clientPort
(2181)、initLimit
(5)、syncLimit
(2)及服務器列表(server.x=ip:2888:3888
);啟動Zookeeper(./zkServer.sh start
)并驗證狀態(./zkServer.sh status
)。broker.id=0
(多節點需遞增);listeners=SASL_PLAINTEXT://your_server_ip:9092
(啟用SASL認證);advertised.listeners=SASL_PLAINTEXT://your_public_ip:9092
(避免客戶端連接失?。?;zookeeper.connect=zk1_ip:2181,zk2_ip:2181,zk3_ip:2181
(多節點用逗號分隔)。num.partitions
:新Topic的默認分區數(根據業務并發需求設置,如16/32,需結合CPU核心數);default.replication.factor
:Topic副本數(生產環境建議設為3,提升數據可靠性);num.network.threads
:網絡處理線程數(建議設為CPU核心數的2~3倍,如8核設為16);num.io.threads
:磁盤IO線程數(建議設為CPU核心數的5~8倍,如8核設為40);log.dirs
:日志存儲目錄(多目錄用逗號分隔,如/data/kafka/logs1,/data/kafka/logs2
,提升IO吞吐);log.retention.hours
:日志保留時間(建議7~168小時,如168小時=7天);log.segment.bytes
:日志分段大?。ńㄗh1GB,如1073741824
,平衡磁盤IO與查詢效率);compression.type
:消息壓縮類型(推薦lz4
,兼顧吞吐量與CPU開銷);batch.size
:生產者批處理大?。ńㄗh1MB,如1048576
,減少網絡請求次數);linger.ms
:生產者等待批處理的時間(建議100~500ms,平衡延遲與吞吐量)。security.inter.broker.protocol=SASL_PLAINTEXT
(Broker間通信協議);sasl.enabled.mechanisms=PLAIN
(認證機制);sasl.mechanism.inter.broker.protocol=PLAIN
(Broker間認證機制);kafka_server_jaas.conf
):KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_producer="producer-secret"
user_consumer="consumer-secret";
};
啟動Kafka時指定配置文件:export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
。sudo sysctl -w fs.file-max=1000000
);sudo sysctl -w net.core.rmem_default=262144
、net.core.wmem_default=262144
);sudo sysctl -w net.ipv4.tcp_wmem="4096 16384 131072"
、net.ipv4.tcp_rmem="4096 65536 1048576"
);sudo sysctl -w vm.swappiness=1
,避免磁盤IO瓶頸)。noatime
選項,減少文件訪問時間戳更新的開銷),如:sudo mkfs.xfs /dev/sdb
sudo mount -o noatime /dev/sdb /data/kafka
并添加至/etc/fstab
實現開機自動掛載。/etc/systemd/system/kafka.service
):[Unit]
Description=Apache Kafka Server
After=network.target zookeeper.service
[Service]
Type=simple
User=kafka
Group=kafka
Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo useradd kafka
sudo mkdir -p /opt/kafka/{logs,data}
sudo chown -R kafka:kafka /opt/kafka
sudo systemctl daemon-reload
sudo systemctl enable kafka
sudo systemctl start kafka
驗證狀態:sudo systemctl status kafka
。jconsole
或kafka-run-class.sh
查看)。log.dirs
),避免磁盤空間耗盡;可通過log.retention.bytes
(單個分區最大日志大?。┖?code>log.retention.check.interval.ms(日志檢查間隔)參數自動清理舊日志。dataDir
)和Kafka日志目錄(log.dirs
);災難恢復時,可通過備份數據恢復Zookeeper集群和Kafka Broker。