共用方式為


在多個 Azure Stack Hub 區域中執行多層式應用程式,以取得高可用性

此參考架構會顯示一組經過證實的做法,可在多層式應用程式多個 Azure Stack Hub 區域之間執行,以達到可用性和健全的災害復原基礎結構。 在本檔中,流量管理員可用來達到高可用性,不過,如果流量管理員不是您環境中的慣用選擇,也可以使用一組高可用性負載平衡器來替代。

注意

請注意,下列架構中使用的流量管理員必須在 Azure 中設定,而且用來設定流量管理員配置檔的端點必須是可公開路由傳送的 IP。

建築

此架構是以 SQL Server 多層式應用程式中所示的架構為基礎。

Azure 多層式應用程式的高可用性網路架構

  • 主要和次要區域。 使用兩個區域來達到更高的可用性。 一個是主要區域。 另一個區域是用於故障轉移。

  • Azure 流量管理員流量管理員 將進入的請求導向到其中一個區域。 在正常運行期間,它會將要求路由至主要區域。 如果該區域變成無法使用,流量管理員就會故障轉移至次要區域。 如需詳細資訊,請參閱第 節流量管理員組態

  • 資源群組。 為主要區域和次要區域分別建立資源群組。 這可讓您彈性地將每個區域管理為單一資源集合。 例如,您可以重新部署一個區域,而不需要關閉另一個區域。 鏈接資源群組,讓您可以執行查詢來列出應用程式的所有資源。

  • 虛擬網路。 為每個區域建立個別的虛擬網路。 請確定位址空間不會重疊。

  • SQL Server Always On 可用性群組。 如果您正在使用 SQL Server,我們建議您使用 SQL Always On 可用性組合,以提高高可用性。 建立單一可用性群組,其中包含這兩個區域中的 SQL Server 實例。

  • VNET 到 VNET VPN 連線。 由於 Azure Stack Hub 上尚未提供 VNET 對等互連,請使用 VNET 對 VNET VPN 連線來連線這兩個 VNET。 如需詳細資訊,請參閱 Azure Stack Hub 中的 VNET 到 VNET。

建議

多區域架構可以提供比部署到單一區域更高的可用性。 如果主要區域出現中斷,您可以使用 流量管理器 自動切換至備援區域。 如果應用程式的個別子系統失敗,此架構也可以協助。

有數種一般方法可跨區域實現高可用性:

  • 主動/被動與熱待命。 流量會移至一個區域,而另一個區域則處於熱備用狀態等候。 熱待命表示次要區域中的虛擬機器會隨時被配置並處於運行狀態。

  • 主動/被動伴隨冷待命。 流量將轉移至某個區域,而另一個區域則處於冷備用狀態。 冷待命是指在需要執行故障轉移時,次要區域中的虛擬機(VM)才會被配置。 這種方法的執行成本較低,但在失敗期間通常需要較長的時間才能上線。

  • 主動/主動。 這兩個區域都在作用中,而且要求會在兩者之間進行負載平衡。 如果某個區域變成無法使用,則會從循環使用中移除。

此參考架構著重於使用流量管理員進行故障轉移的主動/被動備援和熱待命設置。 您可以部署少量的 VM 以進行熱待命,然後視需要相應放大。

流量管理員設定

設定流量管理員時,請考慮下列幾點:

  • 路由。 流量管理員支援數種 路由演算法,。 針對本文所述的案例,請使用 優先順序 路由(先前稱為 故障轉移 路由)。 使用此設定時,流量管理員會將所有要求傳送至主要區域,除非主要區域變得無法連線。 在那個時候,它會自動切換至次要區域。 請參閱 設定故障轉移路由方法

  • 健康檢測。 流量管理員會使用 HTTP (或 HTTPS) 探查 來監視每個區域的可用性。 探測器會檢查指定的 URL 路徑是否返回 HTTP 200 回應。 最佳做法是建立可報告應用程式整體健全狀況的端點,並將此端點用於健康情況探查。 否則,當應用程式的重要部分實際失敗時,探查可能會報告狀況良好的端點。 如需詳細資訊,請參閱 健康狀況端點監控模式

當流量管理員發生故障轉移時,客戶端會有一段時間無法連線到應用程式。 持續時間受下列因素影響:

  • 健康情況探測必須偵測到主要區域已無法達到。

  • DNS 伺服器必須更新IP位址的快取 DNS 記錄,這取決於 DNS 存留時間(TTL)。 默認 TTL 為 300 秒(5 分鐘),但您可以在建立流量管理員設定檔時設定此值。

如需詳細資訊,請參閱 關於流量管理監控

如果流量管理員發生故障切換,建議您執行手動回復,而非實作自動回復。 否則,您可以建立應用程式在區域之間來回翻轉的情況。 在回復之前,請確認所有應用程式子系統都狀況良好。

請注意,流量管理員預設會自動回切。 若要避免這種情況,請在故障轉移事件之後手動降低主要區域的優先順序。 例如,假設主要區域是優先順序 1,而次要區域是優先順序 2。 故障轉移之後,將主要區域設為優先順序 3,以防止自動復原。 當您準備好切換回來時,請將優先順序更新為 1。

下列 Azure CLI 命令會更新優先順序:

az network traffic-manager endpoint update --resource-group <resource-group> --profile-name <profile>
    --name <endpoint-name> --type externalEndpoints --priority 3

另一種方法是暫時停用端點,直到您準備好容錯回復為止:

az network traffic-manager endpoint update --resource-group <resource-group> --profile-name <profile>
    --name <endpoint-name> --type externalEndpoints --endpoint-status Disabled

根據故障轉移的原因,您可能需要重新部署區域內的資源。 在切回之前,請執行作業整備測試。 測試應該驗證以下事項:

  • VM 已正確設定。 (已安裝所有必要的軟體、IIS 正在執行等等。

  • 應用程式子系統狀況良好。

  • 功能測試。 (例如,可從 Web 層連線到資料庫層。

設定 SQL Server Always On 可用性群組

在 Windows Server 2016 之前,SQL Server Always On 可用性群組需要域控制器,而可用性群組中的所有節點都必須位於相同的 Active Directory (AD) 網域中。

若要設定可用性群組:

  • 至少在每個區域中放置兩個域控制器。

  • 為每個域控制器提供靜態IP位址。

  • 建立 VPN,以啟用兩個虛擬網路之間的通訊。

  • 針對每個虛擬網路,將域控制器的IP位址(從兩個區域)新增至 DNS 伺服器清單。 您可以使用下列 CLI 命令。 如需詳細資訊,請參閱 變更 DNS 伺服器

    az network vnet update --resource-group <resource-group> --name <vnet-name> --dns-servers "10.0.0.4,10.0.0.6,172.16.0.4,172.16.0.6"
    
  • 建立 Windows Server 故障轉移叢集 (WSFC) 叢集,其中包含這兩個區域中的 SQL Server 實例。

  • 建立 SQL Server Always On 可用性群組,其中包含主要和次要區域中的 SQL Server 實例。 如需步驟,請參閱 將 AlwaysOn 可用性群組擴充至遠端 Azure 資料中心 (PowerShell)

    • 將主副本放在主要區域中。

    • 將一或多個次要複本放在主要區域內。 設定這些以使用同步提交及自動故障轉移。

    • 將一或多個次要複本放在次要區域中。 基於效能考慮,請將這些設定為使用 異步 提交。 (否則,所有 T-SQL 交易都必須等候透過網路往返至次要區域。

注意

非同步提交複本不支援自動故障轉移。

可用性考慮

使用複雜的多層式應用程式,您可能不需要在次要地區中複製整個應用程式。 相反地,您可能只復寫支援商務持續性所需的重要子系統。

流量管理器是系統中可能的故障點。 如果流量管理員服務失敗,用戶端就無法在停機期間存取您的應用程式。 檢閱 流量管理員 SLA,並判斷單獨使用流量管理員是否符合高可用性的商務需求。 如果沒有,請考慮新增另一個流量管理解決方案作為備援。 如果 Azure 流量管理員服務失敗,請將 DNS 中的 CNAME 記錄變更為指向其他流量管理服務。 (此步驟必須手動執行,而且在傳播 DNS 變更之前,您的應用程式將無法使用。

針對 SQL Server 叢集,有兩個故障轉移案例需要考慮:

  • 主要區域中的所有 SQL Server 資料庫複本都會失敗。 例如,這可能會在區域性中斷期間發生。 在此情況下,即使 Traffic Manager 在前端自動進行故障轉移,您仍然必須手動故障轉移可用性群組。 請遵循 執行 SQL Server 可用性群組的強制手動故障轉移中的步驟,其中說明如何在 SQL Server 2016 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 來執行強制故障轉移。

    警告

    使用強制故障轉移時,有資料遺失的風險。 一旦主要區域重新上線,請擷取資料庫的快照,並使用 tablediff 查找差異。

  • 流量管理員故障轉移至次要區域,但主要 SQL Server 資料庫複本仍可供使用。 例如,前端層可能會失敗,而不會影響 SQL Server VM。 在此情況下,因特網流量會路由傳送至次要區域,而且該區域仍可連線到主要複本。 不過,延遲將會增加,因為 SQL Server 連線會跨區域。 在此情況下,您應該執行手動故障轉移,如下所示:

    1. 暫時將次要區域中的 SQL Server 資料庫複本切換為 同步 認可。 這可確保在故障轉移期間不會遺失數據。

    2. 故障轉移至該複本。

    3. 當您切換回主要區域時,請恢復非同步認可設定。

管理性考慮

當您更新部署時,請一次更新一個區域,以減少因應用程式設定不正確或錯誤而發生全域失敗的機會。

測試系統對失敗的復原能力。 以下是一些要測試的常見失敗案例:

  • 關閉 VM 實例。

  • 壓力資源,例如 CPU 和記憶體。

  • 中斷連線/延遲網路。

  • 當機處理程序。

  • 憑證過期。

  • 模擬硬體錯誤。

  • 關閉域控制器上的 DNS 服務。

測量復原時間,並確認它們符合您的商務需求。 測試失敗模式的組合。

後續步驟