在 Apache2 服务器之间共享配置指令的最佳选择是什么。这是实现稳定负载平衡所必需的。最重要的指令是定义虚拟主机的指令。
任何形式的帮助都将不胜感激。
答案1
我们将一个主机定义为“主主机”,并且(按照现在大多数发行版)虚拟主机配置保存在文件夹 /etc/apache2/vhost.d/ 中,并为每个虚拟主机分配一个文件。
例如
www.example.com.conf
customers.example.com.conf
suppliers.example.com.conf
... and so on..
然后,cron rsync 将“主服务器”复制到其他服务器。
答案2
有多种方法可以解决这个问题:
- 将配置放在集中存储上,例如 NFS 或 CIFS。
- 使用版本控制系统(git、svn 等)存储配置并在 Web 服务器上检查它们
- 使用 rsync 或 scp 将配置从一台服务器同步到另一台服务器
您可以考虑将第二个选项与一些配置工具(如 Puppet 或 CFengine)结合起来,以便在中央配置发生变化时重新加载 Apache。
答案3
我对我们的开发、暂存和生产服务器使用统一的配置。它们的大部分配置都相同。如果它们不同,我会将差异放入虚拟主机定义或<IfDefine>
部分中,例如:
<IfDefine DEVELOPMENT>
...
</IfDefine>
每个服务器都以命令行开关启动,该开关指示它是哪个服务器。例如,在开发服务器上,我输入
export APACHE_ARGUMENTS="-DDEVELOPMENT"
放入 /etc/apache2/envvars(这是针对 Debian 的 - 对于 RedHat,您需要放入OPTIONS='-DDEVELOPMENT'
/etc/sysconfig/httpd)。因此,除了虚拟主机之外,开发服务器还拥有部分中的所有配置<IfDefine DEVELOPMENT>
。
当配置发生变化时,我会将更改提交给版本控制(通常在开发中),并将其推送到其他主机。