Load-Balancing

如何找出 Linode NodeBalancer 是否使節點脫離輪換

  • March 23, 2014

有時我的 NodeBalancer 會使一個節點停止旋轉,我想了解它以便重新啟動它。我該怎麼做呢?

這是背景:

我有兩個相同類型的網站,它們都執行 CPU 密集型應用程序。其中一個網站使用單個 VPS,每天執行大約 3000 次負載(每次執行需要 5-50 秒),而另一個網站我安裝了一個 NodeBalancer,下面有 9 個節點。每個都執行大約 40-60% 的單個 VPS 所做的事情。

這一切實際上都執行良好,幾乎沒有任何中斷,但是一周左右一次,節點停止響應 NodeBalancer 並停止輪換。這通常與非常高的 CPU 使用率一起發生。現在 - 這在單個 VPS 上永遠不會發生(它已經執行了一年而沒有中斷或重新啟動)。

所以就像我說的 - 在負載平衡節點上我確實有中斷(儘管我執行相同的腳本和軟體 99%),我想知道節點何時停止旋轉,所以我可以重新啟動它並得到它再次啟動並執行。

目前我的解決方法是處理我從 Linode 收到的郵件,這會提醒我 CPU 使用率過高。在某些情況下,如果節點確實變得不活動,我會手動重新啟動。

在網際網路上搜尋了一些之後,結果發現 Linode 有一個命令行界面,它允許人們在節點和 NodeBalancers 上執行各種操作。

這將幫助我通過執行一個簡單的命令來自動重新啟動一個關閉的節點,例如:

linode restart My-Linode-Label

它還允許我通過執行以下操作列出正在處理 NodeBalancer 上的流量的所有節點:

linode nodebalancer node-list mynodebalancer 80

我將檢查這是否確實為我提供了節點狀態或僅向我顯示活動節點並更新答案。這似乎是我一直在尋找的解決方案,因為它包含更多我將來很可能想要的操作,例如啟動一個新節點等。

CLI 可以在https://github.com/linode/cli的 github 上找到

更新:這個 CLI 確實以易於輸出的名稱、狀態和地址為我提供了節點平衡器下每個節點的狀態。我將能夠輕鬆地執行這個腳本。

看來我只需要添加一些 perl 模組就可以了!不敢相信 Linode 支持人員不知道這一點……

有點幼稚的方法是讓節點服務於頁面 example.com/node.html,為每個節點返回不同的結果(例如數字 1-9)。然後從外部電腦上不斷請求該頁面(例如每秒一次)。您應該在某個時間間隔(例如一分鐘)後從所有伺服器收到或多或少的隨機結果(系列),然後腳本可以在此之後檢查是否所有數字都存在,如果缺少節點,則呼叫 Linode 的 API重新啟動它。

比這更容易,如果節點正在接收 Web 請求(來自“netstat”、防火牆、日誌等,您甚至可以檢查負載均衡器的主機名作為源),您不能輕鬆地檢查節點本身嗎?如果不是,則意味著 LB已經把它從旋轉中取出來了?

引用自:https://serverfault.com/questions/582033