如何設計高可用性系統

如何設計高可用性系統

假設我有一些 Web 應用程式以及一些桌面應用程式在生產環境中的伺服器上運行。

在生產環境中,哪怕是一分鐘的宕機都是不能容忍的。目前我只知道HA Cluster system哪一個是用於此目的。我想知道這是否是防止系統關閉的唯一方法,或者除此之外還有其他方法嗎?

像谷歌這樣的大公司使用什麼來實現高可用性,因為他們也不會容忍哪怕一秒的停機時間?

謝謝

答案1

基本上,您希望為運行應用程式所需的每個服務提供自動故障轉移。

一種解決方案可能是以下描述的方法:

  1. 兩個系統上都安裝了 Keepalived。
  2. HAProxy 作為負載平衡器,故障轉移到 HAP LB 2。
  3. HAP 背後的 Apache/NGINX。如果失敗,HAP 將對其進行監控並重定向到另一台伺服器上的 Apache/NGINX
  4. MySQL 主/主複製、負載平衡和透過 HAP 進行監控

基本上,HAProxy 會分散系統上的負載,並且僅轉發到其中一項服務(如果該服務已啟動並正在執行)。

您正在尋找的架構可能如下所示:

在此輸入影像描述

答案2

這取決於——對於每個應用程式和 OSI 模型的每個級別,都必須創建自己的 HA 系統

但首先你可以先了解 ha-proxy、keepalived 和 nginx 以及後端

答案3

系統的強度取決於最薄弱的環節。

在典型的生產環境中,所有東西都會有多個。一個小型 Web 叢集可能由一個負載平衡器、多個反向代理、多個 http 伺服器、主/從或主/主資料庫節點組成。在此設定中,單一負載平衡器將是薄弱環節;如果它死了,就沒有任何作用。更大的環境會複製這一點,但規模更大。

最終,網路設計將取決於預期用途。

相關內容