本文讨论了如何在现有 Azure 虚拟机上启用和管理加速网络。
先决条件
Azure Cloud Shell
Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。
若要启动 Azure Cloud Shell,请执行以下操作:
若要使用 Azure Cloud Shell,请执行以下操作:
启动 Cloud Shell。
选择代码块(或命令块)上的“复制”按钮以复制代码或命令。
在 Windows 和 Linux 上选择 CtrlShift+V,或在 macOS 上选择 CmdShift+V 将代码或命令粘贴到 Cloud Shell 会话中。
选择“Enter”运行代码或命令。
如果选择在本地安装和使用 PowerShell,则本文需要 Azure PowerShell 模块 1.0.0 或更高版本。 运行 Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount
以创建与 Azure 的连接。
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
- 本文需要 Azure CLI 2.0.28 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。
处理虚拟函数的动态绑定和吊销
对于利用加速网络的所有应用程序,绑定到在虚拟机中公开的合成网络接口是一项强制性要求。
直接通过虚拟函数网络接口运行的应用程序错过了一些发往虚拟机的数据包。 这些数据包改为出现在合成接口上。
必须通过合成网络接口运行应用程序,以保证应用程序收到发往它的所有数据包。 绑定到合成网络接口还可以确保应用程序持续运行,即使在主机提供服务时撤销了虚拟函数也是如此。
有关应用程序绑定要求的详细信息,请参阅加速网络在 Linux 和 FreeBSD VM 中的工作方式。
在任何 Windows Hyper-V 服务器上测试该功能,以确保自定义映像或应用程序正确支持动态绑定和吊销虚拟函数。 在以下配置中使用运行 Hyper-V 的本地 Windows Server:
验证虚拟机和应用程序正在通过 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 必须满足以下要求才能支持加速网络:
在单个 VM 或可用性集中的 VM 上启用加速网络
在 Azure 门户中创建 VM 时,可以在“创建虚拟机”屏幕的“网络”选项卡上选中“启用加速网络”复选框。
如果 VM 使用适用于加速网络的受支持的操作系统和 VM 大小,则会自动选中“创建虚拟机”屏幕的“网络”选项卡上的“启用加速网络”复选框。 如果不支持加速网络,则不会选中该复选框,并显示一条消息解释原因。
注意
对于 Azure 市场支持的操作系统,只能在门户 VM 创建期间启用加速网络。 要为具有自定义 OS 映像的 VM 创建和启用加速网络,必须使用 Azure CLI 或 PowerShell。
门户中的“加速网络”设置显示了用户选择的状态。 使用加速网络,可以在门户中选择“已禁用”,即使 VM 大小需要加速网络也是如此。 无论门户中的用户设置如何,需要加速网络的 VM 大小都会在运行时启用加速网络。
要通过Azure 门户为现有 VM 启用或禁用加速网络,请执行以下操作:
在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在 NIC“概述”页顶部,选择“编辑加速网络”。
选择“自动”、“已启用”或“已禁用”,然后选择“保存”。
要确认是否已为现有 VM 启用加速网络,请执行以下操作:
在 VM 的门户页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在网络接口“概述”页的“概要”下,注意已将“加速网络”设置为“已启用”还是“已禁用”。
要确认是否已为现有 VM 启用加速网络,请执行以下操作:
在 VM 的“Azure 门户”页中,选择左侧菜单中的“网络”。
在“网络”页中,选择“网络接口”。
在 NIC“概述”页的“概要”下,注意已将“加速网络”设置为“已启用”还是“已禁用”。
停止或解除分配 VM,或集合中的所有 VM(如果是可用性集):
Stop-AzVM -ResourceGroup "<myResourceGroup>" -Name "<myVM>"
如果 VM 是单独创建的并且没有可用性集,则只需停止/解除分配单个 VM 即可启用加速网络。 如果使用可用性集创建了 VM,则必须停止或解除分配该集中的所有 VM,以便 VM 最终位于支持加速网络的群集上。
禁用加速网络不要求停止或解除分配。 支持加速网络的群集也可以与未使用加速网络的 NIC 一起正常工作。
在 VM 的 NIC 上启用加速网络:
$nic = Get-AzNetworkInterface -ResourceGroupName "<myResourceGroup>" -Name "<myNic>"
$nic.EnableAcceleratedNetworking = $true
$nic | Set-AzNetworkInterface
重启 VM 或可用性集中的所有 VM,并确认已启用加速网络。
Start-AzVM -ResourceGroup "<myResourceGroup>" -Name "<myVM>"
在虚拟机规模集上启用加速网络
Azure 虚拟机规模集略有不同,但遵循相同的工作流。
停止 VM:
Stop-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myScaleSet>"
更新 NIC 下的加速网络属性:
$vmss = Get-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myScaleSet>"
$vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].EnableAcceleratedNetworking = $true
Update-AzVmss
-ResourceGroupName "<myResourceGroup>" `
-VMScaleSetName "<myScaleSet>" `
-VirtualMachineScaleSet $vmss
虚拟机规模集具有升级策略,可通过使用自动、滚动或手动设置应用更新。 将升级策略设置为自动,以便立即应用更改。
$vmss.UpgradePolicy.Mode = "Automatic"
Update-AzVmss
-ResourceGroupName "<myResourceGroup>" `
-VMScaleSetName "<myScaleSet>" `
-VirtualMachineScaleSet $vmss
重启规模集:
Start-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myScaleSet>"
首先,停止/解除分配 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 移动到不支持加速网络的新大小,然后重启它们。
相关内容