无需关闭即可升级过时的 Linux 生产服务器

无需关闭即可升级过时的 Linux 生产服务器

我与一位想要设置监控基础设施的客户合作过。我遇到的问题是,很多服务器使用的内核版本非常老旧(大约 2012-2013 年),而我设置的监控系统需要较新的内核版本。

我知道有一个解决方案,可以安装内核并将其重新加载到内存中,但这仍然需要系统具有某种形式的重置。

这些服务器是生产服务器,我们不能让它们因任何原因在任何时间内停机。

此外,这些服务器大多数都是 CentOS6 和 7,还有少数 CentOS4 和 Debian8

我最好的前进路线是什么?其他大公司如何保持其生产服务器的最新状态?

答案1

100% 正常运行时间是无法实现的。他们的业务连续性计划并不完整或不切实际,即使他们认为如此。

定义他们实际上愿意为哪些可用性付费。尽可能少的停机时间意味着需要多个节点,例如负载平衡器或集群。滚动升级意味着即使一台主机重新启动,服务仍可用。这是很健康的做法,因为它可以测试主机是否可以重新启动并恢复。

为了减少 Linux 主机的重启次数,请实施实时修补。实施和维护实时修补需要大量的内核发布工程工作。此类内核更新在 CentOS 中不免费提供。查看 RHEL 或CloudLinux 的 KernelCare

内核实时修补对所有程序使用的共享库没有帮助。尤其是 libc。升级 libc 后,您应该重新启动所有服务,此时最好重新启动。

实时修补也无助于终止发行版。CentOS 4 已死,重大升级是负责任的做法。

答案2

其他大公司如何保持其生产服务器的最新状态?

我们有允许我们重启服务器的环境,您想到的东西(可能是 ksplice)确实在某种程度上有效,但您需要一个已安装并运行的基本操作系统才能使用它。否则,您需要重启和/或重建。

答案3

Chopper3 告诉你的是正确的。KSplice 让你在某些操作系统上做到这一点,我认为是 Oracle Linux。对于像 RedHat 和 CentOS 这样的操作系统,该工具称为 KPatch.... 基于 Debian 的发行版可能有类似的,你必须搜索...

也就是说,您需要在内核更新之前安装它,所以就像 Josehp 所说的那样,无论如何您都需要重新启动。您可能需要查看 kpatch 或 ksplice 文档。

这是 RedHat 的 DOChttps://access.redhat.com/solutions/2206511

不过,我认为您的机器操作系统版本/内核太旧了……我想说,如果可能的话,您可以启动一些新的虚拟机或披萨盒,从头开始/迁移到这些新机器。除非您需要运行旧版应用程序,否则请保持内核和发行版为最新版本……不仅为了可用性,也为了安全性。

否则,您将需要重新启动...

此外,Chopperr3 提到的“他的环境允许他这样做”是指他的应用程序可能在集群或类似的环境中运行,允许他同时重新启动 1 台或多台机器,而不会影响或导致他的应用程序关闭......(我想).....

相关内容