共用方式為


快速入門:使用 ARM 範本建立 Azure 路由伺服器

本快速入門示範如何使用 Azure Resource Manager 範本 (ARM 範本) 將 Azure 路由伺服器部署至新的或現有的虛擬網路。 Azure 路由伺服器會透過 BGP 對等互連,在虛擬網路與網路虛擬設備之間啟用動態路由,自動管理網路基礎結構中的路由交換。

完成本快速入門後,您將擁有使用必要網路基礎結構部署的正常運作路由伺服器,並準備好進行 BGP 對等互連設定。

Azure Resource Manager 範本是一個 JavaScript 物件標記法 (JSON) 檔案,會定義專案的基礎結構和設定。 範本會使用宣告式語法。 您可以描述預期的部署,而不需要撰寫程式設計命令順序來建立部署。

如果您的環境符合必要條件,而且您很熟悉 ARM 範本的使用方式,請選取 [部署至 Azure] 按鈕,在 Azure 入口網站中開啟該範本。

按鈕,將 Azure Resource Manager 範本部署至 Azure 入口網站。

先決條件

開始之前,請確定您符合下列需求:

檢閱範本

本快速入門中使用的範本是來自 Azure 快速入門範本。 此 ARM 範本會部署完整的路由伺服器環境,包括虛擬網路基礎結構和 BGP 對等互連組態。

範本會建立下列資源:

  • 全新或現有虛擬網路中的 Azure 路由伺服器
  • 名為 RouteServerSubnet 的專用子網路,用於裝載路由伺服器
  • 具有指定對等 ASN 和對等 IP 的 BGP 對等互連組態
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "3572840517141664306"
    }
  },
  "parameters": {
    "vnetName": {
      "type": "string",
      "defaultValue": "routeservervnet",
      "metadata": {
        "description": "Name of new or existing vnet to which Azure Route Server should be deployed."
      }
    },
    "vnetIpPrefix": {
      "type": "string",
      "defaultValue": "10.1.0.0/16",
      "metadata": {
        "description": "IP prefix for available addresses in vnet address space."
      }
    },
    "vnetNew_or_Existing": {
      "type": "string",
      "defaultValue": "New",
      "allowedValues": [
        "New",
        "Existing"
      ],
      "metadata": {
        "description": "Specify whether to provision new vnet or deploy to existing vnet."
      }
    },
    "routeServerSubnetIpPrefix": {
      "type": "string",
      "defaultValue": "10.1.1.0/26",
      "metadata": {
        "description": "Route Server subnet IP prefix MUST be within vnet IP prefix address space."
      }
    },
    "publicIpNew_or_Existing": {
      "type": "string",
      "defaultValue": "New",
      "allowedValues": [
        "New",
        "Existing"
      ],
      "metadata": {
        "description": "Specify whether to provision new standard public IP or deploy using existing standard public IP."
      }
    },
    "publicIpName": {
      "type": "string",
      "defaultValue": "routeserverpip",
      "metadata": {
        "description": "Name of the standard Public IP used for the Route Server"
      }
    },
    "firstRouteServerName": {
      "type": "string",
      "defaultValue": "routeserver",
      "metadata": {
        "description": "Name of Route Server."
      }
    },
    "routeServerBgpConnectionName": {
      "type": "string",
      "defaultValue": "conn1",
      "metadata": {
        "description": "Name of BGP connection."
      }
    },
    "peerAsn": {
      "type": "int",
      "defaultValue": 65002,
      "metadata": {
        "description": "Peer ASN connecting to."
      }
    },
    "peerIp": {
      "type": "string",
      "defaultValue": "10.0.1.4",
      "metadata": {
        "description": "Peer IP connecting to."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Azure region for Route Server and virtual network."
      }
    }
  },
  "variables": {
    "ipconfigName": "ipconfig1",
    "routeServerSubnetName": "RouteServerSubnet"
  },
  "resources": [
    {
      "condition": "[equals(parameters('vnetNew_or_Existing'), 'New')]",
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-05-01",
      "name": "[parameters('vnetName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetIpPrefix')]"
          ]
        }
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2020-05-01",
      "name": "[format('{0}/{1}', parameters('vnetName'), variables('routeServerSubnetName'))]",
      "properties": {
        "addressPrefix": "[parameters('routeServerSubnetIpPrefix')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
      ]
    },
    {
      "condition": "[equals(parameters('publicIpNew_or_Existing'), 'New')]",
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2020-05-01",
      "name": "[parameters('publicIpName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "publicIPAllocationMethod": "Static",
        "publicIPAddressVersion": "IPv4",
        "idleTimeoutInMinutes": 4
      }
    },
    {
      "type": "Microsoft.Network/virtualHubs",
      "apiVersion": "2020-06-01",
      "name": "[parameters('firstRouteServerName')]",
      "location": "[parameters('location')]",
      "properties": {
        "sku": "Standard"
      }
    },
    {
      "type": "Microsoft.Network/virtualHubs/ipConfigurations",
      "apiVersion": "2020-06-01",
      "name": "[format('{0}/{1}', parameters('firstRouteServerName'), variables('ipconfigName'))]",
      "properties": {
        "subnet": {
          "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), variables('routeServerSubnetName'))]"
        },
        "publicIPAddress": {
          "id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualHubs', parameters('firstRouteServerName'))]",
        "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), variables('routeServerSubnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/virtualHubs/bgpConnections",
      "apiVersion": "2020-06-01",
      "name": "[format('{0}/{1}', parameters('firstRouteServerName'), parameters('routeServerBgpConnectionName'))]",
      "properties": {
        "peerAsn": "[parameters('peerAsn')]",
        "peerIp": "[parameters('peerIp')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualHubs', parameters('firstRouteServerName'))]",
        "[resourceId('Microsoft.Network/virtualHubs/ipConfigurations', parameters('firstRouteServerName'), variables('ipconfigName'))]"
      ]
    }
  ]
}

