使用 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。
具有活动订阅的 Azure 帐户。 可创建试用帐户。
已安装的 Azure CLI 的最新版本。 使用 az login 命令登录到 Azure。
在以下示例中,可以将示例参数(如 <myResourceGroup>
、<myNic>
和 <myVm>
)替换为自己的值。
使用 az group create 创建要包含该资源的资源组。 请务必选择 Windows 和 Linux 加速网络中列出的受支持的 Windows 或 Linux 区域。
az group create --name <myResourceGroup> --location <myAzureRegion>
使用 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
使用 az network nsg create 创建网络安全组 (NSG)。
az network nsg create \ --resource-group <myResourceGroup> \ --name <myNsg>
NSG 包含多个默认规则,其中一个规则禁用了来自 Internet 的所有入站访问。 使用 az network nsg rule create 打开一个端口,以允许远程桌面协议 (RDP) 或安全 shell (SSH) 访问 VM。
az network nsg rule create \ --resource-group <myResourceGroup> \ --nsg-name <myNsg> \ --name Allow-SSH-Internet \ --access Allow \ --protocol Tcp \ --direction Inbound \ --priority 100 \ --source-address-prefix Internet \ --source-port-range "*" \ --destination-address-prefix "*" \ --destination-port-range 22
使用 az network public-ip create 创建公共 IP 地址。 如果不从 Internet 访问 VM,则 VM 不需要公共 IP 地址,但你需要公共 IP 才能完成本文的步骤。
az network public-ip create \ --name <myPublicIp> \ --resource-group <myResourceGroup>
使用 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>
使用 az vm create 创建 VM,并使用 --nics
选项附加创建的 NIC。 确保选择 Windows 和 Linux 加速网络中列出的 VM 大小和分发。 有关所有 VM 大小和特征的列表,请参阅 Azure 中虚拟机的大小。
以下示例将创建大小支持加速网络的 VM Standard_DS4_v2。
az vm create \
--resource-group <myResourceGroup> \
--name <myVm> \
--image Ubuntu2204 \
--size Standard_DS4_v2 \
--admin-username <myAdminUser> \
--generate-ssh-keys \
--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"
}
使用以下命令来与 VM 建立 SSH 会话。 将
<myPublicIp>
替换为分配给所创建虚拟机的公共 IP 地址,并将<myAdminUser>
替换为创建 VM 时指定的--admin-username
。ssh <myAdminUser>@<myPublicIp>
从远程 VM 的 shell 输入
uname -r
,并确认内核版本为以下版本之一或更高版本:- Ubuntu 16.04:4.11.0-1013。
- SLES SP3:4.4.92-6.18。
- RHEL:3.10.0-693、2.6.32-573。 如果在 Linux Integration Services 4.3+ 之前安装了 Mellanox VF 版本 4.5+,则支持 RHEL 6.7-6.10。
- CentOS:3.10.0-693。
备注
可能支持其他内核版本。 有关更新后的列表,请参阅 Hyper-V 支持的 Linux 和 FreeBSD 虚拟机中每个分发版的兼容性表,并确认支持 SR-IOV。 可以在适用于 Hyper-V 和 Azure 的 Linux Integration Services 的发行说明中查找更多详细信息。 *
使用
lspci
命令确认已向 VM 公开 Mellanox VF 设备。 返回的输出应类似于以下示例:0000:00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (rev 03) 0000:00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 01) 0000:00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 0000:00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02) 0000:00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual VGA 0001:00:02.0 Ethernet controller: Mellanox Technologies MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function]
使用
ethtool -S eth0 | grep vf_
命令检查虚拟函数 (VF) 的活动。 如果加速网络已启用并处于活动状态,则会收到与以下示例类似的输出:vf_rx_packets: 992956 vf_rx_bytes: 2749784180 vf_tx_packets: 2656684 vf_tx_bytes: 1099443970 vf_tx_dropped: 0
对于利用加速网络的所有应用程序,绑定到在 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 必须满足以下要求才能支持加速网络:
加速网络支持的大小。
Linux 支持的 Azure 市场映像和内核版本。
在任何 NIC 上可以启用加速网络之前,已停止或已解除分配。 此要求适用于所有单个 VM 或可用性集或 Azure 虚拟机规模集中的 VM。
首先,停止/解除分配 VM 或可用性集中的所有 VM。
az vm deallocate \ --resource-group <myResourceGroup> \ --name <myVm>
如果 VM 是单独创建的并且没有可用性集,则只需停止/解除分配单个 VM 即可启用加速网络。 如果使用可用性集创建了 VM,则必须停止或解除分配该集中的所有 VM,然后才能在任何 NIC 上启用加速网络。
停止 VM 后,即可在 VM 的 NIC 上启用加速网络。
az network nic update \ --name <myNic> \ --resource-group <myResourceGroup> \ --accelerated-networking true
重启 VM 或可用性集中的所有 VM,并确认已启用加速网络。
az vm start --resource-group <myResourceGroup> \ --name <myVm>
Azure 虚拟机规模集略有不同,但遵循相同的工作流。
首先,停止 VM:
az vmss deallocate \ --name <myVmss> \ --resource-group <myResourceGroup>
VM 停止后,请更新网络接口下的加速网络属性。
az vmss update --name <myVmss> \ --resource-group <myResourceGroup> \ --set virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].enableAcceleratedNetworking=true
虚拟机规模集具有升级策略,可通过使用自动、滚动或手动设置应用更新。 以下说明将策略设置为自动,以便虚拟机规模集可在重启后立即获取更改。
az vmss update \ --name <myVmss> \ --resource-group <myResourceGroup> \ --set upgradePolicy.mode="automatic"
最后,重启虚拟机规模集。
az vmss start \ --name <myVmss> \ --resource-group <myResourceGroup>
重启并完成升级后,VF 将显示在使用支持的 OS 和 VM 大小的 VM 中。
可以只将已启用加速网络的 VM 的大小重设为同时支持加速网络的大小。 通过使用重设大小操作,无法将具有加速网络的 VM 的大小重设为不支持加速网络的 VM 实例。 请改用以下过程调整这些 VM 的大小:
停止并解除分配 VM,或可用性集或虚拟机规模集中的所有 VM。
在 VM 或可用性集或虚拟机规模集中的所有 VM 的 NIC 上禁用加速网络。
将 VM 移动到不支持加速网络的新大小,然后重启它们。
在 Azure 门户中创建 VM 时,可以在“创建虚拟机”屏幕的“网络”选项卡上选中“启用加速网络”复选框。
如果 VM 使用适用于加速网络的受支持的操作系统和 VM 大小,则会自动选中“创建虚拟机”屏幕的“网络”选项卡上的“启用加速网络”复选框。 如果不支持加速网络,则不会选中该复选框,并显示一条消息解释原因。
备注
对于 Azure 市场支持的操作系统,只能在门户 VM 创建期间启用加速网络。 要为具有自定义 OS 映像的 VM 创建和启用加速网络,必须使用 Azure CLI 或 PowerShell。
门户中的“加速网络”设置显示了用户选择的状态。 使用加速网络,可以在门户中选择“已禁用”,即使 VM 大小需要加速网络也是如此。 无论门户中的用户设置如何,需要加速网络的 VM 大小都会在运行时启用加速网络。
要通过Azure 门户为现有 VM 启用或禁用加速网络,请执行以下操作:
在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在 NIC“概述”页顶部,选择“编辑加速网络”。
选择“自动”、“已启用”或“已禁用”,然后选择“保存”。
要确认是否已为现有 VM 启用加速网络,请执行以下操作:
在 VM 的门户页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在网络接口“概述”页的“概要”下,注意已将“加速网络”设置为“已启用”还是“已禁用”。