本主題提供執行 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 之每部伺服器的建議最低硬體設定。
| 伺服器元件 | Specification |
|---|---|
| 中央處理單位 (CPU) | 非統一記憶體架構 (NUMA) 節點:2 如果主機上有多個 Windows Server 閘道 VM,為了達到最佳效能,每個閘道 VM 都應該具有一個 NUMA 節點的完整存取權。 它應該與主機實體配接器所使用的NUMA節點不同。 |
| 每個 NUMA 節點的核心 | 2 |
| Hyper-Threading | Disabled. 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)
Important
跨 NUMA 節點配置虛擬處理器可能會對 Windows Server 閘道造成負面影響。 執行多個 VM,其中每個 VM 都有來自一個 NUMA 節點的虛擬處理器,可能會提供比指派所有虛擬處理器的單一 VM 更好的匯總效能。
當每個 NUMA 節點擁有八個核心時,建議在每個 Hyper-V 主機上安裝一個具有八個虛擬處理器和至少 8GB 記憶體的閘道 VM。 在此情況下,一個NUMA節點專用於主計算機。
Hyper-V 主機設定
以下是執行 Windows Server 2016 和 Hyper-V 且工作負載為執行 Windows Server 閘道 VM 之每部伺服器的建議組態。 這些設定指示包括使用 Windows PowerShell 命令範例。 這些範例包含佔位符,在您於環境中執行命令時需要提供實際數值。 例如,網路適配器名稱佔位元為 “NIC1” 和 “NIC2”。當您執行使用這些佔位元的命令時,請利用伺服器上網路適配器的實際名稱,而不是使用佔位元,否則命令將會失敗。
Note
若要執行下列 Windows PowerShell 命令,您必須是 Administrators 群組的成員。
| 配置項目 | 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-NetAdapterRss 來驗證實體 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 以提升效能。 |
Note
VMQ 和 vRSS 只有在 VM 上的負載很高,且 CPU 會使用到最大值時才會顯示出來。 只有這樣一來,至少會有一個處理器核心達到最大負荷。VMQ 和 vRSS 有助於將處理負載分散到多個核心。 這不適用於 IPsec 流量,因為 IPsec 流量僅限於單一核心。
Windows Server 閘道 VM 設定
在兩部 Hyper-V 主機上,您可以設定多個 VM,這些 VM 會設定為具有 Windows Server 閘道的閘道。 您可以使用 Virtual Switch Manager 來建立 Hyper-V 虛擬交換器,該虛擬交換器系結至 Hyper-V 主機上的 NIC 小組。 請注意,為了達到最佳效能,您應該在 Hyper-V 主機上部署單一閘道 VM。 以下是每個 Windows Server 閘道 VM 的建議設定。
| 組態項目 | Windows Powershell 組態 |
|---|---|
| Memory | 8 GB |
| 虛擬網路適配器數目 | 具有下列特定用途的 3 張網卡: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" |