在Debian上實現Kafka高可用性需從集群部署、副本配置、故障恢復等方面入手,具體步驟如下:
安裝JDK
Kafka依賴Java環境,使用OpenJDK 11+:
sudo apt update && sudo apt install openjdk-11-jdk
部署Zookeeper集群
sudo apt install zookeeper
/etc/zookeeper/conf/zoo.cfg
,設置多節點集群(如3節點):server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
sudo systemctl start zookeeper
配置Kafka Broker集群
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
config/server.properties
(每節點配置不同broker.id
和監聽地址):broker.id=1 # 每個節點唯一ID
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://broker1:9092 # 對外可訪問地址
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
num.partitions=3 # 分區數建議為Broker數的倍數
default.replication.factor=3 # 副本因子≥2
min.insync.replicas=2 # 最小同步副本數
unclean.leader.election.enable=false # 禁止非同步副本成為Leader
sudo systemctl start kafka
創建高可用主題
使用kafka-topics.sh
創建主題,指定副本因子和最小同步副本數:
bin/kafka-topics.sh --create --topic my-topic --bootstrap-server broker1:9092 --replication-factor 3 --partitions 3 --min-insync.replicas 2
驗證高可用性
sudo systemctl stop kafka
kafka-topics.sh --describe
查看分區狀態,確保ISR(同步副本集合)包含足夠副本。監控與運維
kafka-consumer-groups.sh
監控消費者滯后情況。關鍵機制:
retries
和acks=all
確保消息可靠投遞。注意事項: