如何保持 Web 集群中的 Apache conf 文件同步

如何保持 Web 集群中的 Apache conf 文件同步

在负载均衡器后面的多个 Web 服务器之间保持 httpd.conf 和 php.ini 文件一致性的最佳做法是什么?

我可以定期 rsync 文件,或者编写自定义部署脚本。我还缺少什么其他选项?

答案1

理想情况下,您可以使用 Puppet 或其他类似工具(例如 cfengine)来设置配置管理服务器。

关于服务器配置,我建议的最佳做法一般是:

切勿登录计算机来更改其上的任何内容。始终在 [配置管理服务器] 上进行更改,并让更改传播出去“ (取自http://www.infrastructures.org/papers/bootstrap/bootstrap.html

谨致问候,亚历克斯

答案2

我们的 Web 节点背后有一个 NFS 集群。我们将 Apache 和 PHP 的默认配置文件位置符号链接到 NFS 共享上的共享副本。然后,一个非常简单的 shell 脚本会执行一些基本的日常工作(重建 Apparmor 规则等),然后在 Web 节点上进行迭代,首先触发一个,apache2ctl configtest然后触发apache2ctl graceful

其他想法:

  1. 简单的 shell 脚本包裹rsyncscp
  2. 对于较大的安装,木偶recipe 可以可靠地提供更新的配置文件,然后反弹 Apache。

答案3

svn 可用于提供版本控制和配置文件分发。也可以使用 git 或 bzr 等。

编辑“主”服务器上的文件,使用 svn 提交它们,然后可以在“从属”服务器上运行 cron 作业或 ssh 并执行“svn update”。

我倾向于使用 ssh,并设置无密码访问以允许“主”服务器在从属服务器上运行特定的 Makefile - Makefile 运行“svn update”,然后基于文件戳的依赖规则决定需要做什么其他事情(例如从文本生成散列数据库用户或组文件,从 nic 添加或删除 ip 地址,重新启动 apache 等等 - 任何时候,当您能够确定一系列操作依赖于文件更改和/或另一一系列操作是使用 make 来自动化该过程的理想选择)。

即使在“主”服务器上,一切都由 make 驱动。编辑一个或多个配置文件,然后运行 ​​make。Makefile 会确定需要做什么(svn commit、从源输入文件生成配置片段、“ssh make”到其他服务器等)。像这样使用 make 可确保每一步都按照正确的顺序完成,并且不会忘记任何步骤。并且使 svn 作为该过程的重要组成部分可确保每个更改都带有时间戳并在提交日志中进行解释。

当然,许多人会使用 puppet 或类似的东西来做到这一点。如果我从头开始,我可能也会这样做....但我已经这样做了很多年,早在 puppet 出现之前。在 puppet 之前就有类似的工具,但 puppet 是我见过的第一个看起来可能真的值得改变的工具...但很难证明改变一个只对某些东西有效的东西是合理的。好像它可能会发挥更好的作用。

答案4

目前,我在每个 Web 服务器上都放置了一个脚本,用于从共享中复制配置并更新配置信息以匹配本地服务器(IP 等)。虽然这对于 3 个服务器来说工作正常,但对于 10 个服务器来说就很烦人了(登录服务器、运行脚本、注销、冲洗、清洗、重复)。我建议使用一种解决方案(例如 puppet 和朋友),当您完成对本地文件的更改后,将更改推送到服务器。

相关内容