多少故障轉移冗餘就足夠了?
我正在開發一個客戶端-伺服器系統,所有客戶端目前都將他們的交易送出到基本上是一個西海岸 IP 地址,以到達所謂的“網關”應用程序。網關進行一些記帳並將每個事務分派到多個數據庫伺服器中的任何一個以進行最終處理。伺服器將其結果直接返回給客戶端(而不是通過網關返回)。
該計劃是在東海岸添加第二個網關,用於冗餘和故障轉移。它通常只會處於備用狀態,旨在在工作網關發生故障時接管並成為實際網關,本質上是此處所示的經典配置。
一些參與者認為只有一個備用網關是不夠的,我們還應該實施第二個備用網關,比如在中西部。其他人則爭辯說,兩個備用站的額外成本、複雜性和管理是不必要的,並且兩個海岸的網關同時不可用的可能性很小,以至於不值得關注。
什麼被認為是最佳實踐?通常認為多少冗餘(就客戶端可用的物理獨立接入點而言)是名義上的?雙重故障是否很普遍,以至於經常後悔只有一個備用?
**編輯:**關於我需要或想要的冗餘量的“計算”成本與收益,我想最好將我的問題重新表述為:
哪些統計數據表明地理上獨立的 IP 地址集契約時無法訪問的頻率?
換句話說,像這樣的表
On average, 1 west coast IP + 1 east cost IP are simultaneously unreachable 1 day/year. On average, 1 west IP + 1 east IP + 1 southern IP are simultaneously unreachable 1 hr/year. On average, 1 west IP + 1 east IP + 1 southern IP + 1 northern IP are simultaneously unreachable 1 minute/year. etc.
使得選擇所需的冗餘量變得相當容易,因為有一個實際的基礎來計算成本與性能。(我猜“同時無法訪問”的意思是“隨機分佈在全國各地的大量客戶端”,因為單個客戶端可能無法訪問任何伺服器,無論有多少伺服器,因為她自己的本地網路故障。)
但是,如果沒有這樣的表,任何冗餘與性能計算都只是猜測。那麼: 是否有任何現實生活可用性數據的來源可以作為此類計算的基礎? 還是每個人都只是猜測他們需要什麼,一旦他們發現他們猜的低了就根據需要擴展,或者如果他們猜的高就減少?
提供容錯產品的公司似乎希望收集和推廣此類數據。另一方面,也許數據會顯示 99.99% 的容錯客戶根本不需要太多冗餘。例如,如果我可以使用一整年,並且我的東西 IP 地址永遠不會同時無法訪問,那麼我就不會考慮添加中西部 IP。
我還意識到由於我的站點外部的力量而無法訪問的 IP 地址與由於我的站點內部發生故障而導致的 IP 地址關閉之間存在區別。內部故障(在我這邊的 IP 地址)相對容易處理。外部故障(在 IP 地址的客戶端,例如加利福尼亞因地震而離線,或紐約在颶風期間離線)我只能通過在其他地理位置擁有額外的 IP 地址來處理。 這就是我希望量化的機率。目前,我傾向於聲稱東西方 IP 地址同時無法訪問的可能性太小而無法關注的陣營。
我們的第一個 Web 伺服器於 1995 年在 X 市開始使用 Centrex 連接,該連接於 1998 年轉換為 ISDN,然後在 2001 年轉換為 DSL,當時我們還在幾英里外的 Y 市啟動了第二個靜態地址作為備份。儘管我們使用了兩個不同的 ISP,但底層網路都是 PacBell,現在是 ATT。我們的 X 市設施於 2003 年騰空,只有 Y 市執行我們的伺服器,直到 2009 年我們在 Z 市啟動了另一個靜態地址,距離 Y 市僅幾英里,現在 Y 和 Z 甚至使用同一個 ISP。
這些年來,據我們所知,我們的 IP 地址從未“在外部”(如您所說)無法訪問。顯然 PacBell/ATT 和我們的 ISP 總是有足夠的冗餘,他們至少總能傳送我們的數據包。“在內部”我們遇到的唯一問題是電源故障,甚至不是機器故障,而且在這些事件期間(幾天可能每兩年一次)暫時在兩個位置之間切換 DNS 指針就足夠了我們的目的。
如果您獲得西海岸 IP 和東海岸 IP,我預測您的客戶端(作為一個組)可能永遠不會看到這些地址同時無法訪問。如果兩個位置都無法到達(換句話說,數據包甚至無法發送到那裡),那麼世界末日可能已經到來,無論如何你都會遇到更大的問題。只要確保您有適當的政策和程序(並經過測試),以便在任一站點出現內部故障時盡快恢復,並且不要擔心獲得第三個中西部 IP,直到情況以某種方式證明確實有必要。