如何在低負載期間關閉(斷電)叢集節點?

如何在低負載期間關閉(斷電)叢集節點?

我正在為能源諮詢業務和監控資料中心的能源使用情況開發軟體,我注意到資料中心的典型電力負載「模式」只是一條平坦的線,因為所有齒輪都 24/7 運行。如果將此與我們所做的實際使用模式(網路負載、CPU 使用率等)進行比較,您通常會遇到很長一段時間,使用率很低,但可用容量全部可用。

在許多情況下,這些模式是非常可預測的,為了節省能源,最好定期或在低負載條件下關閉部分設備(伺服器、交換器、儲存)。但是,我可以想到必須考慮的幾個方面,包括

  • 處理峰值負載或突然的峰值
  • 節點間資料一致性
  • 與節點的平均正常運作時間相比,啟動(可能還有同步)時間較長

可能還有更多。是否有軟體可以處理這種情況以及還應該注意什麼?這是一個可行的建議嗎?

就我的目的而言,集群不一定意味著在作業系統層級上對電腦進行集群,透過負載平衡器接收請求的相同主機(即應用程式層級集群)也算在內。我不確定 MySQL 叢集或類似的工作原理,但我可能也會計算它們。

我正在尋找針對任何作業系統的建議。

另請參閱我的關於能源效率的帖子Stack Overflow 上提出了這個問題。

答案1

力量

使用交換式 PDU以便您可以帶外打開和關閉伺服器和交換器。這是獨立於作業系統和裝置的,這將大大簡化開啟和關閉電源的配置和邏輯。如果您的伺服器都具有支援網路的 IPMI 接口,您可以使用這些接口。我建議不要嘗試使用 LAN 喚醒等更高層級的功能來開啟和關閉功能。

上電/斷電邏輯

這可以採取多種形式。一些集群軟體(如摩押)有一個內建的解決方案。

  1. 檢查叢集整體負載
  2. 如果叢集負載>threshold1,則開啟部分節點
  3. 如果叢集負載<threshold2,則關閉部分節點

將其放入 cron 中並讓它每半小時運行一次。

叢集軟體堆疊

顯然,您需要確保您的叢集軟體堆疊可以處理這些不斷變化的設備。在這裡進行大量測試,考慮模糊的時序問題(啟動需要時間)以及任何會在您使用的加電/斷電邏輯中出現的競爭條件。

答案2

虛擬機

他們的企業產品最新版本 VSphere 4 可以關閉不需要滿足容量的主機電源,並在需要時透過即時分配虛擬機器來喚醒它們。將此與透過在虛擬化平台上整合硬體而獲得的電力/能源節省相結合,您可以獲得顯著的電力節省。

答案3

今天在 Ubuntu 星球上提到了這一點。帖子可以找到這裡。它討論了開發一種實用解決方案,可以使用雲端中的按需啟動/關閉機器午睡

答案4

那麼,對於伺服器,SHUTDOWN.EXE 命令可用於遠端關閉 Windows 盒子。在 Unix 上使用 telnet/ssh 腳本可以輕鬆完成相同的事情。

更大的問題是如何讓它們重新啟動。你需要區域網路喚醒或類似的東西。

這樣做的困難部分是驗證您要關閉的機器實際上沒有在執行重要的操作。就像那個 cron 作業一樣,沒有人真正確定它應該去哪裡,所以他們只是把它放在一個叢集 Web 伺服器上。現在你關閉了那台機器,作業就不再像預期的那樣運作了。

如果環境受到嚴格控制,並且您確切地知道每台機器在做什麼,那就很有意義。

相關內容