Yelp對外開源其內部使用的叢集擴展系統Clusterman,而原本該系統僅支援Mesos叢集自動擴展,而現在還能支援Kubernetes叢集,透過自定義的訊號,以更積極主動的方法,控制叢集的縮放。使用者已經可以直接從GitHub上取得該專案。

Yelp現在採用全分散式且以服務為導向的基礎設施,系統運作在由自家平臺即服務PaaSTA構成的雲端之上。在今年二月的時候,Yelp對外公開了內部新的叢集管理器Clusterman,Yelp提到,在Yelp有不同的工作負載需要自動擴展,包括像是網頁服務等長期執行的任務、定期執行的批次任務、單元和整合測試以及機器學習等工作,每一個應用程式都有不同的使用模式以及容錯等級,因此他們需要可以分別為這些內容自動縮放的叢集系統。

為此,Yelp打造了他們第三個自動縮放器Clusterman,Clusterman起初僅支援Mesos叢集,Apache Mesos是一個叢集管理工具,其抽象了叢集伺服器中的特定屬性,讓開發人員可以直接將叢集視為一臺大型的電腦,整合應用運算資源。但現在Yelp為了擴展基礎設施,他們認為,最簡單地方式就是把工作負載從Mesos搬遷到Kubernetes,因為Kubernetes能夠執行在Mesos難以管理的工作負載,像是Flink、Cassandra、Spark和Kafka等。

另外,Yelp也準備將所有現有的微服務和批次處理工作負載搬遷到Kubernetes上,而為了快速且方便地達成這個目標,他們讓Clusterman支援Kubernetes,透過PaaSTA的抽象功能,可以無縫地進行工作負載搬遷。

Yelp表示,在Clusterman增加Kubernetes的支援並不是困難的事,因為Clusterman採用模組化設計,Yelp僅多定義了一個連接器類別,讓連接器符合自動擴展器的需求。與Clusterman對Mesos的支援運作方法相似,連接器可與Kubernetes API進行通訊,擷取Kubernetes叢集擴展的指標和統計數據,這些指標會被當作訊號傳遞給自動擴展引擎,以決定增加或是移除運算資源。

與類似的系統Auto Scaling for Spot Fleet和Kubernetes Cluster Autoscaler相比,Clusterman是唯一一個支援混合雲端資源的自動縮放器解決方案,而且Clusterman的可插拔訊號基礎架構,讓使用者可以自己編寫任何類型的的縮放訊號。

Yelp提到,雖然AWS Spot Fleet Autoscaler或Kubernetes Cluster Autoscaler已可符合大多數的Kubernetes使用案例,但是Clusterman可以讓使用者更積極主動地準備運算資源。Yelp舉例,他們內部使用了Jolt作為單元和整合測試的工具,Jolt叢集每天會執行數百萬個測試,具有可預測的工作量,他們在Clusterman編寫自定義訊號,可以在Pod進入等待狀態之前,就對叢集進行縮放,大幅降低開發者執行測試的等待時間。


Advertisement

更多 iThome相關內容