
我有一個具有自動縮放功能的託管實例組。
每個實例都運行一個程序,該程序輪詢遠端站點,詢問“您有什麼工作可以幫我嗎?”如果答案是“否”,它會休眠幾秒鐘並重複。我們認為這是一個閒置的實例。否則,它會收到要做什麼的指令,標記自己忙碌的,執行它必須執行的操作(可能需要幾分鐘到幾個小時),返回結果,然後恢復原樣閒置的。
我希望自動縮放器確保始終至少有一個閒置的實例,因此它可以獲得任何可用的工作。它不能基於 CPU,因為作業可能會花費大量時間,但實際上並沒有使用太多 CPU,或者它們可能沒有足夠的並行性來使用所有核心,等等。
如果自動縮放器可以為特定指標抓取任意指標伺服器,那麼事情就會很簡單:每個實例已經在運行 Prometheus 節點導出器,因此它可以導出一個指標,例如忙,設定為 0 或 1,Prometheus 可以對其進行聚合,將總和加 1,並匯出為自動縮放器可以使用的指標。但這是不可能的。
Google 關於如何使用自動縮放器的 Prometheus 指標的文檔,儘管它是從 GCE MIG 頁面連結到的,但僅討論瞭如何執行此操作庫伯內斯自動縮放,當然,這不是我在這裡使用的。
我已經考慮過讓實例建立自訂的stackdriver 指標,並對其進行更新,但如果實例在將其指標更新為0 之前死亡,則它永遠不會被重置,因此自動縮放器不會知道它。
這不可能非常困難或非常不常見(要么是這樣,要么我想不出正確的術語來搜索:()。有什麼建議嗎?