1. 程式人生 > >kafka集群的錯誤處理--kafka一個節點掛了,導致消費失敗

kafka集群的錯誤處理--kafka一個節點掛了,導致消費失敗

https Kafka集群 dmi ati 配置線 replica 其他 pic local

今天由於kafka集群搭建時的配置不當,由於一臺主消費者掛掉(服務器崩了,需要維修),導致了所有新版消費者(新版的offset存儲在kafka)都無法拉取消息。

由於是線上問題,所以是絕對不能影響用戶的,使用老版客戶端(offset存儲在zk)進行消費,然後將kafka遷移到備用服務。

下面來說一下這次事故的具體處理思路

  1. 首先要確保獲取到的消息不能丟失,所以老版消費者進行消費
  2. 線上服務通過均衡負載一臺一臺的進行切換kafka服務,當原生產者數據都消費完時,將消費者切換到備用服務
  3. 開始配置線上kafka服務

主要做了如下修改

offsets.topic.replication.factor=3

設置副本數量為3,這樣當一臺消費者宕機時,其他消費者也可以進行消費

為了使topic可以進行復制副本,這裏采用了比較粗暴的方法,直接清空topic和offset
分為以下幾個步驟

./zookeeper-shell.sh 127.0.0.1:24500
rmr /brokers/topics/topic-name
rmr /config/topics/topic-name
rmr /admin/delete_topics/topic-name

此時已經將topic完全刪除,然後進行topic的新建

bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic topic-name

這時可以啟動生產者和消費者進行查看,已經不再出現一開始的異常

Connection to node -1 could not be established. Broker may not be available.

這時我進行了測試,對三臺broker中的任意一臺進行下線,服務會自動選擇其他節點進行生產和消費。



作者:Stalary
鏈接:https://www.jianshu.com/p/afa462ffc1ae
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

kafka集群的錯誤處理--kafka一個節點掛了,導致消費失敗