依賴于高可用性應用程序的企業應該采用雙活數據中心設計,以確保可靠性和彈性。而運行高可用性應用程序的企業都必須回答以下基本問題:當底層通信基礎設施不再可靠時,將如何創建具有彈性的應用程序架構?
以一家咨詢機構與用戶的合作為例,該客戶的主要業務應用程序具有高可用性需求。其客戶將事務發送到主要數據中心應用服務器,并在收到確認之前緩沖事務。其客戶將其兩個數據中心分別配置為主數據庫和備份數據中心。
在可靠性方面,客戶每年多次經歷與網絡相關的中斷。此外,從主數據中心切換到備份數據中心的故障轉移機制是需要數小時才能執行的一個人工處理過程。因此,在故障轉移過程完成之前,需要解決網絡問題。顯然,客戶需要一種更可靠的數據中心故障轉移機制,使客戶能夠訪問高可用性應用程序。
還有一種選擇是讓網絡和數據中心高度可靠,其數據中心的停機事件將非常罕見。然而,高度可靠的基礎設施的架構往往也是脆弱的,并且微小的變化可能導致難以診斷和糾正的宕機和中斷。
彈性應用程序體系結構
為了避免使系統變得脆弱,實現彈性應用程序的更好方法是部署不依賴于單個路徑或功能的雙活數據中心體系結構。雙活(active-active)這個術語指的是至少運營兩個數據中心,其中兩個數據中心都可以在任何時間為應用程序服務,因此每個數據中心都充當活動應用程序的站點。客戶可以在任何一個數據中心執行事務,每個數據中心的設計和操作都比創建單個超級可靠的數據中心簡單得多。
請注意,彈性應該內置在應用程序中,而不是網絡和IT基礎設施中。這意味著即使網絡或服務器的某部分意外發生故障,其應用程序仍可繼續訪問。這種方法的核心是高可用性應用程序體系結構需要包含可靠的數據交換。在該體系結構中隱含的是每個數據中心的數據庫在執行客戶端事務時需要彼此更新。
客戶的應用程序特性非常適合雙活架構,其中任何一個數據中心都可以執行完整事務。客戶交易被發送到更新中央數據庫的數據中心應用程序,然后向客戶端點發送確認。該機制保證了交易的交付。由于高可用性應用程序是內部開發的,因此可以在內部進行后續修改。
用于數據傳送的TCP?
傳輸控制協議(TCP)是為確保可靠的數據傳輸而設計的網絡機制。雖然傳輸控制協議(TCP)可以重試傳輸丟棄的數據包,但是當其中一個端點發生故障時,它無法保證數據傳輸。傳輸控制協議(TCP)會話在兩個端點的接口之間建立。如果其中一個端點(服務器或其接口)出現故障,傳輸控制協議(TCP)會話將會終止。
獨角獸公司的經驗教訓
例如Facebook、谷歌、微軟、Netflix、亞馬遜等獨角獸公司的IT系統,旨在讓客戶連接到他們的數據中心。如果數據中心某個部分發生故障,則嘗試使用該組件的事務將自動分配給IT基礎設施的不同部分。而這些行業巨頭并不希望他們的基礎設施部分失敗,因此他們在應用程序本身中構建更多的彈性。
其他公司的彈性架構
如果組織并不是獨角獸公司,那么能做什么?可以向獨角獸公司學習,并修改IT系統,以類似的方式運作。這最適用于內部構建的高可用性應用程序。
例如,客戶端可以使用具有通過域名系統學習的數據中心地址的循環列表的事務重傳計時器,也就是全局服務器負載平衡。客戶端將緩沖事務,直到它收到來自可訪問數據中心的確認。數據庫同步會將更新分發到其他實例,因此任何數據庫都可以處理這些事務。該架構允許組織部署多個應用程序數據庫系統。這種方法甚至可以擴展到訪問云計算基礎設施中的數據庫實例,如Amazon和Microsoft Azure。
采用第三方應用程序(例如電子健康記錄應用程序)更具挑戰性。可以要求軟件供應商能夠使用雙活數據中心進行操作的彈性系統設計。如果仔細檢查應用程序的客戶端,企業可能會發現添加能夠監視數據中心連接的小型軟件模塊的機會。如果連接失敗,則軟件模塊可以自動將應用程序切換到另一個數據中心。
另一種選擇是考慮軟件定義的WAN等技術,通過使用來自不同提供商的多個鏈路來增加路徑多樣性。此方法也適用于第三方應用程序。
隨著云計算的廣泛采用,設計系統以使用一個內部數據中心和一個基于云計算的數據中心是很誘人的。
高可用性的應用教訓
企業網絡的安全還有一些說明如何使IT系統和應用程序具有高可用性的案例。雖然可能需要一些創新來改進組織無法控制的應用程序,但好消息是,有很多技術可以幫助組織提高其應用程序的彈性。