多站點高可用性
我們有一個需要高度可用的 SaaS 應用程序。我們已經擁有一個昂貴且維護良好的 Hyper-V 故障轉移集群,但今天我們託管該集群的數據中心停電了 5 個小時,導致我們完全離線。所以現在我們想知道是否有更好的方法是在兩個獨立的數據中心使用伺服器。假設我們讓所有後端文件複製和數據複製在這兩個站點之間工作,我們想知道如何處理前端路由 - 難怪我們如何解決這個問題,我們總是以負載均衡器結束單點故障。
所以問題是……我們如何在兩個託管站點之間設置負載平衡,以使負載平衡器不是單點故障?有沒有辦法使用兩個單獨的負載均衡器,每個站點一個?我們應該考慮輪詢 DNS 嗎?
要正確執行此操作,您需要:
- 兩個數據中心中的兩個獨立實例(您已經確定)
- 兩個數據中心之間的同步(您已經確定)
- 一種在發生故障時將客戶端從一個重定向到另一個的方法
有兩種常見的方法可以做到這一點。一個簡單,一個……不。
域名系統
Round-Robin DNS 並不是您想要的,因為您可能希望所有請求都轉到主 DC,而第二個 DC 僅在第一個 DC 停機期間使用。
您可以做的是在您的 DNS 上設置一個非常低的 TTL(例如 30 秒或 5 分鐘),這意味著如果您的 DC 確實出現故障,您只需在 5 分鐘左右更新您的 DNS,所有您的客戶將指向您的其他 DC。
這意味著因為您的兩個 DC 將具有不同的 IP 佈局,您需要在數據中心的設置中對此進行調整。
BGP
基本上,如果您要問這個問題,那麼這是您無法企及的。簡而言之,您的 IP 地址保持不變,但它們從一個數據中心“移動”到另一個數據中心。這涉及昂貴的路由器、昂貴的 IP 範圍以及對本地系統資料庫的 AS 編號和 IP 範圍的昂貴訂閱。
您的 BGP 路由器停止在您的主數據中心發布您的廣告,並開始在您的輔助數據中心發布廣告。然後網際網路圍繞離線數據中心路由並將流量發送到您的新 DC。
如果您使用 ESXi 和 vSphere 進行虛擬化,VMWare 有一個非常好的產品,我們曾經試用過它,稱為VMWare Site Recovery Manager,它基本上可以為您完成所有工作。它使您的 VM 配置保持同步,並在第一個站點離線時在第二個站點上啟動它們。雖然是大筆錢。