Puppet:管理(大量)Apache VirtualHosts

Puppet:管理(大量)Apache VirtualHosts

我正在学习配置管理的一般方法,并使用木偶来具体实现它。我已经做了一些一般性研究(也在 SF) 现在我正在考虑 Apache VirtualHosts。

我们举办了很多网站(目前有数百个)在两个系统上:Apache2/mod_php一和一个MySQL一 - 基本上相反SF 上已有另一个问题他管理着许多服务器,每个服务器都有几个虚拟主机(如果不是真的只有一个,我不知道)。我还没有在 puppet 中整理出一个可用的配置,但这应该不是问题,因为有许多 例子以及食谱。

除了明显的 apache 配置文件(我猜这里没有问题)之外,每个 vhost 都需要在 Web 服务器上创建一些目录并检查权限(例如,每个 vhost 的根目录包含一个文档根目录、一个专用的 tmp 目录、一个专用的 php 会话文件目录、可能的 SSL 证书等),以及在 MySQL 服务器上的用户 + 一个或多个数据库。

添加新的 vhost 需要 puppet 来创建它们,删除一个 vhost 需要 puppet 运行一些脚本来备份用户数据,然后从两个服务器中删除实时数据,而且每个 puppet 代理运行都会检查目录、数据库、权限等的存在。

当我将虚拟主机增加到数百个时,每次运行 Puppet 时都要进行所有这些检查,尤其是文件系统检查(在 Web 服务器上),尤其是将来系统加载更多时,我是不是自找麻烦?(假设我们的目标是每个服务器最多可容纳 1000~2000 个网站)。

网上有没有人有这方面的经验?我在谷歌上搜索过,但一无所获,因为成本很低信噪比当搜索“puppet”和“apache”时......

答案1

我怀疑管理大量 Apache 虚拟主机不会有问题,但我不能肯定地说。可接受的性能由您的业务需求决定。只有您才能决定它是否足够快。这里有一个关于减少 CPU 负载的不错的帖子:https://groups.google.com/forum/?fromgroups#!topic/puppet-users/sxtMvCnKnys[1-25]

总结一下这个话题:

  • 增加 Puppet 代理运行之间的延迟
  • 不要安排 puppet,只使用 puppet kick 或 mcollective 来触发运行
  • 安排 Apache 更改仅在特定时间发生。
  • 使用两个不同的环境(维护和生产)来管理事物。保持生产轻量级并使用维护进行更改。

以下是从 PuppetLabs 网站管理 apache 虚拟主机的示例:http://docs.puppetlabs.com/learning/definedtypes.html#an-example-apache-vhosts

设置和删除配置应该不成问题。最大的问题是删除 Web 应用程序/网站的数据文件。为此,我建议使用共享存储,如 NFS/AFS。如果您不使用共享存储,请确保用户生成的数据保持完整、备份或迁移到新服务器。

我怀疑您处于大规模托管的情况,例如网络托管公司,因此我建议不要将站点单个站点名称编码到您的 puppet 清单中。为此,我建议使用 Hiera <http://puppetlabs.com/blog/first-look-installing-and-using-hiera/。Hiera 允许您使用单独的方式来存储虚拟主机到真实服务器映射的列表。您可以将平面文件或数据库与 Hiera 结合使用。遗憾的是,我对 Hiera 了解不够,无法指导您如何设置您可能需要的多级 Hiera 数据结构,但我至少可以为您指出 Hiera 的大致方向。

相关内容