使用 Azure PowerShell 创建具有加速网络的 Windows VM

使用门户创建 VM

尽管本文提供了使用 Azure Powershell 创建具有加速网络的 VM 的步骤,但也可以使用 Azure 门户创建启用加速网络的虚拟机。 在 Azure 门户中创建 VM 时,在“创建虚拟机”页中,选择“网络”选项卡。此选项卡有一个“加速网络”选项。 如果已选择支持的操作系统VM 大小,此选项会自动设置为“打开”。 否则,该选项会设置为“关”,Azure 将显示无法启用它的原因。 你还可以在创建 VM 后通过门户启用或禁用加速网络,方法是:导航到网络接口,然后单击“概述”边栏选项卡顶部的按钮。

注意

只有受支持的操作系统才能通过门户启用。 如果你使用的是自定义映像,并且该映像支持加速网络,请使用 CLI 或 PowerShell 创建 VM。

创建 VM 后,可以确认是否已启用加速网络。 按照以下说明操作:

  1. 转到 Azure 门户来管理 VM。 搜索并选择“虚拟机”。

  2. 在虚拟机列表中,选择新的 VM。

  3. 在 VM 菜单栏中选择“网络”。

在网络接口信息中的“加速网络”标签旁边,门户会显示加速网络状态为“已禁用”或“已启用” 。

使用 PowerShell 创建 VM

请先安装 Azure PowerShell 1.0.0 版或更高版本。 要查找当前安装的版本,请运行 Get-Module -ListAvailable Az。 如果需要进行安装或升级,请从 PowerShell 库安装最新版本的 Az 模块。 在 PowerShell 会话中,使用 Connect-AzAccount -Environment AzureChinaCloud 登录到 Azure 帐户。

在以下示例中,请将示例参数名称替换成自己的值。 参数名称示例包括 myResourceGroup、myNic 和 myVM。

创建虚拟网络

  1. 使用 New-AzResourceGroup 创建资源组。 以下命令在 chinaeast 位置创建名为 myResourceGroup 的资源组 :

    New-AzResourceGroup -Name "myResourceGroup" -Location "chinaeast"
    
  2. 使用 New-AzVirtualNetworkSubnetConfig 创建子网配置。 以下命令创建名为 mySubnet 的子网:

    $subnet = New-AzVirtualNetworkSubnetConfig `
        -Name "mySubnet" `
        -AddressPrefix "192.168.1.0/24"
    
  3. 使用 New-AzVirtualNetwork 创建带 mySubnet 子网的虚拟网络。

    $vnet = New-AzVirtualNetwork -ResourceGroupName "myResourceGroup" `
        -Location "chinaeast" `
        -Name "myVnet" `
        -AddressPrefix "192.168.0.0/16" `
        -Subnet $Subnet
    

创建网络安全组

  1. 使用 New-AzNetworkSecurityRuleConfig 创建网络安全组规则。

    $rdp = New-AzNetworkSecurityRuleConfig `
        -Name 'Allow-RDP-All' `
        -Description 'Allow RDP' `
        -Access Allow `
        -Protocol Tcp `
        -Direction Inbound `
        -Priority 100 `
        -SourceAddressPrefix * `
        -SourcePortRange * `
        -DestinationAddressPrefix * `
        -DestinationPortRange 3389
    
  2. 使用 New-AzNetworkSecurityGroup 创建网络安全组,并向其分配 Allow-RDP-All 安全规则。 除 Allow-RDP-All 规则外,该网络安全组还包含多个默认规则。 某个默认规则禁用来自 Internet 的所有入站访问。 创建后,Allow-RDP-All 规则分配给网络安全组,以便可以远程连接到 VM。

    $nsg = New-AzNetworkSecurityGroup `
        -ResourceGroupName myResourceGroup `
        -Location chinaeast `
        -Name "myNsg" `
        -SecurityRules $rdp
    
  3. 使用 Set-AzVirtualNetworkSubnetConfig 将网络安全组关联到 mySubnet 子网。 网络安全组中的规则对子网中部署的所有资源都是有效的。

    Set-AzVirtualNetworkSubnetConfig `
        -VirtualNetwork $vnet `
        -Name 'mySubnet' `
        -AddressPrefix "192.168.1.0/24" `
        -NetworkSecurityGroup $nsg
    

