具有程序監控的 haproxy 故障轉移?
我知道有些人正在使用 keepalived 和 heartbeat 進行活動/待機,但是如果 haproxy 程序死亡,會採取什麼措施?
如果 haproxy 程序終止和/或發生網路問題,虛擬 IP 將切換伺服器,這將是一件好事。我們目前正在研究使用起搏器的心跳和 corosync。誰能深入解釋他們對這個問題的解決方案?
更新:感謝凱爾,請參閱其中的答案和連結。
謝謝克維斯爾和凱爾!我們最終選擇了 keepalived,因為正如 Kyle 所提到的,這是 haproxy 創建者推薦的解決方案。Keepalived 包括執行您選擇的使用者空間腳本並根據退出狀態確定資源可用性的能力。因此,您可以通過程序監控非常輕鬆地完成故障轉移。另一個好處是與使用起搏器/corosync 的心跳相比更簡單,只需一個應用程序/程序和一個配置文件。
在我們的測試中,我們已經看到故障轉移發生得如此之快,以至於不會失去一個 ping。再次感謝!
另請參閱:相關的伺服器故障答案
我會說這
heartbeat
就是你要找的。如果受監視的服務(
haproxy
在您的情況下)具有符合 lsb 的 init-script-heartbeat 將執行initscript status
。如果它說服務已關閉,它將嘗試啟動它。如果它在啟動它幾次失敗 - 它會執行故障轉移到另一個節點。只要節點有辦法相互通信,這將以一種非常受控的方式執行——地址在一個節點上被刪除,而在另一個節點上被提出。如果兩個心跳機器彼此失去通信,它們都可能嘗試執行故障轉移。解決這個問題的一種方法是配置一個 STONITH 外掛(Shoot The Other Node In The Head)。這將使用管理界面並嘗試在啟動其服務之前關閉其他服務。如果您在故障轉移中涉及共享儲存,則此類機制至關重要。
就個人而言,我從未體驗過
haproxy
die - 我認為這是一項非常穩定的服務。僅當在 haproxy 節點上執行時,我heartbeat
才用於 IP 地址的故障轉移。