为什么服务器锁定会导致其他服务器退出网络?


9

我们有几十个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-锁定服务器的输出:

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服务器受到影响。)

在此先感谢您的任何建议。


你能给我完整的崩溃转储吗?上图切断了有趣的部分。另外,您是否将崩溃转储发布到lkml上?但是,再次看一下,这是一个相当老的内核,是否有计划将Debian升级到当前的稳定版本?
ckujau 2014年

不幸的是,我们没有崩溃转储。我已将其添加到列表中以配置串行控制台和/或kdump。至于较旧的内核,Proxmox使用OpenVZ的内核,它是主流内核的分支。因此,一旦崩溃转储开始工作,我将与OpenVZ开发人员联系以寻求帮助。感谢您的评论...它帮助我指明了正确的方向。
柯蒂斯

什么样的开关?
ETL 2014年

3个不同的开关(一个dlink和2个cisco)已发生此问题。我没有前两个交换机的型号,但是最新的是Cisco SG102-24。由于它只影响运行相同内核的交换机上的服务器,并且由于我在我的第三个交换机上,因此该交换机似乎也不应受到指责(尽管那也是我最初的想法)。
Curtis 2014年

我收到一封电子邮件通知,有人在这里发表了以下评论……“我有一个类似的问题,只是我可以用几个做硬核的容器使我崩溃”。在这里,作者删除了他们的评论,所以我不知道其余的内容。但是,我要补充一点,我注意到在网络流量很大时(例如在运行备份时),该问题似乎最常发生。也许那句话是“核心网络传输”?
Curtis 2014年

Answers:


2

几乎可以肯定,您的问题不是由单一因素引起的,而是由多种因素引起的。这些单独的因素尚不确定,但最有可能的一个因素是网络接口或驱动程序,而另一个因素在交换机本身上可以找到。因此,很有可能只能通过使用该特定品牌的交换机和该特定品牌的网络接口来重现该问题。

您似乎是问题的触发因素是在一台单独的服务器上发生的事情,然后该服务器出现了内核崩溃,该内核崩溃的影响以某种方式设法在整个交换机上传播。这听起来很可能,但我想说触发器在其他地方的可能性差不多。

可能是交换机或网络接口上发生了某些事情,这同时导致了交换机上的内核崩溃和链接问题。换句话说,即使内核没有发生内核崩溃,触发器也可能会降低交换机的连接性。

必须问,单个服务器上可能发生什么,这可能会对其他服务器造成影响。这不可能,因此解释必须涉及系统中某处的缺陷。

如果仅仅是崩溃的服务器和交换机之间的链接发生故障或变得不稳定,那么这对其他服务器的链接状态应该没有影响。如果确实如此,那将视为交换机中的缺陷。从流量的角度看,一旦崩溃的服务器失去连接,其他服务器的流量应该会稍微减少,这无法解释为什么他们会看到自己的问题。

这使我相信交换机上可能存在设计缺陷。

但是,链接问题并不是试图解释一台服务器上的问题如何导致交换机上其他服务器出现问题时要寻找的第一个解释。广播风暴将是一个更明显的解释。但是,在出现内核恐慌的服务器和广播风暴之间是否存在链接?

发往未知MAC地址的多播和数据包或多或少与广播一样,因此,此类数据包的风暴也将受到重视。出现紧急情况的服务器是否可以尝试通过网络将故障转储发送到交换机无法识别的MAC地址?

如果这是触发器,则其他服务器上出现了问题。因为数据包风暴不应在网络接口上引起此类错误。Reset adapter unexpectedly听起来不像是数据包风暴(应该只会导致性能下降,而不会出现此类错误),也不听起来像是链接问题(应该导致有关链接断开的消息,但不是您所犯的错误)看到)。

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

可以提供其他线索的一些建议:

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

感谢您的周到答复。根据您的3条建议:1)哪种类型的设备/软件可以做到?2)希望可以,但是其中涉及很多服务器,而且我不知道问题接下来将在哪里发生。3)我已经尝试了3种不同的开关(3种不同型号,2种不同品牌)。同样有趣的是,只有相同版本的Proxmox上的服务器会受到影响。Proxmox确实具有集群同步机制,因此我怀疑它与此有关。幸运的是,距现在已经发生问题已经几个月了。
Curtis

为了查看交换机上的流量,我正在考虑使用tcpdump和/或Wireshark连接一台普通PC。显然,您希望避免在该PC上安装受影响的软件。但是听起来Proxmox安装到内核中的代码中实际上必须存在一个错误。如果这种情况很少发生,以至于您每个月只能看到一次,一次只能看到一个开关,那么追踪它可能会花费很长时间。如果有更多想法,我会考虑一下并发表评论。
kasperd 2014年

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

我以前见过这些,它可以使服务器脱机。我不完全记得它是否在英特尔以太网卡上,但是我相信是的。它甚至可能与以太网卡本身中的错误有关。我记得读过一些有关具有此类问题的特定英特尔以太网卡的信息。但是我失去了文章的链接。

我可以想象这的触发部分取决于所使用的驱动程序(版本),而该软件的较旧版本可以正常工作的事实似乎可以证实这一点。您说供应商使用他们自己的自定义内核,请尝试更新用于特定以太网硬件的以太网驱动程序模块。来自您的供应商的一个或来自官方内核源代码树的一个。

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

同样,更换以太网硬件也可以修复它。替换或添加更新的(英特尔)以太网卡,然后使用它。如果问题出在硬件/固件中,则可能是新卡已修复(或更旧?)。


机器都具有双以太网端口,但是,其中一台机器锁定时,同一台交换机上的所有服务器都同时发生此错误。重新启动一台锁定的服务器后,所有受影响的服务器将立即重新变为可访问状态。这似乎表明锁定的服务器没有完全锁定,但是某种程度上淹没了同一台交换机上计算机的重置。看看驱动程序更新是否会有所帮助会很有趣,但是基于证据,我认为激活其他以太网卡不会有所帮助。
柯蒂斯2014年

使用旧线程,但是即使使用Intel e1000e NIC 82574L和5.0-23 / af4267bf的较新ProxMox版本之一,仍然存在网络问题。我可以打开连接到同一交换机的Windows笔记本电脑(从睡眠状态或登录状态唤醒),并且ProxMox服务器基本上每次都重新启动。我还看到它没有连接到交换机时只是偶尔重启。当我第一次将其连接到交换机时,它将重新启动。当前的驱动程序是3.3.5.3,有一个3.3.5.10、3.3.6和3.4.0.2,所以我可能会尝试构建和使用它们。我的.02c。
JGlass
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.