您认为保持数十个(甚至数百个)debian服务器最新的最佳实践是什么?请记住:
- 有服务器组(即,相同的Web服务器,DB服务器等)
- 可能有几个Debian问题(lenny,etch)
- 在所有服务器上运行循环并进行apt-get update &&升级是不可接受的(因为这是我目前正在做的事情:))这应该比这更好!
当前,当我最终完成所有升级时,将发布一个新的安全更新,而我必须重新做一遍。
在此先感谢serverfault社区!
您认为保持数十个(甚至数百个)debian服务器最新的最佳实践是什么?请记住:
当前,当我最终完成所有升级时,将发布一个新的安全更新,而我必须重新做一遍。
在此先感谢serverfault社区!
Answers:
我使用apt-dater来管理所有Debian Box的升级。似乎做得足够好了。尚未尝试将其扩展到数百个主机。
Google用debmarshal解决了这个问题:
http://code.google.com/p/debmarshal/
通过它,您可以从上游存储库批准软件包以将其安装在生产主机上。
然后,您可以在全自动模式下运行cron-apt。
这是一个介绍性视频:
我们正在尝试使用puppet来升级非必需软件包上的安全修复程序。我们将运行apticron以电子邮件方式发送每个服务器的更新列表,然后每天运行一个脚本,将这些更新合并到一个manifest清单文件中,该which清单文件将提供每个发行版的软件包和版本。然后,这将更新单个服务器上的一堆文件,并在软件包需要升级时启动升级脚本。这工作得很好,但是我们没有像我想要的那样对它进行过多的测试。该方案确实解决了Puppet的局限性,即没有在多个位置定义相同的资源。
我也不喜欢对MySQL或PostgreSQL等东西进行自动升级,因为随机更新可能会在一天的中间关闭服务。这些仍然需要手动更新。
Spacewalk和Debmarshall看起来确实是我们人偶计划的合适替代品。
我不确定您期望哪种类型的解决方案。您可能知道cron工作,但是由于需要人工干预,我不会盲目更新系统(这就是为什么他们付钱给您这样做,对吗?)
如果您拥有完全相同的系统,则可以考虑使用rsync之类的方法来引入差异,但是要弄清楚哪些文件不进行rsync可能会很困难,并且在服务运行时我不会这样做。至少将更新脚本设置为管理重启服务和合并配置文件差异。
也许如果您通过执行apt-get命令解释问题出在哪里,我们可以看到您想要避免的事情。
如果问题出在带宽和下载时间上,也许您应该设置一个盒子作为本地Debian存储库。关于如何做到这一点有Debian指南。
以下是一些有关如何最大程度地减少需要更新的内容的提示。
安装Debian时,除非确实需要在该控制台上使用X,否则不要安装Desktop。大多数服务器不需要安装X。这可以显着减少系统上的软件包数量,然后您不需要更新那么多软件包。
检查sources.list是否仅包含您真正需要的存储库。如果您尝试过一些存储库而忘记了它,那么您可能会带来不需要的更新。
如果您在生产服务器上盲目进行更新时遇到麻烦,请在有重大更新(4.0到5.0)时仔细阅读Debian升级指南。如果按照升级说明进行操作,这些操作将非常顺利。它不像运行apt-get dist-upgrade并走开那样容易。有时,在说明中甚至有关于何时运行智能而不是apt-get的指针-它们之间存在细微的差异。
您现在是否将此工具称为“舞者的外壳”?我喜欢它,我用它。但我不知道您是否可以将其用于如此多的主机。也许你可以尝试...
http://www.netfort.gr.jp/~dancer/software/dsh.html.en
他在资料库中。
群集SSH。您登录到所有服务器并为它们提供完全相同的命令,因此您也可以对对话框做出反应。如果一台服务器还有其他问题,只需单击该服务器,它将是唯一可以响应的服务器。
我用它来将25个Web服务器从etch升级到lenny。像魅力一样工作。
Cluster ssh是一个很好的建议。
debmarshal还不是debian的一部分-我什至不确定它是否将是一个软件包-似乎是一个完全不同的系统,带有专门的存储库。正如发言者所说,这目前对用户是敌对的,而不是用户友好的。
至少在Web界面中,Spacewalk似乎是Redhat Network的克隆。使用Redhat Network更新系统的结果很糟糕。一次,它没有任何明显的原因挂起,导致服务中断。之后我立即进行了yum更新,它处理得很好,所以我只能假设问题出在RHN方面。我不喜欢RHN更新的另一件事是您不知道更新何时发生,以观察问题。