为 Azure 虚拟网络中的子网创建多个前缀 - 预览

在虚拟网络中大规模部署多个缩放应用存在子网地址空间耗尽的风险。 虚拟网络中的子网可以托管许多需要横向扩展功能的应用程序。使用此功能(即 AllowMultipleAddressPrefixesOnSubnet),你可以轻松地缩放子网中的虚拟机和 Azure 虚拟机规模集。 从子网中移除所有资源是修改子网地址前缀的先决条件,而此功能不需要从子网中删除所有资源。

目前,虚拟机规模集仅允许你指定一个子网。 无法扩展子网空间或跨子网边界。 虚拟机规模集现在可以在纵向扩展时利用多个地址空间。 如果第一个子网已满,额外的虚拟机将“溢出”到后续子网。

公共预览版存在以下限制:

  • 该功能仅支持虚拟机和虚拟机规模集,不支持裸机或 SWIFT 资源。 任何委托子网都无法使用此功能。

  • 此功能不支持多个客户地址 (CA) 配置。 在子网上使用多个前缀时,只能使用单个客户地址 (CA) 配置。 每个 NIC(网络接口卡)支持单个 IPv4(Internet 协议版本 4)和单个 IPv6(Internet 协议版本 6)地址。

重要

对 Azure 虚拟网络子网的多前缀支持目前为公共预览版。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

先决条件

  • Azure PowerShell(本地安装)或 Azure Cloud Shell。

  • 登录到 Azure PowerShell,确保选择你要通过其来使用此功能的订阅。 有关详细信息,请参阅使用 Azure PowerShell 登录

  • 请确保 Az.Network 模块是 4.3.0 或更高版本。 要验证已安装的模块,请使用命令 Get-InstalledModule -Name Az.Network。 如果模块需要更新,请在必要时使用命令 Update-Module -Name Az.Network

如果选择在本地安装并使用 PowerShell,则本文需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行 Get-Module -ListAvailable Az 查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

  • 若要访问多子网前缀预览功能,需要在 Azure 订阅中注册它。 若要详细了解如何在订阅中注册预览功能,请参阅在 Azure 订阅中设置预览功能

    • 可通过 Microsoft.Features 命名空间获取 Azure 功能公开控件 (AFEC)。 对于此功能,需要在订阅中注册两个 AFEC 标志:

      • Microsoft.Features/providers/Microsoft.Network/features/AllowMultipleAddressPrefixesOnSubnet

      • Microsoft.Features/providers/Microsoft.Network/features/AllowDeletionOfIpPrefixFromSubnet

    • 若要注册此功能,请使用以下命令:

    Register-AzProviderFeature -FeatureName AllowMultipleAddressPrefixesOnSubnet -ProviderNamespace Microsoft.Network
    
    Register-AzProviderFeature -FeatureName AllowDeletionOfIpPrefixFromSubnet -ProviderNamespace Microsoft.Network
    

创建具有多个前缀的子网

在此部分,请创建具有多个前缀的子网。

  1. 使用 New-AzResourceGroup 在 chinanorth3 位置创建一个名为 test-rg 的资源组。

    $rg = @{
        Name = 'test-rg'
        Location = 'chinanorth3'
    }
    New-AzResourceGroup @rg
    
  2. 使用 New-AzVirtualNetworkSubnetConfig 创建具有多个前缀的子网。

    $subnet = @{
        Name = 'subnet-1'
        AddressPrefix = '10.0.0.0/24', '10.0.1.0/24'
    }
    $subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 
    
  3. 使用 New-AzVirtualNetwork 创建具有子网的虚拟网络。

    $net = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'chinanorth3'
        AddressPrefix = '10.0.0.0/16'
        Subnet = $subnetConfig
    }
    New-AzVirtualNetwork @net