为什么服务器锁定会导致其他服务器断网?

为什么服务器锁定会导致其他服务器断网?

我们有几十台 Proxmox 服务器(Proxmox 在 Debian 上运行),大约每月一次,其中一台会出现内核崩溃并锁定。这些锁定最糟糕的部分是,当服务器与集群主服务器位于不同的交换机上时,该交换机上的所有其他 Proxmox 服务器都将停止响应,直到我们找到实际崩溃的服务器并重新启动它。

当我们在 Proxmox 论坛上报告此问题时,我们被建议升级到 Proxmox 3.1,过去几个月我们一直在这样做。不幸的是,我们迁移到 Proxmox 3.1 的其中一台服务器在星期五因内核崩溃而锁定,并且同一交换机上的所有 Proxmox 服务器再次无法通过网络访问,直到我们找到崩溃的服务器并重新启动它。

嗯,交换机上的几乎所有 Proxmox 服务器...我发现有趣的是,同一交换机上仍然使用 Proxmox 版本 1.9 的 Proxmox 服务器不受影响。

以下是崩溃服务器的控制台屏幕截图:

在此处输入图片描述

当服务器锁定时,同一交换机上运行 Proxmox 3.1 的其余服务器变得无法访问,并出现以下信息:

e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
...etc...

uname -a 锁定服务器的输出:

Linux ------ 2.6.32-23-pve #1 SMP Tue Aug 6 07:04:06 CEST 2013 x86_64 GNU/Linux

pveversion -v 输出(缩写):

proxmox-ve-2.6.32: 3.1-109 (running kernel: 2.6.32-23-pve)
pve-manager: 3.1-3 (running version: 3.1-3/dc0e9b0e)
pve-kernel-2.6.32-23-pve: 2.6.32-109

两个问题:

  1. 有什么线索可以解释什么导致内核恐慌(见上图)?

  2. 为什么在锁定的服务器重新启动之前,同一交换机上和 Proxmox 版本上的其他服务器会被从网络上删除?(注意:同一交换机上还有其他运行旧版 1.9 版 Proxmox 的服务器,这些服务器不受影响。此外,同一 3.1 集群中不在同一交换机上的其他 Proxmox 服务器也没有受到影响。)

提前感谢任何建议。

答案1

我几乎可以肯定您的问题不是由单一因素引起的,而是由多种因素共同引起的。这些单个因素是什么尚不确定,但最有可能的一个因素是网络接口或驱动程序,另一个因素是交换机本身。因此,很可能只有当该特定品牌的交换机与该特定品牌的网络接口结合使用时,问题才会重现。

您似乎认为问题的触发因素是某台服务器上发生的某件事,然后该服务器出现内核崩溃,其影响不知何故通过交换机传播。这听起来很有可能,但我认为触发因素在其他地方的可能性也差不多。

可能是交换机或网络接口上发生了某些事情,导致交换机上出现内核崩溃和链接问题。换句话说,即使内核没有出现内核崩溃,触发因素也很可能已经导致交换机上的连接中断。

有人会问,单个服务器上可能发生什么事情,会对其他服务器产生影响。这应该不可能发生,所以解释一定是系统某个地方存在缺陷。

如果只是崩溃的服务器和交换机之间的链路出现故障或变得不稳定,那么这应该不会影响到其他服务器的链路状态。如果确实如此,则应视为交换机存在缺陷。从流量方面来看,一旦崩溃的服务器失去连接,其他服务器的流量应该会略有减少,这无法解释为什么它们会遇到问题。

这使我相信开关上可能存在设计缺陷。

然而,当试图解释一台服务器上的问题如何导致交换机上的其他服务器出现问题时,链接问题并不是人们首先会想到的解释。广播风暴可能是一个更明显的解释。但是,服务器出现内核崩溃和广播风暴之间是否存在联系?

多播和发往未知 MAC 地址的数据包或多或少被视为与广播相同,因此此类数据包的风暴也算在内。崩溃的服务器会不会试图通过网络向交换机无法识别的 MAC 地址发送崩溃转储?

如果这是触发因素,那么其他服务器肯定出了问题。因为数据包风暴不应该导致网络接口出现这种错误。Reset adapter unexpectedly听起来不像是数据包风暴(数据包风暴只会导致性能下降,但不会导致任何错误),也不像是链接问题(链接问题应该会导致有关链接中断的消息,但不会出现您看到的错误)。

因此,网络接口硬件或驱动程序很可能存在一些缺陷,而这是由交换机触发的。

可以提供额外线索的一些建议:

  1. 您能否将其他设备连接到交换机并查看问题出现时交换机上的流量(我预测它要么安静下来要么看到洪水)。
  2. 是否可以使用不同的品牌和不同的驱动程序替换其中一台服务器上的网络接口,看看结果有何不同?
  3. 是否可以用其他品牌的交换机替换其中一个?我希望更换交换机可以确保问题不再影响多台服务器。更有趣的是,它是否也能阻止内核崩溃的发生。

答案2

在我看来,这听起来像是以太网驱动程序或硬件/固件中的一个错误,这是一个危险信号:

e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly

我以前见过这种情况,它会导致服务器离线。我不记得具体是否是英特尔以太网卡的问题,但我相信是的。它甚至可能与以太网卡本身的错误有关。我记得读过一些关于特定英特尔以太网卡存在此类问题的文章。但我丢失了文章的链接。

我认为触发此问题的因素部分取决于所使用的驱动程序(版本),旧版本的软件运行正常这一事实似乎证实了这一点。您说供应商使用他们自己的自定义内核,请尝试更新用于您的特定以太网硬件的以太网驱动程序模块。无论是来自您的供应商的驱动程序还是来自官方内核源代码树的驱动程序。

还要考虑绑定以太网硬件,通常服务器会有两个以太网端口,板载和/或附加卡。这样,如果一个以太网卡出现此问题,另一个就会出现问题。我使用“卡”这个词,但它当然适用于任何以太网硬件。

更换以太网硬件也可以解决问题。更换或添加较新的(英特尔)以太网卡并改用它。如果问题出在硬件/固件上,则较新的卡可能会有修复(或较旧的?)。

相关内容