應用程序的通用高可用性抽象可能嗎?
我目前正在研究使我們現有的伺服器應用程序高度可用的可能性。該軟體處理來自 UDP 的消息。一些更高級別的鐵路專用協議。
有沒有辦法(一個框架或類似的)來創建一個處理冗餘和故障轉移的抽象層?我正在考慮與帶有鏡像的 RAID 控制器等效的東西,但不僅用於儲存,還用於整個系統。從“外部”看,您只能看到一個帶有網路介面的系統。在內部,有兩個甚至更多系統並行執行,而抽象層負責處理所有事情,例如在冗餘機器之間同步應用程序狀態。您將軟體安裝在黑盒的公共端,內部所有內容都會自動鏡像。當一台機器當機時,另一台機器會立即接管而不會斷開連接,因為它已經處於相同狀態。
有什麼通用的解決方案嗎?還是我們必須在我們的應用程序中手動實現它?
Pacemaker、Corosync 和 DRBD 是提供“開放集群框架”(OCF) 的 Linux 項目,用於製作通用 Linux 服務 HA。
通常,DRBD 同步複製儲存(在塊級別),而 Corosync 和 Pacemaker 管理集群中哪些節點正在執行哪些服務。可以通過 OCF 資源代理(具有標準退出程式碼和功能的 shell 腳本)或通過服務的 systemd/upstart/sysv-init 腳本來控制服務。還有一些通用的“任何東西”代理可以在集群中生成和監控程序,但我只會在你感覺很懶的時候才使用它們,因為它不健壯。
實現通用 HA 的最簡單、最透明的方法之一是使用 Pacemaker 和 DRBD 創建 KVM 集群。虛擬機在啟動時配置並啟動您的應用程序,Pacemaker/DRBD 處理下面的集群(在管理程序上)。
網上有很多資源可以解釋詳細步驟,如果你用 Google 搜尋的話,但是 LINBIT 有一個技術指南(在軟體牆後面)可以逐步完成設置:https ://linbit.com/tech-guide/drbd9-kvm- rhel8/
更多參考:
DRBD:https
://linbit.com/ Pacemaker/Corosync:https ://clusterlabs.org/