创建具有加速网络的网络接口

  1. 使用 New-AzPublicIpAddress 创建一个公共 IP 地址。 如果不打算从 Internet 访问 VM,则不需要公共 IP 地址。 但是需要完成本文中的步骤。

    $publicIp = New-AzPublicIpAddress `
        -ResourceGroupName myResourceGroup `
        -Name 'myPublicIp' `
        -location chinaeast `
        -AllocationMethod Dynamic
    
  2. 使用 New-AzNetworkInterface 创建启用了加速网络的网络接口,并将公共 IP 地址分配给该网络接口。 下面的示例在 myVnet 虚拟网络的 mySubnet 子网中创建名为 myNic 的网络接口,向其分配 myPublicIp 公共 IP 地址 :

    $nic = New-AzNetworkInterface `
        -ResourceGroupName "myResourceGroup" `
        -Name "myNic" `
        -Location "chinaeast" `
        -SubnetId $vnet.Subnets[0].Id `
        -PublicIpAddressId $publicIp.Id `
        -EnableAcceleratedNetworking
    

创建 VM 并附加网络接口

  1. 使用 $cred 将 VM 凭据设置为 $cred 变量,这样会提示你登录:

    $cred = Get-Credential
    
  2. 通过 New-AzVMConfig 定义你的 VM。 以下命令定义名为 myVM 的 VM,其大小支持加速网络 (Standard_DS4_v2) :

    $vmConfig = New-AzVMConfig -VMName "myVm" -VMSize "Standard_DS4_v2"
    

    若要获取所有 VM 大小和特性列表,请参阅 Windows VM 大小

  3. 通过 Set-AzVMOperatingSystemSet-AzVMSourceImage 创建 VM 配置的其余部分。 以下命令创建 Windows Server 2016 VM:

    $vmConfig = Set-AzVMOperatingSystem -VM $vmConfig `
        -Windows `
        -ComputerName "myVM" `
        -Credential $cred `
        -ProvisionVMAgent `
        -EnableAutoUpdate
    $vmConfig = Set-AzVMSourceImage -VM $vmConfig `
        -PublisherName "MicrosoftWindowsServer" `
        -Offer "WindowsServer" `
        -Skus "2016-Datacenter" `
        -Version "latest"
    
  4. 使用 Add-AzVMNetworkInterface 附加之前创建的网络接口:

    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
    
  5. 使用 New-AzVM 创建 VM。

    New-AzVM -VM $vmConfig -ResourceGroupName "myResourceGroup" -Location "chinaeast"
    

确认 Windows VM 中已安装以太网控制器

在 Azure 中创建 VM 后,立即连接到 VM 并确认 Windows 中安装了以太网控制器。

  1. 转到 Azure 门户来管理 VM。 搜索并选择“虚拟机”。

  2. 在虚拟机列表中,选择新的 VM。

  3. 在 VM 概述页中,如果 VM 的“状态”列为“正在创建”,请等到 Azure 完成 VM 创建 。 VM 创建完成后,“状态”将更改为“正在运行” 。

  4. 在 VM 概述工具栏中,选择“连接”“RDP”“下载 RDP 文件”。

  5. 打开 .rdp 文件,然后使用在创建 VM 并附加网络接口部分中输入的凭据登录到 VM。 如果从未连接到 Azure 中的 Windows VM,请参阅连接到虚拟机

  6. 显示 VM 的远程桌面会话后,右键单击 Windows“开始”按钮,然后选择“设备管理器”。

  7. 在“设备管理器”窗口中,展开“网络适配器”节点 。

  8. 确认已显示“Mellanox ConnectX-3 虚函数以太网适配器”,如下图所示:

    Mellanox ConnectX-3 Virtual Function Ethernet Adapter, new network adapter for accelerated networking, Device Manager

现在已为 VM 启用加速网络。

注意

如果 Mellanox 适配器启动失败,请在远程桌面会话中打开管理员提示符,然后输入以下命令:

netsh int tcp set global rss = enabled

在现有 VM 上启用加速网络

如果创建的 VM 没有加速网络,则可在现有 VM 上启用此功能。 VM 必须支持加速网络,前提是满足以下先决条件(上文亦有列出):

  • VM 必须是加速网络支持的大小。
  • VM 必须是受支持的 Azure 库映像(以及适用于 Linux 的内核版本)。
  • 在任何 NIC 上启用加速网络前,必须停止或解除分配可用性集或虚拟机规模集中的所有 VM。

单个 VM 与可用性集中的 VM

  1. 停止或解除分配 VM,或集合中的所有 VM(如果是可用性集):

    Stop-AzVM -ResourceGroup "myResourceGroup" -Name "myVM"
    

    注意

    单独创建 VM 而没有可用性集时,只需停止或解除分配单个 VM 即可启用加速网络。 如果 VM 是使用可用性集创建的,则在任何 NIC 上启用加速网络之前,必须停止或解除分配可用性集中包含的所有 VM,以便 VM 最终位于支持加速网络的群集上。 如果禁用加速网络,则无需停止或解除分配要求,因为支持加速网络的群集也可与不使用加速网络的 NIC 一起正常工作。

  2. 在 VM 的 NIC 上启用加速网络:

    $nic = Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
        -Name "myNic"
    
    $nic.EnableAcceleratedNetworking = $true
    
    $nic | Set-AzNetworkInterface
    
  3. 重启 VM(如果在可用性集中,则重启其中的所有 VM),并确认已启用加速网络:

    Start-AzVM -ResourceGroup "myResourceGroup" `
        -Name "myVM"
    

