Slack使用開源元件構建自動驅動Kafka叢集

banq發表於2022-03-13

Slack工程師介紹了他們如何構建和操作 Kafka 叢集以大規模執行。
Slack 將 Kafka 廣泛用於他們的作業佇列和移動關鍵任務資料(分析、日誌記錄、計費資料等)
這篇博文介紹了 Slack 如何(以及為什麼)使用 Chef 和 Terraform 自動化管理 Kafka 叢集的操作方面。
 
Kafka 在 Slack 中用作釋出-訂閱系統,在最重要的Job Queue中發揮著重要作用,這是我們的非同步作業執行框架,幾乎涉及使用者在 Slack 上執行的每一個操作(例如展開通道中的連結、傳送通知、通知機器人、更新搜尋索引和執行安全檢查)。此外,Kafka 充當神經系統,用於跨 Slack 移動關鍵任務資料,為我們的日誌記錄管道、跟蹤資料、計費管道、企業分析和安全分析資料提供動力。

 

什麼是自驅動 Kafka 叢集?
Kafka 是一款出色的軟體,可在 Slack 的數百個節點上執行。但是,如果您曾經嘗試過部署或管理 Kafka,您就會知道這並非易事。我們經常因為緩慢的,有時是當機的代理或容量管理問題而被尋呼。
自動化 Kafka 操作的目標是消除日常管理 Kafka 的操作開銷。
為此,我們為 Kafka 叢集確定了一些常見的操作任務,包括:

  • 例行的 Kafka 管理操作,例如建立主題、更改分割槽計數和將分割槽重新分配給代理
  • 容量規劃操作,例如向叢集新增/刪除代理
  • 更換代理或部署新版本軟體等運營問題
  • 診斷 Kafka 叢集中問題的隨叫隨到的負擔
  • 客戶支援解釋 Kafka 消費者是否跟上

因此,當我們遷移到新版本的 Kafka 叢集時,我們決定將其操作方面自動化,或者使其成為自助服務。
 
我們的 Kafka 設定由以下元件組成:

構建、釋出、配置和部署:Chef 和 Terraform
 

使用 Cruise Control、Kafka Manager、Chef 和 Terraform 等開源元件大規模執行自我修復的 Kafka 叢集。此外,使用標準 SRE 原則和適當的工具(如 Kafka Manager 和 Kafka offset exporter),可以使 Kafka 變得可靠、自助服務和自動運作。
可以在此處找到我們的 Kafka 配置。
 
展望未來,Kafka 將在 Slack 中扮演更重要的角色,因為它是新的變更資料捕獲 (CDC) 專案的一部分。新的 CDC 功能將支援 Slack 許可權服務的快取需求,該服務用於授權 Slack 中的操作,還將實現對我們的資料倉儲的近實時更新。為此,我們在 Slack 組建了一個新的資料流團隊來處理所有當前和未來的 Kafka 用例。新的資料流團隊將維護和支援 Slack 的所有 Kafka 叢集。該團隊還將負責構建與 Kafka 相關的標準化庫和工具,並將致力於進一步改進當前的 Kafka 操作和效率。

點選標題見原文

相關文章