更新服务器的良好做法?

更新服务器的良好做法?

我有许多正在运行的服务器CentOS 5.*CentOS 6.*我想更新它们,但是有一些应用程序正在运行,我可能会使这些应用程序崩溃,这让我带着这种担心写了这篇文章。

你们建议我做什么?

答案1

您的目标是:

  • 拥有自动化的方法来构建/重建你的机器

  • 使用它来构建相同的测试环境(通常是虚拟机)

  • 拥有一套自动化测试来确保机器正在执行其应执行的操作

  • 在升级之前和之后在测试环境上运行自动化测试,然后在真实环境升级之前和之后再次运行该测试。

这一切都取决于能否快速、自动地构建您的机器,这就是 puppet / chef 和类似工具的用武之地。我们使用 vagrant 和 virtualbox 作为测试环境,这也允许您安全地编写新的 puppet / chef 代码并对其进行测试。

当您对之前全新安装的机器进行测试并顺利通过时,您就知道您的自动化程度是否“足够”,最好是无需用户干预。

哦,对于关键系统,请使用故障转移对并首先更新被动节点(然后进行故障转移,如果测试通过,则更新先前的主动节点)。

答案2

我可能会让这些应用程序崩溃

1)使用成熟的发行版(尤其是 Centos,本质上是 RHEL 的副本,是快照而不是滚动版本)的主要原因之一是,任何更新都将保留向后兼容性,更新不太可能破坏任何东西

2)如果存储在磁盘上的代码位被不兼容的代码替换,那么在您尝试加载和运行新代码之前不应该有任何影响 - 很少有软件会执行启动后延迟的任何动态链接 - 因此程序可能不会重新启动,但它们崩溃的可能性极小。

3)如果这些系统有可能被远程访问(甚至有可能在本地被恶意访问),您必须保持你的补丁为最新版本。

4)对于内核补丁,你必须在应用补丁后重新启动机器 - 即你当前正在运行的代码将被停止

5)如果你有“很多机器”,而且它们在做有价值的事情,那么你应该有能力测试自己对非关键任务系统进行更新(正如 vonbrand 指出的那样,您甚至不需要专用的机器来完成此操作)。

答案3

在备用机器(或虚拟机)上尝试更新,并运行您已运行的应用程序。预先定义一组测试,针对已安装的版本运行这些测试,并保存结果以供比较。

yum list installed可以查看安装了哪些软件包,rpm -Va将为您提供一个认为已被修改的软件包列表rpm(出于某种奇怪的原因,它会给出许多误报),检查哪些配置文件已更改,记下更改并保存。查找其他外部配置和本地修改。制作当然如果需要,您可以重建一个精确的副本。

为每台机器设置 kickstart 文件,并使它们保持最新状态将使未来的迁移(或在出现故障时移动机器,或为活动高峰创建镜像,或...)变得更加简单。

答案4

在运行更新之前,您应该确认您正在运行的应用程序与更新的版本兼容,然后您可以使用 yum 更新所有软件包。

使用“yum list updates”命令列出所有软件包。这样,您就可以更好地了解要安装哪些软件包。然后运行更新命令

yum 更新

相关内容