好的实践来更新服务器?

我有很多运行CentOS 5.*CentOS 6.*服务器,我想更新它们,但是有一些应用程序正在运行,我可能会崩溃这些应用程序,这使得我在写这篇文章时会考虑到这个问题。

你们推荐我做什么?

你应该瞄准的是:

  • 有一个自动的方式来build立/重build你的机器

  • 使用它来构build一个相同的testing环境(通常是虚拟机)

  • 有一套自动化的testing,可以确保一台机器正在做这个工作

  • 在升级之前和之后在testing环境中运行该自动化testing,然后在真实环境升级之前和之后再运行一次。

这一切都取决于能够快速和自动地build立你的机器,这是木偶/厨师和类似的步骤。我们使用vagrant和virtualbox的testing环境,这也让你安全地写新的木偶/厨师代码和testing太。

当你的testing通过一个以前是全新安装的新机器时,你知道什么时候自动化是“足够的”,最好没有用户干预。

哦,对于关键系统,使用故障转移对并首先更新被动节点(然后故障转移,如果testing通过,则更新以前的活动节点)。

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

1)使用一个完善的发行版的主要原因之一 – 特别是Centos(本质上是RHEL的副本 – 快照而不是滚动发行版)是任何更新都将保持向后兼容性 – 更新不会破坏任何东西

2)如果存储在磁盘上的代码被replace为不兼容的东西,那么在你尝试加载并运行新代码之前不应该有任何影响 – 很less的软件会在启动后执行任何延迟的dynamic链接 – 因此程序可能不会重新启动,但它们很可能会崩溃。

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

4)在内核补丁的情况下,您必须在应用补丁后重新启动机器 – 即您当前正在运行的代码将被停止

5)如果你有“大量的机器”,他们正在做任何有价值的事情,那么你应该有能力自己testing非关键任务系统的更新(vonbrand指出,你甚至不需要专用机器)。

使用您正在运行的应用程序在备用盒(或虚拟机)上尝试更新。 事先定义一系列testing,针对安装的版本运行testing并保存结果以供比较。

yum list installed你可以看到yum list installed哪些软件包, rpm -Va会给你一个rpm认为已经修改的软件包列表(出于一些奇怪的原因,它会给出很多误报),检查哪些configuration文件已经被修改,并保存它们。 寻找其他的外部configuration和本地修改。 确保你可以重build一个确切的副本,如果需要的话。

为每台机器设置kickstart文件,使它们保持最新,以便进行未来的迁移(或者在出现故障时移动机器,或创build活动高峰的镜像,或者…)更简单。

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

用“yum list updates”命令列出所有的软件包。 所以,你会更好地了解哪些软件包将要安装。 并运行更新命令

百胜更新