範本資源

範本中定義了下列 Azure 資源:

若要尋找與 Azure 網路相關的更多範本,請參閱 Azure 快速入門範本

部署範本

您可以透過 Azure Cloud Shell 或本機 PowerShell 環境,使用 Azure PowerShell 部署範本。

  1. 從下列程式碼區塊中選取 [ 開啟 Cloud Shell ] 以開啟 Azure Cloud Shell,然後依照指示登入 Azure:

    $projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
    $location = Read-Host -Prompt "Enter the location (i.e. centralus)"
    $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/route-server/azuredeploy.json"
    
    $resourceGroupName = "${projectName}rg"
    
    New-AzResourceGroup -Name $resourceGroupName -Location "$location"
    New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri
    
    Read-Host -Prompt "Press [ENTER] to continue ..."
    

    等候直到您看見主控台的提示字元。

  2. 從先前的程式碼區塊選取 [複製] 以複製 PowerShell 指令碼。

  3. 以滑鼠右鍵按一下殼層主控台窗格,然後選取 [貼上]

  4. 出現提示時輸入值:

    • 專案名稱:用於產生資源名稱 (資源群組名稱會是附加 rg 的專案名稱)
    • 位置:將部署資源的 Azure 區域

    部署大約需要 20 分鐘才能完成。 完成後,輸出應該類似於:

    螢幕擷取畫面顯示路由伺服器 Resource Manager 範本 PowerShell 部署輸出。

在此範例中,Azure PowerShell 可用來部署範本。 您也可以使用 Azure 入口網站、Azure CLI 和 REST API 進行範本部署。 若要瞭解其他部署方法,請參閱 部署範本

驗證部署

範本部署完成後,請確認已成功建立路由伺服器。

在 Azure 入口網站中驗證資源

  1. 登入 Azure 入口網站

  2. 選取左側面板中的 [資源群組]

  3. 選取您在上一節中建立的資源群組。 預設的資源群組名稱是附加 rg 的專案名稱。

  4. 資源群組應該包含虛擬網路和相關聯的資源:

    螢幕擷取畫面顯示具有虛擬網路和相關資源的路由伺服器部署資源群組。

驗證路由伺服器部署

  1. 從 Azure 入口網站 流覽至您的資源群組,然後選取路由伺服器資源。

  2. 在路由伺服器概觀頁面上,確認下列項目:

    • 狀態顯示 為「成功」
    • BGP ASN 會顯示已設定的自治系統編號
    • 路由狀態顯示 為「已佈建」

    螢幕擷取畫面顯示確認成功部署的路由伺服器概觀頁面。

清除資源

當您不再需要路由伺服器和相關聯的資源時,請刪除資源群組以移除路由伺服器和所有相關資源。

若要刪除資源群組,請使用 Remove-AzResourceGroup Cmdlet:

Remove-AzResourceGroup -Name <your resource group name>

後續步驟

現在您已使用 ARM 範本部署路由伺服器,請深入瞭解路由伺服器功能: