最近需要實施一個Prometheus HA解決方案的專案。簡單說下需求:
他們有一個100多個節點的Kubernetes叢集,他們想將資料儘可能儲存更長時間。萬一Prometheus掛了,他們沒有備份節點他們也需要Prometheus的伸縮解決方案。解決方案對於HA部分,採用聯邦叢集機制,對於長期儲存的話,考慮使用Thanos,但是在研究過程中發現一個新專案,叫Cortex,以下是thanos和Cortex的比較:
CortexThanos儲存 injestors 中的最新資料儲存Prometheus中的最新資料使用Prometheus write API寫入使用Sidecar方法寫入支援長期儲存支援長期儲存支援HA不支援HA可和多個Prometheus整合單個
經過對比這些指標,決定採用Cortex。
但Cortex方案本身也存在一定的缺陷,如:
體系結構較複雜,需要深入瞭解Prometheus的 TSDB對CPU、記憶體要求較高會增加遠端儲存成本,例如S3,GCS,Azure儲存等。由於這幾個因素對我們來說都不是問題,於是就開幹了,而且挺好用的。
對於 Prometheus 的縮放,Prometheus 由於設計問題,只能垂直而不能水平縮放
如果嘗試水平縮放Prometheus,最終將得到分散的資料,這些資料無法輕鬆合併,因此就縮放部分而言,我們建議採用垂直方法。
為了自動化Kubernetes中Prometheus的垂直縮放,我們使用了VPA(Vertical Pod Autoscaler)。它可以根據資源的使用情況來縮減對資源過度使用的Pod的規模,也可以縮減對資源過度需求的Pod的規模。
結論這篇文章看到了在Prometheus中實現高可用性,可伸縮性和長期儲存所採用的方法。下一篇,我會給出實際操作方法。
最新評論