天天看點

基于Kafka如何部署一個穩定可靠的zookeeper叢集服務

背景

一個月左右zk挂了2次,在此期間

Mafka和其他服務不可用,因為業務(使用不當)原因導緻zk挂掉,間接影響其他服務(包括mafka)可用性,目前線上多個業務和多種服務共同一套mobile-zk叢集,

隻要一個業務使用不當,對zk造成影響或不可用,就會影響其他業務,是以現階段拆分zk叢集,做實體隔離,把mobile-zk叢集按照業務分拆為多個zk叢集。為mafka服務建立獨立zk叢集。

問題

2個原因造成zk叢集當機

其一是業務混布,多個業務依賴同一個mobile-zk叢集,其二是zk叢集部署存在問題,zk執行個體部署沒有做隔離,一個虛拟機部署3個zk執行個體。

業務使用zk不當

  • 錯誤把zk當做kv存儲使用。
  • 建立海量連接配接,耗盡資源最終壓垮zk叢集
  • 其他不當操作等

前期zk部署方案

基于Kafka如何部署一個穩定可靠的zookeeper叢集服務

當時zk叢集中所有節點參與選舉,用戶端通過配置ip清單連接配接本地機房zk節點。由于業務使用不當很容導緻所有節點挂掉導緻zk叢集不可用,因為Kafka強依賴zk服務,這直接影響Kafka的可用性。

後期zk改進部署方案

基于Kafka如何部署一個穩定可靠的zookeeper叢集服務

部署改進:mafka-zk叢集包括三台leader/follower和若幹observer,每個機器上跑一個zk執行個體;用戶端通過域名與本機房的observer連接配接,不直接與選舉節點連接配接,觀察節點不夠可以随時擴容。遷移收益:可擴充性:用戶端通過域名與本機房的observer連接配接,服務可以透明擴容和更新。可用性:mafka-zk叢集包括三台follwer/leader和若幹observer,用戶端隻通路observer,他的任何操作不會導緻整個叢集挂掉,不會影響zk叢集可用性。

其他改進:流控和ip連接配接數限制,加強監控報警。

Zookeeper監控

可以使用淘寶的開源工具TaoKeeper進行監控。Zookeeper的監控包括下面幾個方面:

1、機器的CPU、記憶體、負載、硬碟IO使用率等基礎監控,這些均可以網管系統實作;

2、ZK日志目錄所在磁盤空間監控,這可以針對性的監控;

3、各節點的程序監控,配置自動拉起等;

4、各節點的連接配接數監控,配置峰值告警;

5、各節點的Watcher數監控,配置峰值告警;

6、使用四字指令,對每個節點進行檢查,確定程序不僵死;

7、節點存活個數監控;

繼續閱讀