當前位置:
首頁 > 最新 > 如何在Kubernetes中管理和操作Kafka集群

如何在Kubernetes中管理和操作Kafka集群

作者|Srini Penchikala

譯者|張蘭月

Amadeus 公司平台解決方案架構師 Nenad Bogojevic 最近在北美 2017 KubeCon 和 CloudNativeCon 上談到如何在 Kubernetes 環境中運行和管理 Kafka 集群。

該公司將 Kafka 用於日誌和事件收集以及作為流媒體平台。Kafka 集群中的每一個代理 (broker) 都有一個身份,這個身份可以被用來尋找集群中的其他代理。代理同樣需要一個資料庫來存儲分區日誌。所以為 Kafka 配置一個持久卷非常重要,否則你便會丟失日誌。

Nenad Bogojevic 談到如何使用 Kubernetes ConfigMap 或 CustomResource 來分配和配置 Kafka 集群,並用它們來描述參數,比如名稱、分區數、複製因子和主題 (topic) 屬性如保存時間(以毫秒表示)等。它們能夠幫助自動化主題的分配或反分配過程。它們同樣能夠確保開發和運營階段以及集群重啟時的配置一致性。

Bogojevic 還談到了如何使用 Kubernetes StatefulSet 特性來設置 Kafka 和 ZooKeeper 集群元素。Kubernetes StatefulSet 特性提供了如下能力:

穩定的 pod 身份

穩定的存儲

有秩序的啟動和關閉

滾動更新

他們的解決方案架構包括 Kafka 和 ZooKeeper Statefulset,其中 Statefulset 是作為一個無頭服務 (Headless Service) 被運行的。同樣,該架構還包括一個發現服務,客戶端應用用它來發現集群中的 Kafka 節點。他談到了節點選擇器,它可以被用來在配置較好硬體(如 SSD)的機器上安裝實例,以及反關聯特性,它可以被用來將實例分布到不同的物理機上。

他們的架構還有一個重要的組件,那就是 Kubernetes 的監控,監控組件可以被用來檢測某個伺服器是否準備就緒,並可以接受連接。監控是由 JMX 和 Prometheus 這 2 個工具完成的。

Bogojevic 討論了 Kafka 操作運算元,它可以被用來將站點可靠性工程師 (SRE) 和運營團隊的領域知識轉換成可執行的代碼。他們將操作運算元用於以下的組件:

Prometheus

Redis 集群

工作流

Kafka

使用自動化腳本來創建 Kafka 主題是非常好的實踐。信息傳送解決方案應該考慮採用「主題即代碼」的方法。在操作 Kafka 集群主題時的最佳實踐不止這些,還包括:

確保主題存在於目標環境中

確保主題在不再使用時被刪除

在不同的環境中採用同樣的配置。

根據可用的磁碟空間來配置保存時間

為客戶端配置證書

將配置和需求作為代碼來交付

在演講結尾,Bogojevic 談到了執行 Kafka 升級的一些最佳實踐,包括:將協議版本設置為目前的、一次只升級一個 Kafka 代理,然後才將協議版本設置為最新的。關於存儲格式的最佳實踐是,首先讓客戶使用最新的版本,然後再將格式版本升級為最新的。

你可以在 CNCF YouTube 頻道上找到 Bogojevic 名為「Kafka 操作運算元:如何在 Kubernetes 中管理和操作 Kafka 集群」的演講視頻。

查看英文原文:Managing and Operating Kafka Clusters in Kubernetes


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 細說雲計算 的精彩文章:

一圖看懂全球雲計算生態——「雲計算周期表」

TAG:細說雲計算 |