在多个服务器上configuration部署

我在WEB群集中有多个服务器(尽pipe有IP,它们都是相同的configuration

你如何在configuration上在多服务器上部署更改?

我做新的configuration,然后创buildconfiguration每个服务器(放置正确的IP),然后:

  • 上传他们在每台服务器上,replace旧的(rsync通过SSH)
  • 在每个服务器上设置一个同时重新加载web服务器的工作(服务器使用ntp)。 – 这是通过脚本发出命令完成的(为了节省login时间)
  • 在为服务器重新加载之前添加一个作业 – 在服务器上有configuration的校验和testing) – 一个失败的通知

你怎么看这样的方法? 什么应该是“专业的方式:)?(我不说我的方式不工作…它的工作原理和节省我的时间不用于login每个networking服务器。

问候,

你可以使用任何现代的变化自动化工具(傀儡,厨师,cfengine,bcfg2,等等)。 他们中的任何一个都可以部署文件,并在pipe理的文件被修改时重新启动服务。

在过去的几年中,我在数个环境中取得了巨大的成功。

一旦你开始使用这个工具来完成所有工作,它就会logging你的stream程和基础设施。

通过git或svn之类的版本工具返回它,现在你有一个版本化的基础设施。

我一般同意bdha的答案 – 使用configurationpipe理工具来pipe理你的变化。 另一点我想要做的是,你应该尽可能地使用你的系统的包pipe理工具,不是一个configuration文件的东西。 pipe理一个安装了一系列软件包的系统比一个手动文件编辑系统(或者一系列通过木偶自动编辑文件的系统)要容易得多。

如果您的configuration文件永远不会更改,那么这些文件也可以包含在系统软件包中。 学习如何在系统的打包工具中构build软件包,以及如何在集中式存储库中将其打包,然后使用yum等工具来pipe理和安装它们。

还要仔细考虑你的软件推送系统。 很多人使用puppet或cfengine来做到这一点,但是也有一些更专业的工具可以随着环境的变大而更好地扩展。 这些types的工具的例子包括Capistrano和Pogo 。

如果你有大量的服务器,你应该看看木偶或厨师,他们是最好的解决scheme,将照顾你所有的要求,甚至重新加载服务器configuration一旦新的承认。

如果你发现有点矫枉过正,你可以用一个中央位置的一些交叉ssh键来创build一个脚本来推动configuration,如果我是你的话,我会使用这个中央repo上的mercurial或者bazaar来跟踪变化,并且能够回滚很容易万一事情变糟糕。

事实上,如果你有大量的服务器,Cfengine肯定是要走的路。 它每五分钟运行一次(而不是每一小时!)我一遍又一遍地听到别人说木偶不能很好地扩展。 在pipe理大量机器和准确理解其状态之间进行权衡。 这是不幸的,因为它的架构,所以很难绕过。 我还没有和厨师玩过,所以我不太了解它的全部潜力。