共用方式為


將 Azure 事件中樞重新放置到另一個區域

本文說明如何將事件中樞命名空間和組態設定複製到另一個區域。

如果您在包含事件中樞命名空間的 Azure 資源群組中有其他資源,您可以在資源群組層級上匯出範本,以便在一個步驟中將所有相關資源移至新的區域。 若要了解如何將資源群組匯出至範本,請參閱跨區域移動資源 (從資源群組)

必要條件

  • 確定目的地區域中支援您帳戶所使用的服務和功能。

  • 如果您已針對命名空間中的事件中樞啟用擷取功能,請在移動事件中樞命名空間之前,先移動 Azure 儲存體或 Azure Data Lake Store Gen 2 帳戶。 您也可以遵循這篇文章中所述的步驟,將包含儲存體和事件中樞命名空間的資源群組移至另一個區域。

  • 如果事件中樞命名空間在事件中樞叢集中,請先將專用叢集移至目標區域,再進行本文中的步驟。 您也可以使用 GitHub 上的快速入門範本來建立事件中樞叢集。 在範本中,移除 JSON 的命名空間部分,只建立叢集。

  • 識別所有資源相依性。 根據您所部署事件中樞的方式,下列服務可能需要在目標區域中部署:

  • 識別所有相依資源。 事件中樞是一種訊息系統,可讓應用程式發佈和訂閱訊息。 請考慮目標應用程式是否需要針對來源目標上同一組相依服務的傳訊支援。

停機

若要了解可能的停機情況,請參閱適用於 Azure 的雲端採用架構:選取重新配置方法

服務端點的考量

Azure 事件中樞的虛擬網路服務端點會限制對指定虛擬網路的存取。 端點也可以限制對 IPv4 (網際網路通訊協定第 4 版) 位址範圍的存取。 任何從這些來源之外連線到事件中樞的使用者都會被拒絕存取。 如果服務端點是在事件中樞資源的來源區域中設定的,則必須在目標區域中完成相同的動作。

若要成功將 Azure 事件中樞重新配置至目標區域,必須先事先建立 VNet 和子網路。 如果是使用 Azure Resource Mover 工具進行這兩個資源的移動,則不會自動設定服務端點。 因此,您必須手動設定,這可以透過 Azure 入口網站Azure CLIAzure PowerShell 來完成。

私人端點的考量

Azure Private Link 提供從虛擬網路到 Azure 平台即服務 (PaaS)、客戶所擁有的服務,或是 Microsoft 合作夥伴服務的私人連線。 私人連結可簡化網路架構,並透過消除公用網際網路上的資料暴露來保護 Azure 中端點之間的連線。

若要成功將事件中樞重新配置到目標區域,必須在實際重新建立前,先建立 VNet 和子網路。

準備

若要開始,請匯出 Resource Manager 範本。 此範本包含描述事件中樞命名空間的設定。

  1. 登入 Azure 入口網站

  2. 選取 [所有資源],然後選取您的事件中樞命名空間。

  3. 在 [事件中樞命名空間] 頁面上,選取左側功能表中 [自動化] 底下的 [匯出範本]

  4. [匯出範本] 頁面中選擇 [下載]

    顯示下載 Resource Manager 範本位置的螢幕擷取畫面

  5. 找出您從入口網站下載的 .zip 檔案,並將該檔案解壓縮至您選擇的資料夾。

    此 zip 檔案包含 .json 檔案,內含範本和用來部署範本的指令碼。

修改範本

