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


今天由於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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM