雲端服務高可用性與災難復原指南:適用於AWS、Azure及GCP的SQL Server部署

雲端服務高可用性與災難復原指南:適用於AWS、Azure及GCP的SQL Server部署

2024.08.03

公有雲端提供了多種選項,為SQL Server資料庫應用程式提供高可用性和災難復原保護。相反地,在私有雲端中可用的某些選項在公有雲端中則無法使用。鑑於眾多選擇和限制,系統和資料庫管理員所面臨的挑戰,是為在混合雲和純公有雲中運行的每個應用程式,確定最佳可用選項。

所有雲端服務提供商(CSP)都有服務等級協議(SLA),當正常運作時間低於指定水準時(通常介於95.00%至99.99%),可獲得金錢回饋保證。四個9(99.99%)的正常運作時間通常被認為是高可用性,要符合這些99.99%的SLA要求,配置必須滿足特定條件。

但請注意:SLA僅保證伺服器層級的「撥號音」,並明確排除了許多導致資料庫和應用程式層級停機的原因。這些排除項目難免包括自然災害、客戶的作為(或不作為)以及客戶的系統或應用程式軟體。儲存空間可能也有一個低於伺服器的單獨SLA。因此,雖然利用CSP基礎架構的各個層面很有利,但仍需要額外的預防措施,以確保關鍵任務SQL Server資料庫的足夠正常運作時間。

高可用性(HA)和災難復原(DR)之間的差異
適當利用雲端的彈性基礎架構,需要了解「故障」和「災難」之間關鍵的差異,因為這些差異會影響用於HA和DR保護的預防措施的選擇。故障的規模較小且持續時間較短,影響範圍僅限於單一伺服器、機架或單一資料中心的電力或冷卻設備。災難的影響範圍更廣且持續時間更長,可能影響多個資料中心,以致無法快速復原。

最重要的影響在於備援資源(系統、軟體和資料)的位置,可以是在區域網路上以從本地化故障中復原。相反地,從廣泛災難中復原所需的備援資源,必須跨越廣域網路。

對於需要高交易處理吞吐量效能的資料庫應用程式,能夠透過區域網路將作用中實例的資料同步複製到待命實例,可讓待命實例在發生故障時立即「熱」切換接手。此類快速復原應該是所有HA預防措施的目標。

在DR配置中,必須以非同步方式複製資料,以防止廣域網路固有的延遲對作用中實例的吞吐量效能產生不利影響。這意味著正在進行的更新資料,待命實例相較於作用中實例總是落後,使其處於「暖」狀態,並在手動復原過程中產生無法避免的延遲。

三大主要CSP都在資料中心內部和跨資料中心之間提供這些差異的備援。其中特別值得關注的是各自命名為「可用區域」的功能,使得能夠將區域網路上可用的同步複製,與廣域網路提供的地理分離結合。這些區域透過低延遲、高吞吐量的網路連接兩個或多個區域性資料中心,以促進同步資料複製。由於延遲約為一毫秒,使用多區域配置已成為HA的最佳實踐。

對於DR,所有CSP都提供跨多個區域的服務,以免遭受可能影響多個區域的重大災難。例如,Google有所謂的DIY(Do-It-Yourself,自己動手做)DR,並提供範本、食譜和其他工具指引。Microsoft和Amazon則分別提供受管理的DR即服務(DRaaS)產品:Azure Site Recovery和CloudEndure Disaster Recovery。

對於這三個CSP,都需要注意跨區域的資料複製必須是非同步的,因此復原將需要手動執行,以確保最小或零資料損失。由於區域範圍的災難發生機率很低,因此復原過程中的延遲是可以接受的。

讓SQL Server「永不停機」
SQL Server提供了兩種自有的HA/DR功能:Always On Failover Cluster Instances和Always On Availability Groups。FCI提供了三個值得注意的優點:包含在較便宜的Standard Edition中;保護整個SQL Server實例;以及自SQL Server 7版本以來的支援。一個重大缺點是需要儲存區域網路(SAN)或其他形式的共用儲存空間,而這在雲端中是無法使用的。Windows Server 2016 Datacenter Edition透過引入Storage Spaces Direct來解決了共用儲存空間的缺乏。但S2D也有其限制,最明顯的是無法跨越可用區域。

SQL Server的另一個HA/DR功能Always On Availability Groups是一種更穩健的解決方案,能夠提供無資料損失的快速復原。它的其他優點包括包含在SQL Server 2017 for Linux中、無需共用儲存空間,以及可讀取次要複本進行查詢(需適當授權)。但在Windows上,它需要取得價格昂貴得多的Enterprise Edition授權,且無法保護整個SQL Server實例。

值得一提的是,SQL Server還提供了Basic Availability Groups功能,但它每個Availability Group只支援單一資料庫,因此僅適用於最小型的環境。

這兩種選項的限制,導致需要第三方故障轉移叢集解決方案,專為在私有、公有和混合雲環境中,為幾乎所有Windows和Linux應用程式提供HA/DR保護而打造。這些純軟體解決方案至少能促進實時資料複製、能夠在應用程式層級偵測故障的持續監控,以及可配置的故障切換和故障回復政策。大多數解決方案還提供各種增值功能,其中一些專為熱門應用程式(如SQL Server)而設計。

故障轉移叢集產品提供了兩大優勢:無需SAN的操作,克服了雲端缺乏共用儲存空間的限制;以及應用程式無關性,消除了為不同應用程式提供不同HA/DR預防措施的需求。

相關文章