管理许多CentOS服务器的软件包更新的良好实践


13

作为工作的一部分,我使用主要的up来管理数十台CentOS 5服务器。我们大约有一半的服务器具有标准化的设置,可以托管各种django站点,而其余的则是大量的应用程序。

我正在逐步整理我们的托管做法,现在我要弄清楚如何在操作系统级别管理安全更新。我很警惕,只是想做一个cron工作,yum -y update但又不想及时浏览每台服务器并检查每个程序包是否有可用的更新,因为这会花费一些时间。

因此,我想知道是否有任何好的捷径或工作方法可以最大程度地减少涉及的风险减少我需要花费的时间。或者换句话说,是否有任何工具或实践可以在保持控制的同时使很多工作自动化。

到目前为止,我已经决定要执行的步骤:

  • 禁用所有第三方存储库并设置我们自己的存储库,以便我可以控制在那里进行的更新。
  • 我们为(大多数)生产服务器提供了分级服务器,可以在其中进行测试(但是多少测试就足够了?)

还要注意,我已经研究了yum安全插件,但是它在CentOS上不起作用

那么,如何管理大量运行异构应用程序的CentOS服务器的更新?


2
好问题。我们一直希望了解我们的软件包管理/更新过程。你看过太空漫步吗?自从最初发行以来,我还没有检查过它,但是也许值得再看一下。
Belmin Fernandez 2011年

CentOS对yum安全插件的支持很大。我已经询问过几次,但没有太多答案。
Stefan Lasiewski 2011年

令人遗憾的是,看起来Scientific Linux也不支持yum-plugin-security
Stefan Lasiewski 2011年

Answers:


2

在我的大多数环境中,通常使用kickstart和安装后脚本来启动主系统,并在该时刻进行更新。我通常会有一个本地存储库,该存储库每天或每周与CentOS镜像同步。在安装时,我倾向于将内核程序包冻结为任何当前状态,并分别或根据需要更新程序包。通常,我的服务器都具有外围设备,这些外围设备的驱动程序与内核版本密切相关,因此需要考虑这一点。

CentOS 5已经成熟到不需要持续更新的程度。但也请记住,CentOS 5即将结束。更新速度有所放慢,并且更新的性质与错误修正更为一致,而与主要功能的更改较少。

因此,在这种特定情况下,您可以做的第一件事就是构建本地镜像/存储库。使用现有的配置管理来控制对第三方存储库的访问。也许安排策略来更新关键的或面向公众的服务(ssh,http,ftp,dovecot等),其他所有内容都需要测试,但是我感觉到大多数环境都不能在完全更新/修补的系统上运行。


1

有很多工具可以帮助您解决这个问题!一般情况下,软件包系统以及哪些软件包到达何处都由配置管理来处理。这些工具通常不仅涵盖yum和rpm,而且还可以节省您的时间并避免许多麻烦!

我最熟悉的工具是puppet,我使用它来管理环境中的几乎每个配置。以下是一些专门用于管理yum的p示例:

http://people.redhat.com/dlutter/puppet-app.html

当前有许多配置管理工具可用,它们具有很大的用户组:

在环境中实施这些将增加您的寿命。它减少了配置不当的系统带来的麻烦,并且易于升级/更新。这些工具中的大多数还可以提供一些审核级别的功能,从而可以大大减少配置错误的维修时间。

关于您有关测试的问题,我一直在使用一个过渡环境,我们将一些客户负载(通常是beta客户或一小部分生产流量)定向到该环境。在将其部署到生产环境之前,通常让该集群至少运行几天(长达一周)(取决于更改的严重性)来运行新代码。通常,如果您尝试找出大多数错误可以发现多长时间,则我发现此设置最有效。在频繁使用的系统中,这可能要花费数小时的时间,在大多数环境中,我见过一个星期的时间足以发现登台/ QA中甚至不常见的错误。

关于测试的一个非常重要的部分是数据/使用的复制。您提到您拥有大多数生产硬件的暂存版本。他们还具有生产数据的相同副本吗?您可以针对它重播任何生产负荷吗?您甚至可以使用流量镜像使它成为生产集群的一部分吗?通常,这将成为企业愿意在测试/ QA上花费的资源量之间的直接权衡。测试越多越好,请不要自我限制(在合理的范围内),看看企业将支持什么(然后找到一种方法来提高10%)。

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.