變更事件中樞命名空間名稱和區域,以修改範本。

  1. 選取 [範本部署]

  2. 在 Azure 入口網站中,選取 [建立]

  3. 選取 [在編輯器中組建您自己的範本]

  4. 選取 [載入檔案],然後遵循指示載入您在上一節下載的範本 template.json 檔案。

  5. template.json 檔案中,設定命名空間名稱的預設值來命名事件中樞命名空間。 本範例會將事件中樞命名空間名稱的預設值設定為 namespace-name

     "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
     "contentVersion": "1.0.0.0",
     "parameters": {
         "namespaces_name": {
             "defaultValue": "namespace-name",
             "type": "String"
         },
     },
    
  6. template.json 檔案中的 location 屬性編輯為目標區域。 此範例會將目標區域設定為 centralus

    "resources": [
        {
            "type": "Microsoft.KeyVault/vaults",
            "apiVersion": "2023-07-01",
            "name": "[parameters('vaults_name')]",
            "location": "centralus",
    
        },
    
    ]
    
    
     "resources": [
     {
         "type": "Microsoft.EventHub/namespaces",
         "apiVersion": "2023-01-01-preview",
         "name": "[parameters('namespaces_name')]",
         "location": "centralus",
    
      },
     {
         "type": "Microsoft.EventHub/namespaces/authorizationrules",
         "apiVersion": "2023-01-01-preview",
         "name": "[concat(parameters('namespaces_name'), '/RootManageSharedAccessKey')]",
         "location": "centralus",
         "dependsOn": [
             "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaces_name'))]"
         ],
         "properties": {
             "rights": [
                 "Listen",
                 "Manage",
                 "Send"
             ]
         }
     },
     {
         "type": "Microsoft.EventHub/namespaces/networkrulesets",
         "apiVersion": "2023-01-01-preview",
         "name": "[concat(parameters('namespaces_name'), '/default')]",
         "location": "centralus",
         "dependsOn": [
             "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaces_name'))]"
         ],
         "properties": {
             "publicNetworkAccess": "Enabled",
             "defaultAction": "Deny",
             "virtualNetworkRules": [
                 {
                     "subnet": {
                         "id": "[concat(parameters('virtualNetworks_vnet_akv_externalid'), '/subnets/default')]"
                     },
                     "ignoreMissingVnetServiceEndpoint": false
                 }
             ],
             "ipRules": [],
             "trustedServiceAccessEnabled": false
         }
     },
     {
         "type": "Microsoft.EventHub/namespaces/privateEndpointConnections",
         "apiVersion": "2023-01-01-preview",
         "name": "[concat(parameters('namespaces_peterheesbus_name'), '/81263915-15d5-4f14-8d65-25866d745a66')]",
         "location": "centralus",
         "dependsOn": [
             "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaces_peterheesbus_name'))]"
         ],
         "properties": {
             "provisioningState": "Succeeded",
             "privateEndpoint": {
                 "id": "[parameters('privateEndpoints_pvs_eventhub_externalid')]"
             },
             "privateLinkServiceConnectionState": {
                 "status": "Approved",
                 "description": "Auto-Approved"
             }
         }
     }
    

    若要取得區域位置代碼,請參閱 Azure 位置。 區域名稱除去空格即為區域代碼,Central US = centralus

  7. 移除範本中私人端點類型的資源。

     {
         "type": "Microsoft.EventHub/namespaces/privateEndpointConnections",
    
     }
    
  8. 如果您在事件中樞中設定服務端點,請在 networkrulesets 區段的 virtualNetworkRules 下,新增目標子網路的規則。 請確定 ignoreMissingVnetServiceEndpoint_ 旗標已設定為 False,因此當目標區域中未設定服務端點時,IaC 無法部署事件中樞。

    _parameter.json_

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
    
        "target_vnet_externalid": {
          "value": "virtualnetwork-externalid"
        },
        "target_subnet_name": {
          "value": "subnet-name"
        }
      }
    }
    

    _template.json

    {
        "type": "Microsoft.EventHub/namespaces/networkrulesets",
        "apiVersion": "2023-01-01-preview",
        "name": "[concat(parameters('namespaces_name'), '/default')]",
        "location": "centralus",
        "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaces_name'))]"
        ],
        "properties": {
            "publicNetworkAccess": "Enabled",
            "defaultAction": "Deny",
            "virtualNetworkRules": [
                {
                    "subnet": {
                        "id": "[concat(parameters('target_vnet_externalid), concat('/subnets/', parameters('target_subnet_name')]"
                    },
                    "ignoreMissingVnetServiceEndpoint": false
                }
            ],
            "ipRules": [],
            "trustedServiceAccessEnabled": false
        }
    },
    
    
  9. 選取 [儲存] 以儲存範本。

重新部署

  1. 在 Azure 入口網站中,選取 [建立資源]

  2. 在 [搜尋 Marketplace] 中,輸入範本部署,然後選取 [範本部署 (使用自訂範本部署)]

  3. 選取 [在編輯器中組建您自己的範本]

  4. 選取 [載入檔案],然後遵循指示載入您在上一節修改的範本 template.json 檔案。

  5. 在 [自訂部署] 頁面上,依照下列步驟執行:

    1. 選取 Azure 訂用帳戶
    2. 選取現有的資源群組,或建立一個群組。 如果來源命名空間是在事件中樞叢集中,請選取目標區域中包含叢集的資源群組。
    3. 選取目標位置或區域。 若已選取現有的資源群組,這項設定則為唯讀狀態。
    4. 在 [設定] 區段中,執行下列步驟:
      1. 輸入新的命名空間名稱

        部署 Resource Manager 範本

      2. 如果來源命名空間是在事件中樞叢集中,請在 [外部識別碼] 中輸入資源群組事件中樞叢集的名稱。

        /subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<CLUSTER'S RESOURCE GROUP>/providers/Microsoft.EventHub/clusters/<CLUSTER NAME>
        
      3. 如果命名空間中的事件中樞使用儲存體帳戶來擷取事件,請在 StorageAccounts_<original storage account name>_external 欄位中指定資源群組名稱和儲存體帳戶。

        /subscriptions/0000000000-0000-0000-0000-0000000000000/resourceGroups/<STORAGE'S RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>
        
    5. 選取頁面底部的 [檢閱 + 建立] 。
    6. 在 [檢閱 + 建立] 頁面上檢閱設定,然後選取 [建立]
  6. 必須在新的事件中樞中重新設定網路組態設定 (私人端點)。

捨棄或清除

部署之後,如果您想要從頭開始,可以刪除目標事件中樞命名空間,並重複本文中「準備」和「移動」章節所述的步驟。

若要認可變更並完成事件中樞命名空間的移動,請刪除原始區域中的事件中樞命名空間。 在刪除命名空間之前,請確定您已處理命名空間中的所有事件。

若要使用 Azure 入口網站來刪除事件中樞命名空間 (來源或目標):

  1. 在 Azure 入口網站頂端的搜尋視窗中,輸入事件中樞,然後從搜尋結果中選取 [事件中樞]。 您會在清單中看到事件中樞命名空間。

  2. 選取要刪除的目標命名空間,並選取工具列中的 [刪除]

    顯示刪除命名空間 - 按鈕的螢幕擷取畫面

  3. 在 [刪除命名空間] 頁面上,輸入命名空間名稱來確認刪除,然後選取 [刪除]

下一步

在本操作說明中,您已了解如何將事件中樞命名空間從一個區域移至另一個區域。

如需將事件中樞叢集從某個區域移至另一個區域的指示,請參閱將事件中樞重新放置到另一個區域一文。

若要深入了解如何在 Azure 中的區域之間移動資源和災害復原,請參閱: