小规模自动化Linux部署和配置管理 - 值得吗?

小规模自动化Linux部署和配置管理 - 值得吗?

我即将部署约 25 台服务器运行Debian。这些机器将扮演不同的角色 - Web 服务器、Java 应用服务器、代理、MySQL 盒。未来环境可能不会增长太多 - 未来 2 年内可能增加 2-5 台服务器。

我可能会用用于系统安装,但我不确定是否值得添加CF引擎或者木偶对于如此小的规模进行集中配置管理。

对于这种规模的环境来说,配置管理有意义吗?

答案1

我建议使用 Debian 预播的混合方案,即向安装程序提供一个文本文件,回答它所询问的所有问题,然后使用 Puppet。

使用预置而不是 FAI 的原因在于您不必先设置映像并处理使其保持最新状态。您最终的安装将非常类似于您手动完成所有操作的结果。当您安装新版本时,您必须使用更改更新配置文件,而不必重建新映像。

配置管理工具在您拥有多台执行相同角色且希望它们完全相同的服务器(例如 Web 服务器集群)时特别有用。但是,它们对于配置所有服务器的基本安装也很有用。您将需要在所有服务器上安装特定的软件包,例如 ntpd 和 MTA。您将需要更改所有服务器上的配置文件。另一个好处是,您可以将清单保存在类似 subversion 的文件中,并记录服务器上的更改内容、更改者及其原因。如果服务器发生故障并且您需要快速重建服务器,配置管理也可以成为救星。安装操作系统(使用 FAI 或预置),安装 puppet,然后就可以恢复到之前的状态。显然,您需要保留数据备份。

配置管理需要专注,以确保您仅使用它进行更改,并且需要前期成本进行设置,但是一旦您拥有有效的设置,您就不会后悔。

Puppet 是你提到的两个工具中比较现代的一个。我真心向所有人推荐它。配置是一种声明性语言,易于构建更高级别的结构。它还有一个非常大的社区,总是有人欢迎在邮件列表或 IRC 频道上提供帮助。

答案2

对于任何拥有超过 2-3 个盒子并且具有“模板”或执行特定角色的服务器概念的环境,我建议使用 CFengine。

为什么?简单地说,它可以减少错误,你有一个工具可以确保文件/目录权限正确的环境中的任何地方,当您推出更多服务器时,该工具可以处理所有事情并且不会犯任何错误。

相比之下,即使是一位熟练的系统管理员,在十二小时轮班结束时推出网络服务器时,事情已经出了问题......他们会记得那个需要放在 /etc/random/location/foo/bar 中的讨厌的小配置文件吗?否则,应用程序将默默地无法做一些相当重要的事情,比如向客户开具账单?:)

CFengine 等工具也是执行环境范围安全更新的好方法。将 Nagios 配置 (NRPE) 放到所有盒子上也是小菜一碟。无论您要处理五个盒子还是五个盒子你将要使用 CFengine 节省时间。

可能值得注意的是,我的环境稍微大一些,但是我也为比您提到的更小的环境部署了 CFengine,因此推荐!

您的下一个问题可能是 CFengine 还是 Puppet?这是一个更难的决定,我一直选择 CFengine,因为(在早期)Puppet 还不够成熟,特别是在错误日志方面……现在我真的不确定了——玩一玩看看?回顾我使用 Puppet 时遇到的具体问题,它们与 SSL 证书有关,痛苦地回想起我花了 3 个小时在 irc.freenode.net/#puppet 上诊断服务器<->客户端连接问题,并进行了大量 RTFM 和 RTFS仅有的发现一个错误,没有被记录下来,卢克说,“啊,这真的很难修复”,而且从来没有修复过。:(

答案3

除了 cfengine 和 puppet,还有厨师。我强烈建议使用其中一种工具,因为事情总是会朝着意想不到的方向发展。这有助于在集中位置管理事物。

重要的是要认识到,你很可能无法做到一切,但如果你至少能做到 90%,那就算是一个开始。此外,这很有趣,从长远来看会让你的生活更轻松。最后,这是一项很好的技能,可以让你继续前进。

答案4

即使对于小型网站来说,这也是值得的。随着网站的发展,一切都取决于一致性。而且你知道你的网站会发展。最好在网站还很小的时候就开始使用。Cfengine 很棒。尤其是版本 3,它可以处理该领域的所有包管理器,而且它非常轻量和安全,而且“很好用”。Puppet 并没有实现它所声称的功能。还没有尝试过 Chef。

cfengine 相对于其他引擎的优势在于它非常轻量,但实际上功能更多。它的安全性类似于 ssh,而不是 puppet 使用的 Web 证书。当我告诉我的老板关于 cfengine 的事情时,他认为这是科幻小说 :) 如果您正在寻找一些未来的东西,请尝试阅读 Marc Burgess 的一些研究论文。很酷的东西。

相关内容