虚拟机规模集

虚拟机规模集略有不同,但它遵循相同的工作流。

  1. 停止 VM:

    Stop-AzVmss -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet"
    
  2. 更新网络接口下的加速网络属性:

    $vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet"
    
    $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].EnableAcceleratedNetworking = $true
    
    Update-AzVmss -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet" `
        -VirtualMachineScaleSet $vmss
    
  3. 将应用的更新设置为自动,以便立即应用更改:

    $vmss.UpgradePolicy.Mode = "Automatic"
    
    Update-AzVmss -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet" `
        -VirtualMachineScaleSet $vmss
    

    注意

    规模集具有 VM 升级功能,可使用三种不同的设置(自动、滚动和手动)应用更新。 在这些说明中,策略设置为自动,因此规模集会在重启后立即应用更改。

  4. 重启规模集:

    Start-AzVmss -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet"
    

重启后,请等待升级完成。 升级完成后,虚函数 (VF) 会显示在 VM 内。 确保使用的是支持的 OS 和 VM 大小。

调整具有加速网络的现有 VM 的大小

如果 VM 启用了加速网络,则只能将其调整为支持加速网络的 VM 大小。

启用加速网络的 VM 不能使用调整大小操作调整为不支持加速网络的 VM 实例的大小。 相反,若要调整其中一个 VM 的大小,请执行以下操作:

  1. 停止或解除分配 VM。 对于可用性集或规模集,停止或解除分配可用性集或规模集中的所有 VM。

  2. 在 VM 的 NIC 上禁用加速网络。 对于可用性集或规模集,请在可用性集或规模集中的所有 VM 的 NIC 上禁用加速网络。

  3. 禁用加速网络后,将 VM、可用性集或规模集移至不支持加速网络的新大小,然后重启。

后续步骤