將現有的 Azure 服務匯流排標準命名空間遷移至進階層
之前,Azure 服務匯流排只在標準層上提供命名空間。 命名空間是針對低輸送量和開發人員環境最佳化的多租用戶設定。 進階層會針對可預測的延遲提供每個命名空間的專用資源,並以固定價格增加輸送量。 進階層已針對需要其他企業功能的高輸送量和生產環境進行最佳化。
本文描述如何將現有的標準層命名空間移轉至進階層。
警告
移轉適用要升級至進階層的服務匯流排標準命名空間。 移轉工具不支援降級。 從標準移轉至進階層級期間,將會建立 DNS 指標,您可以使用此指標來存取標準服務匯流排。 請注意,在移轉期間將會建立 alternateName,其代表舊服務匯流排 DNS 命名空間的指標,且該作業無法復原。 應在測試環境中執行任何類型的測試。
要注意的一些重點:
- 此移轉是為了就地進行,這表示現有的傳送者和接收者應用程式不需要對程式碼或設定進行變更。 現有的連接字串會自動指向新的進階命名空間。
- 如果您使用現有的進階名稱,進階命名空間中應該沒有實體移轉成功,而且不應該啟用分割。
- 標準命名空間中的所有實體都會在移轉程序期間複製到進階命名空間。
- 移轉在進階層上支援每個傳訊單位 1,000 個實體。 若要識別您需要多少個傳訊單位,請從您目前的標準命名空間上擁有的實體數目開始。
- 您無法直接從基本層移轉至進階層,但您可以先從基本移轉至標準,然後在下一個步驟中從標準移轉至進階,以間接方式進行。
- 不會移轉角色型存取控制 (RBAC) 設定,因此您必須在移轉之後手動新增這些設定。
移轉步驟
某些條件與移轉程序相關聯。 請熟悉下列步驟,以減少錯誤的可能性。 這些步驟概述移轉程序,而後續各節會列出逐步的詳細資料。
- 建立新的進階命名空間。 您可以使用本文中的下列 CLI 或 Azure 入口網站指示,完成後續三個步驟。
- 將標準和進階命名空間彼此配對。
- 將實體從標準同步 (複製) 到進階命名空間。
- 認可移轉。
- 使用命名空間的移轉後名稱清空標準命名空間中的實體。
- 刪除標準命名空間。
重要
認可移轉之後,請存取舊的標準命名空間,並清空佇列和訂用帳戶。 清空訊息之後,這些訊息可能會傳送至接收端應用程式要處理的新進階命名空間。 清空佇列和訂用帳戶之後,建議您刪除舊的標準命名空間。
使用 Azure CLI 或 PowerShell 移轉
若要使用 Azure CLI 或 PowerShell 工具將服務匯流排標準命名空間移轉至進階,請遵循下列步驟。
建立新的服務匯流排進階命名空間。 您可以參考 Azure Resource Manager 範本,或使用 Azure 入口網站。 請務必為 serviceBusSku 參數選取 premium。
設定下列環境變數以簡化移轉命令。 您可以瀏覽至 Azure 入口網站中的命名空間,並複製類似下列範例的 URL 部分,以取得進階命名空間的 Azure Resource Manager 識別碼:
/subscriptions/00000000-0000-0000-0000-00000000000000/resourceGroups/contosoresourcegroup/providers/Microsoft.ServiceBus/namespaces/contosopremiumnamespace
。resourceGroup = <resource group for the standard namespace> standardNamespace = <standard namespace to migrate> premiumNamespaceArmId = <Azure Resource Manager ID of the premium namespace to migrate to> postMigrationDnsName = <post migration DNS name entry to access the standard namespace>
重要
移轉後別名/名稱 (post_migration_dns_name) 將用來在移轉後存取舊的標準命名空間。 使用此選項來清空佇列和訂用帳戶,然後刪除命名空間。
將標準和進階命名空間配對,並使用下列命令開始同步:
az servicebus migration start --resource-group $resourceGroup --name $standardNamespace --target-namespace $premiumNamespaceArmId --post-migration-name $postMigrationDnsName
使用下列命令來檢查移轉狀態:
az servicebus migration show --resource-group $resourceGroup --name $standardNamespace
當您看到下列值時,即會將移轉視為完成:
- MigrationState = "Active"
- pendingReplicationsOperationsCount = 0
- provisioningState = "Succeeded"
此命令也會顯示移轉設定。 檢查以確保值已正確設定。 此外,請在入口網站中檢查進階命名空間,以確保已建立所有佇列和主題,且其符合標準命名空間中存在的內容。
執行下列完整命令來認可移轉:
az servicebus migration complete --resource-group $resourceGroup --name $standardNamespace
使用 Azure 入口網站移轉
使用 Azure 入口網站的移轉具有與使用命令進行移轉相同的邏輯流程。 遵循下列步驟,使用 Azure 入口網站進行移轉。
在左窗格中的 [瀏覽] 功能表上,選取 [移轉至進階]。 選取 [開始使用] 按鈕以繼續下一頁。
您會看到下列 [設定命名空間] 頁面。
在 [設定命名空間] 頁面上,遵循下列步驟之一:
- 如果您選取 [建立新的進階命名空間]:
在 [建立命名空間] 頁面上,輸入命名空間的名稱,然後選取 [檢閱 + 建立]。
在 [檢閱 + 建立] 頁面上,選取 [建立]。
- 如果您選取 [選取現有的空白進階命名空間]:
選取具有命名空間的 Azure 訂用帳戶和資源群組。
然後,選取進階命名空間。
然後按一下 [選取]。
- 如果您選取 [建立新的進階命名空間]:
輸入移轉後名稱,然後選取 [下一步]。 移轉完成後,您將使用此名稱來存取標準命名空間。
選取 [開始同步] 以同步標準和進階命名空間之間的實體。
在對話方塊中選取 [是],以確認並開始同步。等待同步完成。 然後選取下一步。
重要
如果您基於任何原因需要中止移轉,請檢閱本文件常見問題集一節的中止流程。
在 [切換] 頁面上選取 [完成移轉]。
選取 [是] 以確認將您的標準命名空間切換為進階。 參數完成後,標準命名空間的 DNS 名稱將指向您的進階命名空間。 此作業無法復原。 移轉完成時,您會看到成功頁面。
警示
Azure 服務匯流排進階層不支援 Azure 服務匯流排標準層所提供的部分功能。 這些是預設的設計,因為進階層為可預測的輸送量和延遲提供專用資源。
以下是進階及其風險降低不支援的功能概觀。
快速實體
進階層中不支援不會將任何訊息資料認可至儲存體的快速實體。 專用資源可大幅改善輸送量,同時確保資料持續保存,如同任何企業傳訊系統所預期。
在移轉期間,您的標準命名空間中的任何快速實體都會在進階命名空間上建立為非快速實體。
如果您使用 Azure Resource Manager 範本,請確保您已從部署設定中移除 'enableExpress' 旗標,使得您的自動化工作流程執行不會發生錯誤。
RBAC 設定
命名空間上的角色型存取控制 (RBAC) 設定不會移轉至進階命名空間。 您必須在移轉之後手動新增它們。
常見問題集
認可移轉時會發生什麼事?
認可移轉之後,指向標準命名空間的連接字串將指向進階命名空間。
傳送端和接收端應用程式會與標準命名空間中斷連線,並自動重新連線至進階命名空間。
如果您要使用 Azure Resource Manager 識別碼進行設定,而不是連接字串 (例如作為事件方格訂用帳戶的目的地),則必須將 Azure Resource Manager 識別碼更新為進階命名空間的識別碼。
在標準至進階的移轉完成之後,我該做什麼?
標準至進階的移轉可確保將主題、訂用帳戶和篩選等實體中繼資料從標準命名空間複製到進階命名空間。 認可至標準命名空間的訊息資料不會從標準命名空間複製到進階命名空間。
標準命名空間在移轉進行期間,可能會有一些傳送並認可的訊息。 從標準命名空間手動清空這些訊息,並手動將其傳送至進階命名空間。 若要手動清空訊息,請使用主控台應用程式或指令碼,其會使用您在移轉命令中指定的移轉後 DNS 名稱來清空標準命名空間實體。 將這些訊息傳送至進階命名空間,讓接收端可以處理這些訊息。
清空訊息之後,請刪除標準命名空間。
重要
清空來自標準命名空間的訊息之後,刪除該標準命名空間。 這很重要,因為一開始參考標準命名空間的連接字串現在會參考進階命名空間。 您不再需要標準命名空間。 刪除您移轉的標準命名空間有助於減少稍後的混淆。
我預期會有多少停機時間?
移轉程序旨在減少應用程式的預期停機時間。 停機時間可使用傳送端和接收端應用程式用來指向新進階命名空間的連接字串來減少。
應用程式所經歷的停機時間受限於更新 DNS 項目以指向進階命名空間所需的時間。 停機時間大約為 5 分鐘。
我是否需要在進行移轉時進行任何設定變更?
否,要執行移轉不需要進行程式碼或設定變更。 標準命名空間的 DNS 名稱會指向進階命名空間。 傳送端和接收端應用程式用來存取標準命名空間的連接字串會自動對應,以作為進階命名空間的別名。
如何中止移轉?
您可以使用 Abort
命令或使用 Azure 入口網站來中止移轉。
Azure CLI
az servicebus migration abort --resource-group $resourceGroup --name $standardNamespace
Azure 入口網站
在 [同步實體] 頁面上選取 [中止]。
完成時,您會看到下列頁面:
當我中止移轉時會發生什麼事?
當移轉程序中止時,它會中止將實體 (主題、訂用帳戶和篩選) 從標準複製到進階命名空間的程序,並中斷配對。
連接字串不會更新成指向進階命名空間。 您現有的應用程式會如同開始移轉之前繼續正常運作。
不過,它不會刪除進階命名空間上的實體或刪除進階命名空間。 如果您決定不要繼續進行移轉,請手動刪除實體。
重要
如果您決定中止移轉,請刪除您為移轉佈建的進階命名空間,使得您不需對該資源支付費用。
我不想清空訊息。 我該如何處理?
在移轉發生並且在認可移轉之前,傳送端應用程式可能會傳送訊息,並對標準命名空間上的儲存體認可。
在移轉期間,實際訊息資料/承載不會從標準複製到進階命名空間。 訊息必須手動清空,然後傳送至進階命名空間。
不過,如果您可以在計劃性維護/內務處理期間移轉,而且您不想手動清空並傳送訊息,請遵循下列步驟:
停止寄件者應用程式。 接收端應用程式會處理目前在標準命名空間中的訊息,並清空佇列。
在標準命名空間中的佇列和訂用帳戶空白之後,請遵循稍早所述的程序,以執行從標準至進階命名空間的移轉。
移轉完成後,您可以重新啟動傳送端應用程式。
傳送端和接收端現在會自動與進階命名空間連線。
注意
您不需要針對移轉停止接收端應用程式。
移轉完成後,接收端應用程式會與標準命名空間中斷連線,並自動連線到進階命名空間。
下一步
- 深入了解標準和進階傳訊之間的差異。
- 了解服務匯流排進階的高可用性和異地災害復原層面。