你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure PowerShell 将虚拟网络连接到 ExpressRoute 线路
本文将帮助你使用 Resource Manager 部署模型和 PowerShell 将虚拟网络 (VNet) 链接到 Azure ExpressRoute 线路。 虚拟网络可以在同一个订阅中,也可以属于另一个订阅。 本教程还介绍如何更新虚拟网络链接。
先决条件
必须有一个活动的 ExpressRoute 线路。
- 请按说明创建 ExpressRoute 线路,并通过连接提供商启用该线路。
- 请确保为线路配置 Azure 专用对等互连。 有关路由说明,请参阅配置路由一文。
- 确保已配置 Azure 专用对等互连,并建立网络和 Microsoft 之间的 BGP 对等互连,以便进行端到端连接。
- 确保已创建并完全预配一个虚拟网络和一个虚拟网络网关。 按照说明创建 ExpressRoute 的虚拟网络网关。 ExpressRoute 的虚拟网关使用 GatewayType
ExpressRoute
,而不是 VPN。
最多可以将 10 个虚拟网络链接到一条标准 ExpressRoute 线路。 使用标准 ExpressRoute 线路时,所有虚拟网络必须都位于同一地缘政治区域。
单个虚拟网络最多可连接到 16 条 ExpressRoute 线路。 使用本文中的步骤为要连接的每条 ExpressRoute 线路创建新的连接对象。 ExpressRoute 线路可在同一订阅、不同订阅或两者兼有。
如果启用 ExpressRoute 高级版加载项,则可以链接 ExpressRoute 线路的地缘政治区域外部的虚拟网络。 通过高级版加载项,可以根据所选带宽,将 10 个以上的虚拟网络连接到 ExpressRoute 线路。 有关高级外接程序的更多详细信息,请参阅常见问题解答。
如果要创建从 ExpressRoute 线路到目标 ExpressRoute 虚拟网络网关的连接,则从本地或对等互连虚拟网络播发的地址空间数必须等于或小于 200。 成功创建连接后,可以将更多地址空间(最多 1,000 个)添加到本地或对等互连虚拟网络。
请查看通过 ExpressRoute 在虚拟网络之间建立连接的指南。
使用 Azure PowerShell
本文中的步骤和示例使用 Azure PowerShell Az 模块。 若要在计算机上本地安装 Az 模块,请参阅安装 Azure PowerShell。 若要详细了解新 Az 模块,请参阅新 Azure Powershell Az 模块简介。 PowerShell cmdlet 经常更新。 如果未运行最新版本,在说明中指定的值可能无法使用。 若要在系统上查找已安装的 PowerShell 版本,请使用 Get-Module -ListAvailable Az
cmdlet。
可以使用 Azure Cloud Shell 来运行大多数 PowerShell cmdlet 和 CLI 命令,而无需在本地安装 Azure PowerShell 或 CLI。 Azure Cloud Shell 是免费的交互式 Shell,预安装有常用 Azure 工具,并将其配置为与帐户一起使用。 若要在 Azure Cloud Shell 上运行本文中包含的任何代码,请打开 Cloud Shell 会话,对代码块使用“复制”按钮以复制代码,然后使用 Ctrl+Shift+V(在 Windows 和 Linux 上)或 Cmd+Shift+V(在 macOS 上)将其粘贴到 Cloud Shell 会话中。 粘贴的文本不会自动执行,请按“Enter”运行代码。
可通过多种方式来启动 Cloud Shell:
选项 | 链接 |
---|---|
单击代码块右上角的“试用”。 | |
在浏览器中打开 Cloud Shell。 | |
单击 Azure 门户右上角菜单上的“Cloud Shell”按钮。 | |
连接虚拟网络
最大复原能力(推荐):为虚拟网络提供最高级别的复原能力。 它可提供两个从虚拟网络网关到不同 ExpressRoute 位置中两条不同 ExpressRoute 线路的冗余连接。
克隆脚本
要创建最大复原连接数,请从 GitHub 克隆安装脚本。
# Clone the setup script from GitHub.
git clone https://github.com/Azure-Samples/azure-docs-powershell-samples/
# Change to the directory where the script is located.
CD azure-docs-powershell-samples/expressroute/
运行 New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 脚本来创建高可用性连接。 以下示例演示了如何创建与两条 ExpressRoute 线路的两个新连接。
$SubscriptionId = Get-AzureSubscription -SubscriptionName "<SubscriptionName>"
$circuit1 = Get-AzExpressRouteCircuit -Name "MyCircuit1" -ResourceGroupName "MyRG"
$circuit2 = Get-AzExpressRouteCircuit -Name "MyCircuit2" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
highAvailabilitySetup/New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 -SubscriptionId $SubscriptionId -ResourceGroupName "MyRG" -Location "West EU" -Name1 "ERConnection1" -Name2 "ERConnection2" -Peer1 $circuit1.Peerings[0] -Peer2 $circuit2.Peerings[0] -RoutingWeight1 10 -RoutingWeight2 10 -VirtualNetworkGateway1 $gw
如果要创建新的连接并使用现有连接,可以使用以下示例。 此示例将创建与第二条 ExpressRoute 线路的新连接,并使用与第一条 ExpressRoute 线路的现有连接。
$SubscriptionId = Get-AzureSubscription -SubscriptionName "<SubscriptionName>"
$circuit1 = Get-AzExpressRouteCircuit -Name "MyCircuit1" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = Get-AzVirtualNetworkGatewayConnection -Name "ERConnection1" -ResourceGroupName "MyRG"
highAvailabilitySetup/New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 -SubscriptionId $SubscriptionId -ResourceGroupName "MyRG" -Location "West EU" -Name2 "ERConnection2" -Peer2 $circuit1.Peerings[0] -RoutingWeight2 10 -VirtualNetworkGateway1 $gw -ExistingVirtualNetworkGatewayConnection $connection
将另一订阅中的虚拟网络连接到线路
用户可以在多个订阅之间共享 ExpressRoute 线路。 下图是在多个订阅之间共享 ExpressRoute 线路的简单示意图。
注意
不支持在 Azure 主权云和公共 Azure 云之间连接虚拟网络。 只能链接来自同一云中不同订阅的虚拟网络。
大型云中的每个较小云用于表示属于组织中不同部门的订阅。 组织内的每个部门使用自己的订阅部署其服务,但可以共享单个 ExpressRoute 线路以连接回本地网络。 单个部门(在此示例中为 IT 部门)可以拥有 ExpressRoute 线路。 组织内的其他订阅可以使用 ExpressRoute 线路。
注意
订阅所有者需要缴纳 ExpressRoute 线路的连接和带宽费用。 所有虚拟网络共享相同的带宽。
管理 - 线路所有者和线路用户
“线路所有者”是 ExpressRoute 线路资源的已授权超级用户。 线路所有者可以创建可由线路用户兑换的授权。 线路用户是虚拟网络网关的所有者(这些网关与 ExpressRoute 线路位于不同的订阅中)。 线路用户可以兑换授权(每个虚拟网络需要一个授权)。
线路所有者有权随时修改和撤消授权。 撤消授权会导致从已撤消访问权限的订阅中删除所有链路连接。
注意
线路所有者不是内置的 RBAC 角色,也不是在 ExpressRoute 资源上定义的。 线路所有者的定义是具有以下访问权限的任何角色:
- Microsoft.Network/expressRouteCircuits/authorizations/write
- Microsoft.Network/expressRouteCircuits/authorizations/read
- Microsoft.Network/expressRouteCircuits/authorizations/delete
这包括内置角色,例如参与者、所有者和网络参与者。 不同内置角色的详细说明。
线路所有者操作
若要创建授权
线路所有者创建授权,这将创建授权密钥,供线路用户用于将其虚拟网络网关连接到 ExpressRoute 线路。 一个授权只可用于一个连接。
以下 cmdlet 代码段演示如何创建授权:
$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
Add-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization1"
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$auth1 = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization1"
对上述命令的响应包含授权密钥和状态:
Name : MyAuthorization1
Id : /subscriptions/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/resourceGroups/ERCrossSubTestRG/providers/Microsoft.Network/expressRouteCircuits/CrossSubTest/authorizations/MyAuthorization1
Etag : &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
AuthorizationKey : ####################################
AuthorizationUseStatus : Available
ProvisioningState : Succeeded
若要查看授权
线路所有者可以通过运行以下 cmdlet 来查看针对特定线路发出的所有授权:
$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$authorizations = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit
若要添加授权
线路所有者可以使用以下 cmdlet 添加授权:
$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
Add-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization2"
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$authorizations = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit
若要删除授权
线路所有者可以通过运行以下 cmdlet 来撤消/删除对用户的授权:
Remove-AzExpressRouteCircuitAuthorization -Name "MyAuthorization2" -ExpressRouteCircuit $circuit
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
线路用户操作
线路用户需有对等 ID 以及线路所有者提供的授权密钥。 授权密钥是一个 GUID。
可以使用以下命令检查对等 ID:
Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
若要兑换连接授权
线路用户可以通过运行以下 cmdlet 来兑现链接授权:
$id = "/subscriptions/********************************/resourceGroups/ERCrossSubTestRG/providers/Microsoft.Network/expressRouteCircuits/MyCircuit"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName "RemoteResourceGroup" -Location "East US" -VirtualNetworkGateway1 $gw -PeerId $id -ConnectionType ExpressRoute -AuthorizationKey "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
若要释放连接授权
可以通过删除 ExpressRoute 线路与虚拟网络之间的连接释放授权。
修改虚拟网络连接
可以更新虚拟网络连接的某些属性。
若要更新连接权重
虚拟网络可以连接到多条 ExpressRoute 线路。 可以从多条 ExpressRoute 线路收到相同的前缀。 若要选择使用哪个连接发送目标为此前缀的流量,可以更改连接的 RoutingWeight。 在具有最高 RoutingWeight 的连接上发送流量。
$connection = Get-AzVirtualNetworkGatewayConnection -Name "MyVirtualNetworkConnection" -ResourceGroupName "MyRG"
$connection.RoutingWeight = 100
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection
RoutingWeight 的范围是 0 到 32000。 默认值为 0。
配置 ExpressRoute FastPath
如果虚拟网络网关是超高性能网关或 ErGw3AZ,则可以启用 ExpressRoute FastPath。 FastPath 可提高数据路径性能,例如本地网络和虚拟网络之间的每秒数据包数和每秒连接数。
对新的连接配置 FastPath
$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "MyGateway" -ResourceGroupName "MyRG"
$connection = New-AzVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName "MyRG" -ExpressRouteGatewayBypass -VirtualNetworkGateway1 $gw -PeerId $circuit.Id -ConnectionType ExpressRoute -Location "MyLocation"
更新现有连接以启用 FastPath
$connection = Get-AzVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName "MyRG"
$connection.ExpressRouteGatewayBypass = $True
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection
对 ExpressRoute 直接连接的 FastPath 虚拟网络对等互连、用户定义的路由 (UDR) 和专用链接支持
借助虚拟网络对等互连和 UDR 支持,FastPath 会将流量直接发送到部署在“辐射”虚拟网络中的 VM(通过虚拟网络对等互连来连接),并遵循 GatewaySubnet 上配置的任何 UDR。 此功能现已正式发布 (GA)。
使用 FastPath 和专用链接,通过 ExpressRoute 发送的专用链接流量会绕过数据路径中的 ExpressRoute 虚拟网络网关。 启用这两项功能后,FastPath 将直接将流量发送到部署在“辐射”虚拟网络中的专用终结点。
这些方案通常用于具有与 10 Gbps 和 100 Gbps ExpressRoute Direct 线路关联的连接的有限方案。 若要启用,请遵循以下指导:
- 完成此 Microsoft 表单以请求注册订阅。 请求可能最多需要 4 周来完成,因此请相应地规划部署。
- 收到步骤 1 的确认后,请在目标 Azure 订阅中运行以下 Azure PowerShell 命令。
$connection = Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <resource-group> -ResourceName <connection-name>
$connection.ExpressRouteGatewayBypass = $true
$connection.EnablePrivateLinkFastPath = $true
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection
注意
可以使用连接监视器来验证流量是否使用 FastPath 到达目标位置。
注意
为有限的 GA 方案启用 FastPath 专用链接支持可能需要 4 周以上的时间才能完成。 请提前规划部署。
虚拟网络对等互连的 FastPath 支持仅适用于 ExpressRoute Direct 连接。
注意
如果已经配置了 FastPath 并且想要注册有限的 GA 功能,则需要执行以下操作:
- 使用 Azure PowerShell 命令注册某个 FastPath 功能。
- 在目标连接上禁用 FastPath,然后重新启用它。
- 若要在有限的 GA 功能之间切换,请通过目标预览 PowerShell 命令注册订阅,然后在连接上禁用 FastPath 并重新启用。
清理资源
如果不再需要 ExpressRoute 连接,请使用 Remove-AzVirtualNetworkGatewayConnection
命令,从该网关所在的订阅删除网关和线路之间的链接。
Remove-AzVirtualNetworkGatewayConnection "MyConnection" -ResourceGroupName "MyRG"
后续步骤
在本教程中,你已了解如何将虚拟网络连接到同一订阅和不同订阅中的线路。 有关 ExpressRoute 网关的详细信息,请参阅:ExpressRoute 虚拟网络网关。
若要了解如何使用 PowerShell 为 Microsoft 对等互连配置路由筛选器,请转到下一个教程。