Azure 服務匯流排異地災害復原
服務匯流排異地災害復原功能是將 Azure 服務匯流排應用程式中斷和災害隔絕的選項之一,其主要目的為協助維護複合應用程式設定的完整性。
注意
此功能適用於 Azure 服務匯流排的進階層。
異地災害復原功能確保命名空間的整個設定 (實體、設定和屬性) 從主要命名空間持續複寫至與其配對的次要命名空間,還可讓您隨時起始僅此一次從主要命名空間容錯移轉至次要命名空間。 容錯移轉會將已選擇的命名空間別名重新指向次要命名空間,然後中斷配對。 容錯移轉一旦起始,幾乎立即完成。
需要考量的重要事項
- 此功能可在相同設定下立即持續作業,但不會複寫保留在佇列、主題訂用帳戶或無效信件佇列中的訊息。 若要保留佇列語意,複寫不只須複寫訊息資料,還要複寫訊息代理程式中的每個狀態變更,這正是異地複寫功能 (公開預覽) 所提供的功能。
- 對主要命名空間中服務匯流排實體的 Microsoft Entra 角色型存取控制 (RBAC) 指派,不會複寫至次要命名空間。 在次要命名空間中手動建立角色指派,以安全存取這些實體。
- 不會複寫下列設定。
- 虛擬網路設定
- 私人端點連線
- 啟用所有網路存取
- 啟用信任的服務存取
- 公用網路存取
- 預設網路動作
- 身分識別和加密設定 (客戶自控金鑰加密或攜帶您自己的金鑰 (BYOK) 加密)
- 啟用自動調整
- 停用本機驗證
- Azure 事件方格訂用帳戶
- 不支援將分割命名空間與非分割命名空間進行配對。
- 如果為實體啟用
AutoDeleteOnIdle
,則發生容錯移轉時,實體可能不會出現在次要命名空間中。 當次要命名空間變成主要命名空間時,上次存取狀態 (不是中繼資料的一部分) 將無法供新的主要命名空間使用,而且可能會在清除AutoDeleteOnIdle
時刪除實體。
基本概念與術語
異地災害復原功能會實作中繼資料災害復原,並依賴主要和次要災害復原命名空間。 異地災害復原功能僅適用於進階層 (部分機器翻譯)。 您不需要進行任何連接字串變更,因為連接是透過別名建立的。
本文中使用下列術語:
別名:所設定之災害復原設定的名稱。 別名提供單一穩定完整網域名稱 (FQDN) 連接字串。 應用程式會使用這個別名連接字串連接到命名空間。 使用別名可確保在觸發容錯移轉時,連接字串不會變更。
主要/次要命名空間:對應到別名的命名空間。 主要命名空間是「主動」,並且會接收訊息,其可以是現有或新的命名空間。 次要命名空間是「被動」,並不會接收訊息。 這兩者間的中繼資料會進行同步處理,因此,這兩者均能順暢地接受訊息,而不需進行任何應用程式程式碼或連接字串變更。 若要確保只有主動命名空間會接收訊息,您必須使用別名。
中繼資料:佇列、主題和訂用帳戶之類的實體,及其與命名空間關聯之服務的屬性。 只有實體及其設定會自動複寫。 不會複寫訊息。
容錯移轉:啟用次要命名空間的程序。
設定
下一節是設定命名空間之間配對的概觀。
首先建立或使用現有的主要命名空間,以及新的次要命名空間,然後將這兩個命名空間配對。 此配對會為您提供可用來連接的別名。 由於您使用別名,因此不需變更連接字串。 只需將新的命名空間新增至您的容錯移轉配對。
建立主要進階層命名空間。
在不同區域中建立次要進階層命名空間。 此步驟是選擇性的。 您可以在下一個步驟中建立配對時建立次要命名空間。
在 Azure 入口網站中,瀏覽至您的主要命名空間。
在左側功能表上選取 [異地復原],然後選取工具列上的 [起始配對]。
在 [起始配對] 頁面上,請遵循下列步驟:
選取現有的次要命名空間,或在不同區域建立次要命名空間。 在此範例中,會將現有命名空間當作次要命名空間。
針對別名,輸入異地災害復原配對的別名。
然後,選取 [建立]。
您應該會看到 [服務匯流排異地災害復原別名] 頁面,如下圖所示。 您也可以在左側功能表上選取 [異地復原],從主要命名空間頁面瀏覽至 [異地災害復原別名] 頁面。
在 [異地災害復原別名] 頁面上,選取左側功能表上的 [共用存取原則],以存取別名的主要連接字串。 請使用此連接字串,不要直接使用主要/次要命名空間的連接字串。 一開始,此別名會指向主要命名空間。
切換至 [概觀] 頁面。 您可以執行下列動作:
- 中斷主要和次要命名空間之間的配對。 選取工具列上的 [中斷配對]。
- 手動容錯移轉至次要命名空間。
選取工具列上的 [容錯移轉]。
輸入別名,確認您想要容錯移轉至次要命名空間。
開啟 [安全容錯移轉] 選項,安全地容錯移轉至次要命名空間。
注意
- 安全容錯移轉可確保在切換至次要命名空間之前,完成擱置的異地災害復原複寫。 另外,強制或手動容錯移轉則不會等待擱置複寫完成,然後再切換至次要命名空間。
- 目前,如果主要和次要命名空間不在相同的 Azure 訂用帳戶中,則安全容錯移轉會失敗。
接著選取 [容錯移轉]。
重要
容錯移轉會啟動次要命名空間,並從異地災害復原配對中移除主要命名空間。 建立另一個命名空間,以產生新的異地災害復原配對。
最後,您應該新增某些監視來偵測是否需要容錯移轉。 在大部分情況下,服務是大型生態系統的一部分,因此不太可能自動容錯移轉,容錯移轉通常都必須與其餘子系統或基礎結構同步執行。
服務匯流排標準版升級至進階版
如果您已將 Azure 服務匯流排標準命名空間移轉至 Azure 服務匯流排進階,則必須使用預先存在的別名 (也就是您的服務匯流排標準命名空間連接字串),透過 PS/CLI 或 REST API 建立災害復原設定。
這是因為在移轉期間,Azure 服務匯流排標準命名空間連接字串/DNS 名稱本身會變成 Azure 服務匯流排進階命名空間的別名。
您的用戶端應用程式必須利用此別名 (也就是 Azure 服務匯流排標準命名空間連接字串),來連線到已設定災害復原配對的進階命名空間。
如果您使用 Azure 入口網站來設定災害復原設定,則入口網站將會從您那裡摘錄此警告。
容錯移轉流程
容錯移轉會由客戶手動觸發 (明確地透過命令來觸發,或透過用戶端所擁有會觸發該命令的商務邏輯來觸發),而一律不會由 Azure 觸發。 這會賦予客戶完整的所有權和可見性,以解決 Azure 骨幹上發生的中斷情況。
觸發容錯移轉之後 -
別名連接字串會更新成指向次要進階命名空間。
用戶端 (傳送者和接收者) 會自動連線到「次要」命名空間。
「主要」與「次要」進階命名空間之間的現有配對已中斷。
一旦起始容錯移轉 -
如果發生另一個中斷,您會希望能夠再次進行容錯移轉。 因此,請設定另一個次要命名空間,並更新配對。
一旦主要命名空間再次可供使用之後,從先前的主要命名空間提取訊息。 然後,針對異地災害復原設定以外的一般訊息使用該命名空間,或者刪除舊的主要命名空間。
注意
僅支援失敗轉接語意。 在此案例中,您容錯移轉然後與新的命名空間重新配對。 不支援容錯復原;例如,像是在 SQL 叢集。
您可以使用監視系統或使用自訂監視解決方案來自動容錯移轉。 不過,這類自動化會採用額外的計劃和工作,這部分不在本文的範圍內。
管理
如果您發生錯誤,例如,您在初始化安裝期間配對錯誤的區域,您可以隨時中斷兩個命名空間的配對。 如果您想要使用配對的命名空間作為一般命名空間,請刪除別名。
使用現有命名空間作為別名
如果在您的情節中無法變更生產者與取用者的連線,則您可重複使用命名空間名稱當作別名名稱。 請參閱這裡的 GitHub 範例程式碼 \(英文\)。
範例
GitHub 上的範例示範如何設定及初始化容錯移轉。 這些範例示範下列概念:
- 在 Microsoft Entra ID 中使用 Azure Resource Manager 搭配服務匯流排,以設定和啟用異地災害復原所需的 .NET 範例和設定。
- 執行範例程式碼所需的步驟。
- 如何使用現有命名空間作為別名。
- 另外透過 PowerShell 或 CLI 啟用地理災害復原的步驟。
- 使用別名從目前的主要或次要命名空間傳送和接收。
考量
請注意此版本的下列考量:
- 在您的容錯移轉規劃中,您也應該考慮時間因素。 例如,如果您中斷連線時間超過 15 到 20 分鐘,您可能會決定初始化容錯移轉。
- 未複寫任何資料這個事實表示未複寫目前作用中工作階段。 此外,重複的偵測和排程訊息可能無法運作。 新的工作階段、新的排程訊息及新的重複項目可以運作。
- 容錯移轉複雜分散式基礎結構應該至少演練一次。
- 同步處理實體可能需要一些時間,大約每分鐘 50-100 個實體。 訂用帳戶和規則也算是實體。
私人端點
關於異地災害復原與使用私人端點的命名空間一起使用,本節提供其他考量。 若要了解通常如何使用私人端點搭配服務匯流排,請參閱整合 Azure 服務匯流排與 Azure 私人連結。
新配對
如果您嘗試在具有私人端點的主要命名空間與沒有私人端點的次要命名空間之間建立配對,配對會失敗。 只有當主要和次要命名空間都具有私人端點時,配對才會成功。 建議您在主要和次要命名空間,以及在建立私人端點的所在虛擬網路上使用相同的設定。
注意
當您嘗試將具有私人端點的主要命名空間和次要命名空間配對時,驗證程序只會檢查次要命名空間上是否存在私人端點。 不會檢查端點是否正常運作,或在容錯移轉之後是否可運作。 您必須負責確保具有私人端點的次要命名空間在容錯移轉之後能如預期般運作。
若要測試私人端點組態是否相同,請從虛擬網路外部將取得佇列要求傳送至次要命名空間,並確認您收到來自服務的錯誤訊息。
現有配對
如果主要和次要命名空間之間的配對已存在,在主要命名空間上的私人端點建立會失敗。 若要解決此問題,請先在次要命名空間上建立私人端點,然後再為主要命名空間建立私人端點。
注意
我們允許對次要命名空間唯讀存取,也允許更新私人端點設定。
建議組態
建立應用程式和服務匯流排的災害復原組態時,您必須針對裝載您應用程式主要和次要執行個體的虛擬網路,建立主要和次要服務匯流排命名空間的私人端點。
假設您有兩個虛擬網路:VNET-1、VNET-2,以及下列主要和次要命名空間:ServiceBus-Namespace1-Primary
、ServiceBus-Namespace2-Secondary
。 您需要執行下列步驟:
- 在
ServiceBus-Namespace1-Primary
上,建立兩個私人端點,使用來自 VNET-1 和 VNET-2 的子網路 - 在
ServiceBus-Namespace2-Secondary
上,建立兩個私人端點,使用來自 VNET-1 和 VNET-2 的相同子網路
這種方法的優點是,容錯移轉可能會發生在與服務匯流排命名空間無關的應用程式層。 請考量下列案例:
僅限應用程式容錯移轉:這裡,應用程式不存在於 VNET-1 中,但會移至 VNET-2。 由於在主要和次要命名空間的 VNET-1 和 VNET-2 上都設定了這兩個私人端點,應用程式會正常運作。
僅限服務匯流排命名空間容錯移轉同樣地,此案例中由於在主要和次要命名空間的虛擬網路上都設定了這兩個私人端點,應用程式會正常運作。
注意
如需虛擬網路的異地災害復原指引,請參閱虛擬網路 - 商務持續性。
角色型存取控制
對主要命名空間中服務匯流排實體的 Microsoft Entra 角色型存取控制 (RBAC) 指派,不會複寫至次要命名空間。 在次要命名空間中手動建立角色指派,以安全存取這些實體。
下一步
- 請參閱地理災害復原在這裡的 REST API 參考 (部分機器翻譯)。
- 執行地理災害復原在 GitHub 上的範例 (英文)。
- 請參閱地理災害復原範例以將訊息傳送至別名 (英文)。
若要深入了解服務匯流排傳訊,請參閱下列文章: