大约一个月前,我们刚刚将第一个基于 Hyper-V 的 Web 解决方案上线(见下图)。在流量增加期间,例如在 Bing/Google/Baidu/McAfee Secure/等抓取期间,虚拟机之间会出现间歇性通信问题。该问题持续几分钟,但不是全面中断;有些请求工作正常,而其他请求则导致错误。我查看了虚拟机和主机系统上的系统日志,但没有任何迹象表明出现故障(除了 Web VM 上的一些 ASP.net ODBC 错误,因为它无法访问数据库主机)。
我们以前的设置是一台 8 年前的 Windows Server 2k3 Web 和数据库服务器,可以毫无问题地处理所有流量,但却限制了我们新的开发能力。它只有 4GB 的 RAM 和一个旧的 2GHz 双核处理器。我们的新服务器有 32GB 的 RAM 和一个四核 3.4GHz Xeon。当一切正常时,硬件会把旧东西打得落花流水。页面加载速度更快,查询运行速度更快,等等。
我唯一能想到的就是,由于 DB 和 Web 位于不同的 VM 上但共享同一个虚拟网络,因此适配器上的流量基本上翻倍了,或者我们的 Hyper-V 网络配置方式可能有问题。
有一个设置为外部的共享虚拟交换机。我们使用硬件防火墙来阻止通向外部世界的端口。我已附上网络适配器和当前虚拟交换机设置的屏幕截图。
我不确定应该在主机和虚拟机上启用/禁用哪些属性。机器有 2 个网卡,但目前所有设置都在一个端口上。建议将一个端口用于管理员,另一个端口用于虚拟交换机,我确信这会提高我们登录到机器时的性能,但我不确定这是否能解决当前的问题。
有人能提供关于主机和虚拟机上的 Nic 属性应该是什么样子的指导吗,或者指导我进行调整以提高网络性能?
答案1
除了 Bartłomiej 的回答之外,我还建议将团队负载平衡模式更改为 Hyper-V 端口,并将团队中的两个适配器都设置为活动状态:
这样,您就可以积极地利用团队中的两个适配器。
答案2
我建议从 powershell 而不是 GUI 设置所有 Hyper-V 主机网络。GUI 无法提供您想要的那么多控制。
- 清除您创建的所有 VMswitches/VMAdapters。物理网络适配器应该是 Hyper-V 主机上 ipconfig 中唯一可见的适配器(隧道适配器除外)。
- 将物理适配器重命名为例如“Gi1”和“Gi2”(稍后会更清楚地了解是什么)
- 检查卡名称 - 可能是“以太网 2”之类的名称:Get-NetAdapter
- 重命名:Rename-NetAdapter“旧名称1”“Gi1”
- 重命名第二个:Rename-NetAdapter“Old name2”“Gi2”
创建一个 switch 独立团队并检查它
- New-NetLbfoTeam -名称 Team1 -团队成员 Gi1,Gi2
- 检查它 - 默认应该设置一个 switchindependent Team。
PS C:\> Get-NetLbfoTeam Team1 Name : Team1 Members : {Gi2, Gi1} TeamNics : Team1 TeamingMode : SwitchIndependent LoadBalancingAlgorithm : TransportPorts Status : Up
- 您应该不再能在 ipconfig 中看到 Gi1、Gi2 - 而只会看到 Team1 作为 IP 接口。
- 创建一个 VMswitch 并与 Team1 连接。
- New-VMSwitch-名称VMSwitch1-NetAdapterNameTeam1
- 完成该步骤后,检查 ipconfig。您将不再看到 Team1,而是 VMswitch1 作为 Hyper-V 主机的 IP 接口。
- 创建用于管理的虚拟网络适配器并将其连接到 Vmswitch1
- 添加 VMNetworkAdapter -ManagementOS -VMNetworkAdapterName 管理 -SwitchName VMswitch1
- 您现在应该在 ipconfig 中看到“以太网适配器 vEthernet(管理):...”
- 将虚拟机网络适配器连接到 VMSwitch1。这可以通过 GUI 完成。
- 最终效果一目了然:
- 更多调整 - 但你应该保留所有默认设置:
- 看看Get-NetAdapterAdvancedProperty
- 或者也许这不是网络性能问题?
- 您用于数据库的 VHD / VHDX 类型是什么?动态?固定?
- 集成工具是否已安装/完全更新?