Puppet:管理(大量)Apache VirtualHosts

Luk*_*404 9 configuration-management virtualhost puppet apache-2.2

我正在通过一般的配置管理学习我的方法,特别是使用puppet来实现它。我已经做了一些通用研究(也在 SF 上),现在我正在考虑 Apache VirtualHosts。

我们在两个系统上托管了许多LAMP网站(目前在数百个范围内):一个Apache2 / mod_php一个和一个MySQL一个 - 基本上与SF已经存在的另一个问题相反,他管理许多服务器,每个服务器都有很少的虚拟主机(如果实际上不是一个,我不知道)。我还没有在 puppet 中组合一个工作配置,但这应该不是问题,那里有很多 例子和食谱。

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

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

在每次运行 puppet 时都会运行所有这些检查,尤其是文件系统的检查(在网络服务器上),尤其是在将来系统会加载更多时,我是否会在增加数百个虚拟主机时遇到麻烦?(假设我们将 1000 到 2000 个网站范围作为每个服务器的合理最大值)。

有没有在网上这样做的经验?我用谷歌搜索但什么也没找到,也是因为在搜索“puppet”和“apache”时信噪比很低......

edg*_*ter 4

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

总结一下主题:

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

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

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

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