在 Azure 中创建中心辐射型拓扑 - PowerShell

在本文中,你将了解如何使用 Azure Virtual Network Manager 创建一个“中心和分支”网络拓扑。 使用此配置时,可以选择将一个虚拟网络作为中心,并且默认情况下所有分支虚拟网络都仅与该中心建立双向对等互连。 还可以在分支虚拟网络之间启用直接连接,并使分支虚拟网络能够使用中心中的虚拟网络网关。

先决条件

  • 了解中心辐射型网络拓扑。
  • 已创建 Azure Virtual Network Manager 实例
  • 在中心辐射型配置中确定要使用的虚拟网络,或创建新的虚拟网络
  • 访问 Azure Virtual Network Manager 的所需 cmdlet 需要 5.3.0Az.Network 版本。
  • 如果在本地运行 PowerShell,则需要运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

创建虚拟网络组并添加成员

这部分将介绍如何创建网络组,该网络组中包含将用于“中心和分支”网络拓扑的虚拟网络。

  1. 使用 New-AzNetworkManagerGroup 创建虚拟网络的网络组。

    $ng = @{
            Name = 'myNetworkGroup'
            ResourceGroupName = 'myAVNMResourceGroup'
            NetworkManagerName = 'myAVNM'
        }
        $networkgroup = New-AzNetworkManagerGroup @ng
    
  2. 使用 New-AzNetworkManagerStaticMember 将静态成员添加到静态成员身份组:

        $vnet = get-AZVirtualNetwork -ResourceGroupName 'myAVNMResourceGroup' -Name 'VNetA'
        $sm = @{
        NetworkGroupName = $networkgroup.name
        ResourceGroupName = 'myAVNMResourceGroup'
        NetworkManagerName = 'myAVNM'
        Name = 'staticMember'
        ResourceId = $vnet.id
        }
        $staticmember = New-AzNetworkManagerStaticMember @sm
    

创建中心辐射型连接配置

本部分将逐步讲解如何使用在上一部分中创建的网络组来创建“中心和分支”配置。

  1. 使用 New-AzNetworkManagerConnectivityGroupItem 创建分支连接组项,以添加网络组。 可以使用标志 -GroupConnectivity 启用直接连接、使用标志 -IsGlobal 启用全局网格,或启用标志 -UseHubGateway 以在中心虚拟网络中使用网关:

    $spokes = @{
        NetworkGroupId = $networkgroup.Id
    }
    $spokesGroup = New-AzNetworkManagerConnectivityGroupItem @spokes -UseHubGateway -GroupConnectivity 'DirectlyConnected' -IsGlobal
    
  2. 创建分支连接组,并添加来自上一步的组项。

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerConnectivityGroupItem]]$configGroup = @()
    $configGroup.Add($spokesGroup) 
    
  3. 使用 New-AzNetworkManagerHub 创建中心连接组项并定义要用作中心的虚拟网络。

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.NetworkManager.PSNetworkManagerHub]]$hubList = @()
    
    $hub = @{
        ResourceId = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myAVNMResourceGroup/providers/Microsoft.Network/virtualNetworks/VNetA'
        ResourceType = 'Microsoft.Network/virtualNetworks'
    } 
    $hubvnet = New-AzNetworkManagerHub @hub
    
    $hubList.Add($hubvnet)
    
  4. 使用 New-AzNetworkManagerConnectivityConfiguration 创建连接配置。

    $config = @{
        Name = 'connectivityconfig'
        ResourceGroupName = 'myAVNMResourceGroup'
        NetworkManagerName = 'myAVNM'
        ConnectivityTopology = 'HubAndSpoke'
        Hub = $hubList
        AppliesToGroup = $configGroup
    }
    $connectivityconfig = New-AzNetworkManagerConnectivityConfiguration @config -DeleteExistingPeering -IsGlobal
    

注释

如果当前使用的是在 Azure 虚拟网络管理器外部创建的虚拟网络对等互连,并且想要使用 Azure 虚拟网络管理器管理拓扑和连接,则可以选择一些部署选项来消除或最大程度地减少网络停机时间:

  1. 在现有对等互连的基础上部署 Azure 虚拟网络管理器连接配置。 连接配置与预先存在的手动对等连接完全兼容。 部署连接配置时,默认情况下,Azure 虚拟网络管理器会重新利用已经存在的对等互连,该互连能够满足配置中描述的连接需求,并在需要时建立额外的连接。 这意味着,无需删除中心和星型虚拟网络之间的任何现有对等互连。
  2. 使用 Azure 虚拟网络管理器完全管理连接。 如果要从单个控制平面完全管理连接,可以选择 “删除现有对等互连 ”,以在部署时从此配置中面向的网络组虚拟网络中删除以前创建的所有对等互连。

部署“中心和分支”配置

使用 Deploy-AzNetworkManagerCommit 将配置提交到目标区域。

[System.Collections.Generic.List[string]]$configIds = @()  
$configIds.add($connectivityconfig.id) 
[System.Collections.Generic.List[string]]$regions = @()   
$regions.Add("chinanorth3")     

$deployment = @{
    Name = 'myAVNM'
    ResourceGroupName = 'myAVNMResourceGroup'
    ConfigurationId = $configIds
    TargetLocation = $regions
    CommitType = 'Connectivity'
}
Deploy-AzNetworkManagerCommit @deployment

确认配置部署

  1. 在 Azure 门户中,转到其中一个虚拟网络,并在“设置”下选择“对等互连”。 应会看到在中心和分支虚拟网络之间创建了一个新的对等互连连接,其名称为 AVNM

  2. 若要测试分支之间的直接连接,请将虚拟机部署到每个分支虚拟网络中。 然后,开始从一个虚拟机向另一个虚拟机发送 ICMP 请求。

后续步骤