使用 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。
创建具有加速网络的 VM
在以下示例中,可以将示例参数(如 <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-RDP-Internet \ --access Allow \ --protocol Tcp \ --direction Inbound \ --priority 100 \ --source-address-prefix Internet \ --source-port-range "*" \ --destination-address-prefix "*" \ --destination-port-range 3389
创建启用加速网络的网络接口
使用 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>
创建 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 中安装了以太网控制器。
在 Azure 门户中,搜索并选择“虚拟机”。
在“虚拟机”页上,选择自己的新建 VM。
在 VM 的“概述”页面上,选择“连接”。
在“连接”屏幕上,选择“本机 RDP”。
在“本机 RDP”屏幕上,选择“下载 RDP 文件”。
打开下载的 RDP 文件,然后使用创建 VM 时输入的凭据登录。
在远程 VM 上,右键单击“启动”,然后选择“设备管理器”。
在“设备管理器”窗口中,展开“网络适配器”节点 。
确认已显示“Mellanox ConnectX-4 Lx 虚拟以太网适配器”,如下图所示:
适配器的存在确认了已为 VM 启用加速网络。
验证数据包是否通过以下命令的输出流经 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 上启用加速网络
首先,停止/解除分配 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 或可用性集或虚拟机规模集中的所有 VM 的 NIC 上禁用加速网络。
将 VM 移动到不支持加速网络的新大小,然后重启它们。
通过门户管理加速网络
在 Azure 门户中创建 VM 时,可以在“创建虚拟机”屏幕的“网络”选项卡上选中“启用加速网络”复选框。
如果 VM 使用适用于加速网络的受支持的操作系统和 VM 大小,则会自动选中“创建虚拟机”屏幕的“网络”选项卡上的“启用加速网络”复选框。 如果不支持加速网络,则不会选中该复选框,并显示一条消息解释原因。
注意
对于 Azure 市场支持的操作系统,只能在门户 VM 创建期间启用加速网络。 要为具有自定义 OS 映像的 VM 创建和启用加速网络,必须使用 Azure CLI 或 PowerShell。
门户中的“加速网络”设置显示了用户选择的状态。 使用加速网络,可以在门户中选择“已禁用”,即使 VM 大小需要加速网络也是如此。 无论门户中的用户设置如何,需要加速网络的 VM 大小都会在运行时启用加速网络。
要通过Azure 门户为现有 VM 启用或禁用加速网络,请执行以下操作:
在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在 NIC“概述”页顶部,选择“编辑加速网络”。
选择“自动”、“已启用”或“已禁用”,然后选择“保存”。
要确认是否已为现有 VM 启用加速网络,请执行以下操作:
在 VM 的门户页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在网络接口“概述”页的“概要”下,注意已将“加速网络”设置为“已启用”还是“已禁用”。