本主题为运行 Hyper-V 和托管 Windows Server 网关虚拟机的服务器提供硬件规范和配置建议,以及 Windows Server 网关虚拟机(VM)的配置参数。 若要从 Windows Server 网关 VM 中提取最佳性能,应遵循这些准则。 以下部分包含部署 Windows Server 网关时的硬件和配置要求。
- Hyper-V 硬件建议
- Hyper-V 主机配置
- Windows Server 网关 VM 配置
Hyper-V 硬件建议
下面是运行 Windows Server 2016 和 Hyper-V 的每个服务器的建议最低硬件配置。
服务器组件 | 规格 |
---|---|
中央处理单元 (CPU) | 非统一内存体系结构(NUMA)节点:2 如果主机上有多个 Windows Server 网关 VM,为了获得最佳性能,每个网关 VM 应具有对一个 NUMA 节点的完全访问权限。 它应该不同于主机物理适配器使用的 NUMA 节点。 |
每个 NUMA 节点的核心数 | 2 |
超线程 | 禁用 Hyper-Threading 不会提高 Windows Server 网关的性能。 |
随机访问内存 (RAM) | 48 GB |
网络接口卡(NIC) | 两个 10 GB NIC,网关性能将取决于线路速率。 如果线速率小于10 Gbps,网关隧道的吞吐量也会按相同比例下降。 |
确保分配给 Windows Server 网关 VM 的虚拟处理器数不会超过 NUMA 节点上的处理器数。 例如,如果 NUMA 节点有 8 个核心,则虚拟处理器数应小于或等于 8。 为了获得最佳性能,应为 8。 若要了解每个 NUMA 节点的 NUMA 节点数和核心数,请在每个 Hyper-V 主机上运行以下 Windows PowerShell 脚本:
$nodes = [object[]] $(gwmi –Namespace root\virtualization\v2 -Class MSVM_NumaNode)
$cores = ($nodes | Measure-Object NumberOfProcessorCores -sum).Sum
$lps = ($nodes | Measure-Object NumberOfLogicalProcessors -sum).Sum
Write-Host "Number of NUMA Nodes: ", $nodes.count
Write-Host ("Total Number of Cores: ", $cores)
Write-Host ("Total Number of Logical Processors: ", $lps)
重要
跨 NUMA 节点分配虚拟处理器可能会对 Windows Server 网关产生负面影响。 运行多个 VM(每个 VM 都有来自一个 NUMA 节点的虚拟处理器)可能会比分配所有虚拟处理器的单个 VM 提供更好的聚合性能。
建议在每个 NUMA 节点有 8 个核心的情况下,选择在每个 Hyper-V 主机上安装的网关 VM 数量时,使用具有 8 个虚拟处理器和至少 8GB RAM 的网关 VM。 在这种情况下,一个 NUMA 节点专用于主机。
Hyper-V 主机配置
下面是运行 Windows Server 2016 和 Hyper-V 的每个服务器的建议配置,其工作负荷是运行 Windows Server 网关 VM。 这些配置说明包括使用 Windows PowerShell 命令示例。 这些示例包含了占位符,用于表示你在环境中运行这些命令时需要提供的实际值。 例如,网络适配器名称占位符为“NIC1”和“NIC2”。运行使用这些占位符的命令时,请使用服务器上的网络适配器的实际名称,而不是使用占位符,否则命令将失败。
注释
若要运行以下 Windows PowerShell 命令,你必须是管理员组的成员。
配置项 | Windows Powershell 配置 |
---|---|
交换机嵌入式组合 | 创建具有多个网络适配器的 vswitch 时,它会自动为这些适配器启用交换机嵌入式协作。 New-VMSwitch -Name TeamedvSwitch -NetAdapterName "NIC 1","NIC 2" Windows Server 2016 中不支持对 SDN 使用通过 LBFO 进行的传统协作。 交换机嵌入式组合支持对虚拟流量和 RDMA 流量使用同一组 NIC。 基于 LBFO 的 NIC 团队不支持此功能。 |
物理 NIC 上的中断裁决 | 使用默认设置。 若要检查配置,可以使用以下 Windows PowerShell 命令: Get-NetAdapterAdvancedProperty |
物理 NIC 上的接收缓冲区大小 | 可以通过运行命令 Get-NetAdapterAdvancedProperty 来验证物理 NIC 是否支持此参数的配置。 如果它们不支持此参数,则命令的输出不包括属性“接收缓冲区”。如果 NIC 确实支持此参数,可以使用以下 Windows PowerShell 命令设置接收缓冲区大小: Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Receive Buffers" –DisplayValue 3000 |
在物理 NIC 上发送缓冲区大小 | 可以通过运行命令 Get-NetAdapterAdvancedProperty 来验证物理 NIC 是否支持此参数的配置。 如果 NIC 不支持此参数,则命令的输出不包括属性“发送缓冲区”。如果 NIC 确实支持此参数,可以使用以下 Windows PowerShell 命令设置发送缓冲区大小: Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Transmit Buffers" –DisplayValue 3000 |
物理 NIC 上的接收方缩放 (RSS) | 可以通过运行 Windows PowerShell 命令 Get-NetAdapterRs 来验证物理 NIC 是否已启用 RSS。 可以使用以下 Windows PowerShell 命令在网络适配器上启用和配置 RSS: Enable-NetAdapterRss "NIC1","NIC2" Set-NetAdapterRss "NIC1","NIC2" –NumberOfReceiveQueues 16 -MaxProcessors 注意:如果已启用 VMMQ 或 VMQ,则无需在物理网络适配器上启用 RSS。 可以在主机虚拟网络适配器上启用它 |
VMMQ | 若要为 VM 启用 VMMQ,请运行以下命令: Set-VmNetworkAdapter -VMName <gateway vm name>,-VrssEnabled $true -VmmqEnabled $true 注意:并非所有网络适配器都支持 VMMQ。 目前,此功能支持 Chelsio T5 和 T6、Mellanox CX-3 和 CX-4 以及 QLogic 45xxx 系列。 |
NIC 组上的虚拟机队列 (VMQ) | 可以使用以下 Windows PowerShell 命令在 SET 团队上启用 VMQ: Enable-NetAdapterVmq 注意:仅当 HW 不支持 VMMQ 时,才应启用此功能。 如果受支持,应启用 VMMQ 以提高性能。 |
注释
VMQ 和 vRSS 仅在 VM 上的负载较高且 CPU 使用率达到最大值时才会成图。 只有这样,至少有一个处理器核心将达到最大负荷。然后,VMQ 和 vRSS 将有助于将处理负载分散到多个核心。 这不适用于 IPsec 流量,因为 IPsec 流量仅限于单个核心。
Windows Server 网关 VM 配置
在两台 Hyper-V 主机上,可以配置多个已使用 Windows Server 网关配置成网关的 VM。 可以使用虚拟交换机管理器创建绑定到 Hyper-V 主机上的 NIC 团队的 Hyper-V 虚拟交换机。 请注意,为了获得最佳性能,应在 Hyper-V 主机上部署单个网关 VM。 下面是每个 Windows Server 网关 VM 的建议配置。
配置项 | Windows Powershell 配置 |
---|---|
内存 | 8 GB |
虚拟网络适配器数 | 具有以下特定用途的 3 个 NIC:1 个用于管理操作系统的管理,1 个用于提供对外部网络的访问,1 个用于仅提供对内部网络的访问。 |
接收方缩放 (RSS) | 可以保留管理 NIC 的默认 RSS 设置。 以下示例配置适用于具有 8 个虚拟处理器的 VM。 对于外部和内部 NIC,可以使用以下 Windows PowerShell 命令启用 BaseProcNumber 设置为 0 且 MaxRssProcessors 设置为 8 的 RSS: Set-NetAdapterRss "Internal","External" –BaseProcNumber 0 –MaxProcessorNumber 8 |
发送方缓冲区 | 可以保留管理 NIC 的默认发送端缓冲区设置。 对于内部和外部 NIC,可以使用以下 Windows PowerShell 命令配置具有 32 MB RAM 的发送端缓冲区: Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Send Buffer Size" –DisplayValue "32MB" |
接收方缓冲区 | 可以保留管理 NIC 的默认接收端缓冲区设置。 对于内部和外部 NIC,可以使用以下 Windows PowerShell 命令配置 16 MB RAM 的接收端缓冲区: Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Receive Buffer Size" –DisplayValue "16MB" |
前向优化 | 可以为管理 NIC 使用默认的转发优化设置。 对于内部和外部 NIC,可以使用以下 Windows PowerShell 命令启用转发优化: Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Forward Optimization" –DisplayValue "1" |