快速入门:使用 Azure PowerShell 创建并配置路由服务器

本文可帮助你使用 Azure PowerShell 将 Azure 路由服务器配置为与虚拟网络中的网络虚拟设备 (NVA) 对等互连。 路由服务器从 NVA 获知路由,并将这些路由配置到虚拟网络中的虚拟机上。 Azure 路由服务器还会将虚拟网络路由播发到 NVA。 有关详细信息,请参阅 Azure 路由服务器

Diagram of Route Server deployment environment using the Azure PowerShell.

重要

在 2021 年 11 月 1 日以前创建的无关联公共 IP 地址的 Azure 路由服务器使用公共预览版产品/服务进行部署。 公共预览版产品/服务不受正式发布版 SLA 支持,也不提供支持服务。 要使用正式发布版产品/服务部署 Azure 路由服务器,并获得正式发布版 SLA 和支持,请删除路由服务器并重新创建。

先决条件

  • 具有活动订阅的 Azure 帐户。 创建帐户
  • 确保你有最新的 PowerShell 模块。
  • 查看 Azure 路由服务器的服务限制
  • 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

创建资源组和虚拟网络

创建资源组

必须先创建资源组来托管路由服务器,然后才能创建 Azure 路由服务器。 使用 New-AzResourceGroup 创建资源组。 此示例在“ChinaNorth3”位置创建了名为 myRouteServerRG 的资源组:

$rg = @{
    Name = 'myRouteServerRG'
    Location = 'ChinaNorth3'
}
New-AzResourceGroup @rg

创建虚拟网络

使用 New-AzVirtualNetwork 创建虚拟网络。 此示例在“ChinaNorth3”位置创建名为 myVirtualNetwork 的默认虚拟网络:如果已有虚拟网络,可以跳到下一部分。

$vnet = @{
    Name = 'myVirtualNetwork'
    ResourceGroupName = 'myRouteServerRG'
    Location = 'ChinaNorth3'
    AddressPrefix = '10.0.0.0/16'    
}
$virtualNetwork = New-AzVirtualNetwork @vnet

添加专用子网

Azure 路由服务器需要名为 RouteServerSubnet 的专用子网。 子网大小必须至少为 /27 或为更短前缀(例如 /26 或 /25),否则在部署路由服务器时会收到错误消息。 使用 Add-AzVirtualNetworkSubnetConfig 创建名为 RouteServerSubnet 的子网配置:

$subnet = @{
    Name = 'RouteServerSubnet'
    VirtualNetwork = $virtualNetwork
    AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet

$virtualnetwork | Set-AzVirtualNetwork

$vnetInfo = Get-AzVirtualNetwork -Name myVirtualNetwork -ResourceGroupName myRouteServerRG
$subnetId = (Get-AzVirtualNetworkSubnetConfig -Name RouteServerSubnet -VirtualNetwork $vnetInfo).Id

创建路由服务器

  1. 若要确保与管理路由服务器配置的后端服务的连接,需要分配一个公共 IP 地址。 使用 New-AzPublicIpAddress 创建名为 RouteServerIP 标准公共 IP 地址:

    $ip = @{
        Name = 'myRouteServerIP'
        ResourceGroupName = 'myRouteServerRG'
        Location = 'ChinaNorth3'
        AllocationMethod = 'Static'
        IpAddressVersion = 'Ipv4'
        Sku = 'Standard'
    }
    $publicIp = New-AzPublicIpAddress @ip
    
  2. 使用 New-AzRouteServer 创建 Azure 路由服务器。 以下示例在“ChinaNorth3”位置创建了名为 myRouteServer 的 Azure 路由服务器。 HostedSubnet 是在前一部分中创建的 RouteServerSubnet 的资源 ID。

    $rs = @{
        RouteServerName = 'myRouteServer'
        ResourceGroupName = 'myRouteServerRG'
        Location = 'ChinaNorth3'
        HostedSubnet = $subnetId
        PublicIP = $publicIp
    }
    New-AzRouteServer @rs 
    

创建与 NVA 对等互连的 BGP

若要建立从路由服务器到 NVA 的 BGP 对等互连,请使用 Add-AzRouteServerPeer

your_nva_ip 是分配到 NVA 的虚拟网络 IP。 your_nva_asn 是在 NVA 中配置的自治系统编号 (ASN)。 该 ASN 可以是 65515-65520 范围之外的任意 16 位数字。 此 ASN 范围是 Microsoft 保留的。

$peer = @{
    PeerName = 'myNVA'
    PeerIp = 'your_nva_ip'
    PeerAsn = 'your_nva_asn'
    RouteServerName = 'myRouteServer'
    ResourceGroupName = myRouteServerRG'
}
Add-AzRouteServerPeer @peer

若要设置与不同的 NVA 或同一 NVA 的另一个实例的对等互连以实现冗余,请使用与上述相同的命令,但需要使用不同的 PeerName、PeerIp 和 PeerAsn 。

在 NVA 上完成配置

若要在 NVA 上完成配置并启用 BGP 会话,需要 Azure 路由服务器的 IP 和 ASN。 可通过使用 Get-AzRouteServer 来获取该信息:

$routeserver = @{
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
} 
Get-AzRouteServer @routeserver

输出如下所示:

RouteServerAsn : 65515
RouteServerIps : {10.5.10.4, 10.5.10.5}

重要

建议将每个 NVA 与两个路由服务器实例对等互连,以确保通过 NVA 连接播发虚拟网络路由并实现高可用性。

配置路由交换

如果在相同虚拟网络中拥有一个虚拟网络网关(ExpressRoute 或 VPN,则可以启用 BranchToBranchTraffic 来交换网关和流由服务器之间的路因。

重要

必须在“主动-主动”模式下配置 Azure VPN 网关,并将 ASN 设置为 65515。

警告

如果在包含虚拟网络网关(ExpressRoute 或 VPN)的虚拟网络中创建或删除路由服务器,预计在操作完成之前会出现停机。 如果 ExpressRoute 线路连接到你要在其中创建或删除路由服务器的虚拟网络,则停机时间不会影响 ExpressRoute 线路或它与其他虚拟网络的连接。

  1. 若要在 Azure 路由服务器和网关之间启用路由交换,请使用带有 -AllowBranchToBranchTraffic 标志的 Update-AzRouteServer
$routeserver = @{
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
    AllowBranchToBranchTraffic
}  
Update-AzRouteServer @routeserver 
  1. 若要在 Azure 路由服务器和网关之间禁用路由交换,请使用不带 -AllowBranchToBranchTraffic 标志的 Update-AzRouteServer
$routeserver = @{
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
}  
Update-AzRouteServer @routeserver 

疑难解答

使用 Get-AzRouteServerPeerAdvertisedRoute 查看 Azure 路由服务器播发的路由。

$remotepeer = @{
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
    PeerName = 'myNVA'
}
Get-AzRouteServerPeerAdvertisedRoute @remotepeer

使用 Get-AzRouteServerPeerLearnedRoute 查看 Azure 路由服务器获知的路由。

$remotepeer = @{
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
    PeerName = 'myNVA'
}  
Get-AzRouteServerPeerLearnedRoute @remotepeer

清理资源

如果不再需要 Azure 路由服务器,请使用第一个命令删除 BGP 对等互连,然后使用第二个命令删除路由服务器。

  1. 使用 Remove-AzRouteServerPeer 命令删除 Azure 路由服务器与 NVA 之间的 BGP 对等互连:
$remotepeer = @{
    PeerName = 'myNVA'
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
} 
Remove-AzRouteServerPeer @remotepeer
  1. 使用 Remove-AzRouteServer 删除 Azure 路由服务器:
$routeserver = @{
    RouteServerName = 'myRouteServer'
    ResourceGroupName = 'myRouteServerRG'
} 
Remove-AzRouteServer @routeserver

后续步骤

在创建 Azure 路由服务器后,请继续了解有关 Azure 路由服务器如何与 ExpressRoute 和 VPN 网关进行交互的详细信息: