两个负载相同的服务器为同一个网站提供服务,它们的速度往往会变慢,并停止响应 ping。缓慢(或间歇性)的 ping 会导致我们的负载平衡器认为服务器处于离线状态并禁用它们。第三个服务器的内容相同,但没有出现问题,所以我相当确信问题不在于网站。
操作系统是 Windows Server 2008。配置有点特殊:由于我们在直接服务器返回模式下使用 Barracuda Networks 负载平衡器,因此我们必须配置一些环回适配器,以便“伪造”所述 IP这里. 物理适配器已按照 2008 的要求将转发设置为启用,以使环回适配器正常运行。
症状:
- 当发生这种情况时,ping 通常要么超时,要么丢弃数据包。
- 修复方法似乎包括下列一项或多项:
- 通过远程桌面登录。
- 清除 dns 缓存或 arp 缓存(不确定是哪一个)。
- 正在重新启动。
- 出现上述一种或多种情况后,服务器似乎可以正常运行约 4 个小时,然后再次出现故障。
问题:
这可能有什么原因?我应该尝试诊断什么?我没有排除任何可能。交换机配置、域/dns 服务器,欢迎提出任何想法。
遗憾的是,我对良好的网络管理知之甚少,因此也欢迎明显的答案。
编辑:
回答提出的一些问题。
我已经联系了 Barracuda,他们似乎认为问题与网络有关。我想我在这一点上同意。
IP 被分配给物理接口,而不是在服务器之间共享。Ping 操作在同一个子网内完成。
当其他两个服务器宕机时,第三个服务器负责处理所有网站负载,并且没有出现太多问题,但偶尔也会遇到麻烦。我还没有发现它的规律。
今天晚上,我和另一位(更有经验的)网络人员一起查看了一些域和服务器配置。他发现的问题之一是域控制器上的 DNS 设置不正确。它们配置了外部 DNS 服务器作为备用服务器,而不是其他 DC。我们将它们切换为相互引用 DNS,并为 DNS 服务添加了转发功能。我们还从所有 Web 服务器中删除了外部 DNS 引用。
编辑2:
使用 Wireshark,我能够检查停机期间的 ICMP 流量。我开始进行此测试是因为我无法从机箱 1 访问机箱 2 上的共享文件夹。
测试:
- 开始捕获框 2 上的流量。
- 观察到盒子 2 正在查看并回复来自 Barracuda 负载均衡器的 ping。
- 登录到盒 1 并 ping 盒 2。
- 观察到盒子 2 看到了盒子 1 的 ping 但并未做出回应。
- 观察发现,在盒子 1 第一次发出 ping 之后的 100 秒内,盒子 2 看到了来自 LB 的 ping,但没有回复。
因此,两个盒子之间的流量不知何故导致盒子 2 在一段时间内 ICMP 出现故障。
我应该注意到,盒子 1 在整个测试过程中都运行良好,但没有看到来自盒子 2 的任何请求。当从盒子 2 对盒子 1 进行 ping 操作时,盒子 2 上的 Wireshark 显示一条消息“目标不可达(通信被管理过滤)”,该消息来自我无法识别的源 IP。
答案1
您需要使用 ICMP ping 来测试服务器吗?大多数负载平衡器都支持 HTTP 请求,这通常是一个更好的主意,因为您的 Web 服务器可能会在网卡正常运行时关闭。
答案2
我会先咨询 Barracuda Networks。这可能是一个已知问题。我们遇到了类似的问题,结果发现是我们的 Cisco 负载均衡器。固件更新解决了这个问题。
答案3
第三台服务器是否处于负载之下,或者它在其他方面是否不同于其他两台服务器?
在不了解更多信息的情况下,我建议Wireshark在这些服务器上 ping 并查看 ICMP 活动。我(可能毫无根据的)怀疑这些服务器有 ARP 问题并发回响应数据包,但您永远收不到它们。
使用 Wireshark,将过滤器设置为“arp 或 icmp”,然后查看它显示的内容。您还应该快速查看系统事件日志 - 那里可能有一些显而易见的信息,可以简化任何进一步的猜测。
如果您不熟悉 arp,它是将第 3 层 (IP) 地址转换为第 2 层 (MAC) 地址的协议。此过程必须正确进行,否则包含第 3 层数据包的第 2 层帧将永远不会发送,或者将到达错误的目的地。
最后,其他发帖人的双工/速度建议是可靠的最佳实践,尽管我怀疑它们不是根本原因。请注意,在千兆以太网中,您不再需要担心自动协商问题。
编辑
您所做的 DNS 更改确实是一个好主意,但我很难想象这会导致 ICMP 超时的情况。可能是应用程序阻止了数千个 DNS 查询并消耗了太多资源,以至于无法响应 ICMP?
无论如何,如果这不能解决问题,数据包跟踪应该显示更多正在发生的事情。
答案4
尝试手动设置接口速度,并尽可能避免使用自动协商。