Kafka 筆記 – Scaling Study

前言

Kafka 本身是個能迅速把大量資訊存下來的一個設計

這邊筆記一下關於 Kafka 的 Cluster 本身如果要 Scaling 的話,其可行性。

研究依託 Aws 的 MSK (Aws 的 Kafka),如果您有 Aws 帳戶,依其入門文件即可建立 Kafka Cluster。

先從 FAQ 來看

MSK 的 FAQ 內提到可擴展的是 每台 Broker 磁碟大小、每台 Broker 的 size  、 Broker 數量,如下截圖,至於最後一個問答是指重新平衡 partition,這個適用於 Cluster 有調整之後的任何情況,應該不是只限定於擴展後。

增加 磁碟大小

改變 Broker 硬體規格 (也就是垂直縮放)

增加 Broker 數量

  • 增加很簡單很簡單
  • BUT.. 新增後, 要自己 reassign partition

新增步驟參考文件

  1. Expanding an Amazon MSK Cluster
  2. API – Broker Count 
  3. Expanding your cluster

執行上述步驟, Broker 固然會應加數量沒錯,但這時候新增的 N 個 Broker 是沒有作用的,必須執行進一步的 reassign partition (rebalance),才能使新的 Broker 一起加入工作。

rebalance 參考文件

  1. kafka集群磁盘满警告,新增kafka节点,重新分配partition
  2. Aws 文件 Reassign partitions

這邊第 2. 點的 Aws 文件其實沒啥大用,因為他也只是叫你去執行 Kafka 的 kafka-reassign-partitions.sh 這隻 script,所以,如果你還想進一步了解,建議你搜尋 kafka-reassign-partitions.sh 這個 script。

那要在哪裡執行這個 kafka-reassign-partitions.sh 呢?

以 Aws MSK 來說,就是要在某台 EC2 上執行,這台 EC2 跟 MSK 要在相同 VPC 內,如果你是按照上面入門文件建立 Kafka 的話,一定有這麼一台 EC2 可供你執行。

以其他 Kafka Cluster 來說,總之就是在某台可以存取 Kafka Cluster 的 Linux 上執行囉~

減少 Broker 數量

沒有現成 API,要自己手工做,步驟大致是:

  1. 假設有 M 台,要縮減為 N 台。
  2. 先 reassign partition,把資料塞到其中 N 個 broker 內(這是做得到的)
  3. 要停掉的 borker 不再放資料過去,也不要留在 Zookeeper 名單內
  4. 完成後,再關閉不要的 broker。

手工減數量參考資料

  1. Expanding your cluster
  2. How to delete Kafka brokers machines from kafka cluster
  3. Kafka broker auto scaling
  4. Kafka 數據遷移(增加節點和減少節點均適用)
  5. Can you scale DOWN the number of Kafka brokers in an Amazon MSK cluster?

增減 Partition 數量

只能增,不能減,步驟可以參考 調整 Kafka 中 Topic 的 Partition 數量,原則上應該是用 kafka-topics.sh 這隻 script 來做

參考資料

小總結

  1. 增加容易,減少困難 -> 反而直接弄一個新的 Kafka,然後再移轉過去比較簡單(所有 Kafka 相關教學、文件也都這麼教)
  2. 唯一可以方便升降的,大概只有 AWS 的 Borker 本身機器的規格,其垂直縮放很簡單,其餘 舉凡 Broker Storage、Broker 數量、Partition 數量等,都是增加還算簡單,減少很麻煩。
  3. reassign partition 是個常用且實用的動作,應該要熟悉它。

其他雲端 Kafka 服務

其中對於個人開發者,想簡單嘗試 Kafka 的話 Cloudkafka 可能可以考慮,他有免費方案,可提供個人開發者串接跟測試。當然由於免費方案開出來的機器是共用資源的,因此不要想在上面測試高吞吐量就是了。

其他參考資料

  1. AWS MKS Best Practices
  2. Scale Kafka Consumers
  3. RE-ASSIGN PARTITIONS AFTER CHANGING CLUSTER SIZE

 

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料