使用 Azure CLI 创建具有加速网络的 Windows 或 Linux VM

注意

本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。

本文介绍如何使用 Azure CLI 命令行接口创建启用了加速网络 (AccelNet) 的 Linux 或 Windows 虚拟机 (VM)。 本文还讨论了如何在现有 VM 上启用和管理加速网络。

也可以使用 Azure 门户创建启用了加速网络的 VM。 有关使用 Azure 门户在 VM 上管理加速网络的详细信息,请参阅通过门户管理加速网络

要使用 Azure PowerShell 创建启用了加速网络的 Windows VM,请参阅使用 Azure PowerShell 创建具有加速网络的 Linux VM

先决条件

创建具有加速网络的 VM

在以下示例中,可以将示例参数(如 <myResourceGroup><myNic><myVm>)替换为自己的值。

创建虚拟网络

  1. 使用 az group create 创建要包含该资源的资源组。 请务必选择 Windows 和 Linux 加速网络中列出的受支持的 Windows 或 Linux 区域。

    az group create --name <myResourceGroup> --location <myAzureRegion>
    
  2. 使用 az network vnet create 在资源组中创建带有一个子网的虚拟网络:

    az network vnet create \
      --resource-group <myResourceGroup> \
      --name <myVnet> \
      --address-prefix 192.168.0.0/16 \
      --subnet-name <mySubnet> \
      --subnet-prefix 192.168.1.0/24
    

创建网络安全组

  1. 使用 az network nsg create 创建网络安全组 (NSG)。

    az network nsg create \
      --resource-group <myResourceGroup> \
      --name <myNsg>
    
  2. NSG 包含多个默认规则,其中一个规则禁用了来自 Internet 的所有入站访问。 使用 az network nsg rule create 打开一个端口,以允许远程桌面协议 (RDP) 或安全 shell (SSH) 访问 VM。

    az network nsg rule create \
      --resource-group <myResourceGroup> \
      --nsg-name <myNsg> \
      --name Allow-RDP-Internet \
      --access Allow \
      --protocol Tcp \
      --direction Inbound \
      --priority 100 \
      --source-address-prefix Internet \
      --source-port-range "*" \
      --destination-address-prefix "*" \
      --destination-port-range 3389
    

创建启用加速网络的网络接口

  1. 使用 az network public-ip create 创建公共 IP 地址。 如果不从 Internet 访问 VM,则 VM 不需要公共 IP 地址,但你需要公共 IP 才能完成本文的步骤。

    az network public-ip create \
      --name <myPublicIp> \
      --resource-group <myResourceGroup>
    
  2. 使用 az network nic create 创建启用了加速网络的网络接口 (NIC)。 以下示例将在虚拟网络的子网中创建一个 NIC,并将 NSG 关联到 NIC。

    az network nic create \
     --resource-group <myResourceGroup> \
      --name <myNic> \
      --vnet-name <myVnet> \
      --subnet <mySubnet> \
      --accelerated-networking true \
      --public-ip-address <myPublicIp> \
      --network-security-group <myNsg>
    

创建 VM 并附加 NIC

使用 az vm create 创建 VM,并使用 --nics 选项附加创建的 NIC。 确保选择 Windows 和 Linux 加速网络中列出的 VM 大小和分发。 有关所有 VM 大小和特征的列表,请参阅 Azure 中虚拟机的大小

以下示例将创建一台大小支持加速网络的 Windows Server 2019 Datacenter VM,Standard_DS4_v2。

az vm create \
  --resource-group <myResourceGroup> \
  --name <myVm> \
  --image Win2019Datacenter \
  --size Standard_DS4_v2 \
  --admin-username <myAdminUser> \
  --admin-password <myAdminPassword> \
  --nics <myNic>

创建 VM 后,将获取与以下示例类似的输出。 对于 Linux 计算机,请记下 publicIpAddress,你将在下一步中输入它来访问 VM。

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm",
  "location": "chinaeast",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "192.168.0.4",
  "publicIpAddress": "40.68.254.142",
  "resourceGroup": "myResourceGroup"
}

确认已启用加速网络

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

  1. Azure 门户中,搜索并选择“虚拟机”。

  2. 在“虚拟机”页上,选择自己的新建 VM。

  3. 在 VM 的“概述”页面上,选择“连接”。

  4. 在“连接”屏幕上,选择“本机 RDP”。

  5. 在“本机 RDP”屏幕上,选择“下载 RDP 文件”。

  6. 打开下载的 RDP 文件,然后使用创建 VM 时输入的凭据登录。

  7. 在远程 VM 上,右键单击“启动”,然后选择“设备管理器”。

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

  9. 确认已显示“Mellanox ConnectX-4 Lx 虚拟以太网适配器”,如下图所示:

    Mellanox ConnectX-3 虚函数以太网适配器,适用于加速网络的新网络适配器,设备管理器

    适配器的存在确认了已为 VM 启用加速网络。

  10. 验证数据包是否通过以下命令的输出流经 VF 接口:

    PS C:\ > Get-NetAdapter | Where-Object InterfaceDescription –like "*Mellanox*Virtual*" | Get-NetAdapterStatistics
    
    Name                             ReceivedBytes ReceivedUnicastPackets       SentBytes SentUnicastPackets
    ----                             ------------- ----------------------       --------- ------------------
    Ethernet 2                           492447549                 347643         7468446              34991
    
    

注意

如果 Mellanox 适配器启动失败,可在远程 VM 上打开管理员提示符,然后输入以下命令:

netsh int tcp set global rss = enabled

处理虚拟函数的动态绑定和吊销

对于利用加速网络的所有应用程序,绑定到在 VM 中公开的合成 NIC 是一项强制性要求。 如果应用程序直接通过 VF NIC 运行,它不会收到发往 VM 的所有包,因为一些包会通过合成接口显示。

必须通过合成 NIC 运行应用程序,以保证应用程序收到发往它的所有数据包。 绑定到合成 NIC 还可以确保应用程序持续运行,即使在主机提供服务时撤销了 VF 也是如此。

有关应用程序绑定要求的详细信息,请参阅加速网络在 Linux 和 FreeBSD VM 中的工作方式

为了确保自定义映像或应用程序正确支持动态绑定和吊销虚拟函数,可以在任何 Windows Hyper-V 服务器上测试该功能。 在以下配置中使用运行 Hyper-V 的本地 Windows Server:

  • 确保有支持 SR-IOV 的物理网络适配器。
  • 在选中“启用单根 I/O 虚拟化 (SR-IOV)”的 SR-IOV 适配器的基础上创建外部虚拟交换机。
  • 创建/部署运行操作系统映像或应用程序的虚拟机。
  • 此虚拟机的网络适配器在“硬件加速”下选择了“启用 SR-IOV”。

验证虚拟机和应用程序正在通过 SR-IOV 使用网络适配器后,可以修改以下示例命令以切换 SR-IOV 开/关,从而撤销和添加虚拟函数以模拟 Azure 主机服务期间发生的情况:

# Get the virtual network adapter to test
$vmNic = Get-VMNetworkAdapter -VMName "myvm" | where {$_.MacAddress -eq "001122334455"}

# Enable SR-IOV on a virtual network adapter
Set-VMNetworkAdapter $vmNic -IovWeight 100 -IovQueuePairsRequested 1

# Disable SR-IOV on a virtual network adapter
Set-VMNetworkAdapter $vmNic -IovWeight 0

在现有 VM 上管理加速网络

可以在现有虚拟机上启用加速网络。 VM 必须满足以下要求才能支持加速网络:

  • 加速网络支持的大小。

  • Linux 支持的 Azure 市场映像和内核版本。

  • 在任何 NIC 上可以启用加速网络之前,已停止或已解除分配。 此要求适用于所有单个 VM 或可用性集或 Azure 虚拟机规模集中的 VM。

在单个 VM 或可用性集中的 VM 上启用加速网络

  1. 首先,停止/解除分配 VM 或可用性集中的所有 VM。

    az vm deallocate \
      --resource-group <myResourceGroup> \
      --name <myVm>
    

    如果 VM 是单独创建的并且没有可用性集,则只需停止/解除分配单个 VM 即可启用加速网络。 如果使用可用性集创建了 VM,则必须停止或解除分配该集中的所有 VM,然后才能在任何 NIC 上启用加速网络。

  2. 停止 VM 后,即可在 VM 的 NIC 上启用加速网络。

    az network nic update \
      --name <myNic> \
      --resource-group <myResourceGroup> \
      --accelerated-networking true
    
  3. 重启 VM 或可用性集中的所有 VM,并确认已启用加速网络

    az vm start --resource-group <myResourceGroup> \
      --name <myVm>
    

在虚拟机规模集上启用加速网络

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

  1. 首先,停止 VM:

    az vmss deallocate \
      --name <myVmss> \
      --resource-group <myResourceGroup>
    
  2. VM 停止后,请更新网络接口下的加速网络属性。

    az vmss update --name <myVmss> \
      --resource-group <myResourceGroup> \
      --set virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].enableAcceleratedNetworking=true
    
  3. 虚拟机规模集具有升级策略,可通过使用自动、滚动或手动设置应用更新。 以下说明将策略设置为自动,以便虚拟机规模集可在重启后立即获取更改。

    az vmss update \
      --name <myVmss> \
      --resource-group <myResourceGroup> \
      --set upgradePolicy.mode="automatic"
    
  4. 最后,重启虚拟机规模集。

    az vmss start \
      --name <myVmss> \
      --resource-group <myResourceGroup>
    

重启并完成升级后,VF 将显示在使用支持的 OS 和 VM 大小的 VM 中。

重设具有加速网络的现有 VM 的大小

可以只将已启用加速网络的 VM 的大小重设为同时支持加速网络的大小。 通过使用重设大小操作,无法将具有加速网络的 VM 的大小重设为不支持加速网络的 VM 实例。 请改用以下过程调整这些 VM 的大小:

  1. 停止并解除分配 VM,或可用性集或虚拟机规模集中的所有 VM。

  2. 在 VM 或可用性集或虚拟机规模集中的所有 VM 的 NIC 上禁用加速网络。

  3. 将 VM 移动到不支持加速网络的新大小,然后重启它们。

通过门户管理加速网络

Azure 门户中创建 VM 时,可以在“创建虚拟机”屏幕的“网络”选项卡上选中“启用加速网络”复选框。

如果 VM 使用适用于加速网络的受支持的操作系统VM 大小,则会自动选中“创建虚拟机”屏幕的“网络”选项卡上的“启用加速网络”复选框。 如果不支持加速网络,则不会选中该复选框,并显示一条消息解释原因。

注意

  • 对于 Azure 市场支持的操作系统,只能在门户 VM 创建期间启用加速网络。 要为具有自定义 OS 映像的 VM 创建和启用加速网络,必须使用 Azure CLI 或 PowerShell。

  • 门户中的“加速网络”设置显示了用户选择的状态。 使用加速网络,可以在门户中选择“已禁用”,即使 VM 大小需要加速网络也是如此。 无论门户中的用户设置如何,需要加速网络的 VM 大小都会在运行时启用加速网络。

要通过Azure 门户为现有 VM 启用或禁用加速网络,请执行以下操作:

  1. 在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。

  2. 在“网络”页中,选择“网络接口”。

  3. 在 NIC“概述”页顶部,选择“编辑加速网络”。

  4. 选择“自动”、“已启用”或“已禁用”,然后选择“保存”。

要确认是否已为现有 VM 启用加速网络,请执行以下操作:

  1. 在 VM 的门户页中,选择左侧菜单中的“网络”。

  2. 在“网络”页中,选择“网络接口”。

  3. 在网络接口“概述”页的“概要”下,注意已将“加速网络”设置为“已启用”还是“已禁用”。

后续步骤