San*_*man 9 apache logging nfs load-balancing
所以,我目前正在将我的网络平台从一台机器重建为一个机器集群,我将使用Apache负载平衡来实现这一点.但是我有两个问题需要在继续之前得到一个好的答案.我在谷歌搜索并搜索过,但没有找到任何好的东西.
我的设置将是运行Apache负载均衡服务器(即Apache加上mod_proxy的),然后任意数量的"从"设备,即正在平衡成员的一个的Debian机.所有这些都是VMWare机器内的VPS,因此根据需要设置新的从站将是微不足道的.
日志文件 第一个问题是日志文件.为了对我的平台进行故障排除,我有时需要从Apache分析日志文件,包括访问日志和错误日志.当负载均匀分布时(即我不知道我是否甚至会使用粘性平衡,任何主机都可能随时处理任何请求),每个从属Apache实例的日志文件也是如此.有没有办法整合这些实时,这意味着我的实时日志分析器可以看到来自所有主机的日志文件?我当然明白,当文件位于多个主机上时这样做会很困难,那么是否有办法确保所有日志文件都保存在一台服务器上?
我自己在想两件事,但我非常感谢你的意见.
syslogd 第一个是syslogd,其中有几个主机可以写入一个日志记录主机.这个问题是在我当前的设置中,apache中的每个虚拟主机都有自己的日志文件.这可能会以某种方式修复.我的主要用途是进行故障排除,而不是为每个主机保留单独的日志(尽管如果两个目标都能满足,那肯定会是一个奖励).
NFS 我的下一个想法是关于NFS,即在LAN上有一个NFS共享,每个从属设备可以写入同一个日志文件.我将继续并假设这将是困难的,因为slave 1将打开日志文件然后slave 2将无法写入它.
正如我所说,你的意见非常受欢迎,因为我觉得我陷入了解决这个问题的困境.
配置文件 这是另一回事.每个从站都将响应每个请求,就像充当单个服务器一样.这就是整个想法.但是如何更改apache配置文件,添加虚拟主机,设置其他参数呢?如果我有十个奴隶,或五十个怎么办?有没有办法确保所有这些奴隶始终保持同步?我已经在使用NFS导出来确保它们都具有相同的文件,但是我应该对配置文件使用相同的方法吗?或者我应该将这些作为某种形式的存储库,然后使用rsync将它们复制到从属服务器?一个问题是我在我的网络平台上构建了一个界面来编辑这些配置文件(即带有虚拟主机的文件),并且由于该操作将在其中一个从属设备上进行,因此该文件的最新副本可能是在一个奴隶身上.
我意识到这是一个漫长而笨拙的帖子,我道歉.我只是想确保表达我问题的所有参数.
我希望有人可以帮助我,就像你以前一样!先感谢您!
我建议不要使用NFS进行日志记录,因为它可能是一个真正的性能杀手.而是使用rsyslog启用远程日志记录.在您中,apache2.conf您可以设置包含VirtualHost名称的LogFormat,然后将日志传递给rsyslog,告诉它将输出写入远程主机.
在apache2.conf中:
LogFormat "%v %{X-FORWARDED-FOR}i %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
CustomLog "|/usr/bin/logger -t apache2 -p local7.info" vhost_combined
Run Code Online (Sandbox Code Playgroud)
在webserver上的rsyslog.conf中:
local7.* @<remote host ip>
Run Code Online (Sandbox Code Playgroud)
在远程主机上的rsyslog.conf中:
local7.* /var/log/webfrontends.log;precise
Run Code Online (Sandbox Code Playgroud)
至于Apache配置文件,我们使用NFS.
apache2.conf是一个远程文件的链接(如果需要,不同的机器的不同文件),apache2.conf我们使用一个Include指令来读取特定的站点配置(如果需要,不同的机器不同的目录)
在NFS服务器上,NFS导出的dir /NFS_EXPORT/etc/apache2/包含:
- webserver1_apache2.conf
- webserver2_apache2.conf
- webserver1_vhosts (dir)
- webserver2_vhosts (dir)
Run Code Online (Sandbox Code Playgroud)
双方webserver1_apache2.conf并webserver2_apache2.conf含有Include "/etc/apache2/vhosts"
在WebServer 1上
ln -s /NFS_EXPORT/etc/apache2/webserver1_apache2.conf /etc/apache2/apache2.conf
ln -s /NFS_EXPORT/etc/apache2/webserver1_vhosts/ /etc/apache2/vhosts
Run Code Online (Sandbox Code Playgroud)
在WebServer 2上
ln -s /NFS_EXPORT/etc/apache2/webserver2_apache2.conf /etc/apache2/apache2.conf
ln -s /NFS_EXPORT/etc/apache2/webserver2_vhosts/ /etc/apache2/vhosts
Run Code Online (Sandbox Code Playgroud)
如果您的所有Web服务器在硬件规格方面都相同并且提供相同的站点/应用程序,则无需区分配置.
当然,一旦修改配置,您将需要一个脚本或其他机制来重新启动所有服务器上的apache.此外,升级您的apache2软件可能会非常棘手,除非您具有对NFS导出的root访问权限,因为通常您的包管理系统会抱怨无法修改某些配置文件.
NFS 不会帮助您处理日志文件,正是出于您上面描述的原因。您应该使用 syslogd(或 Splunk 等其他解决方案)来集中日志记录。包含有关日志条目来自哪个主机的信息很简单,因此在故障排除时您仍然可以筛选到每个主机的数据。
配置文件:您需要集中它们(“主”副本),或者有一种方法将任何服务器上所做的更改分发给所有其他服务器。我建议集中化作为更简单的方法。NFS 将在这里完成这项工作,或者按照您的建议,在一个存储库中完成所有主机的定期更新。这里有很多选项,一直运行到版本控制(SVN、git 等)甚至配置服务器(Chef 等)。
请注意,从单个服务器迁移到集群有很多影响。在上述两种情况(日志记录、配置文件)中,如果不小心完成,就有可能引入单点故障。由于您已经拥有了(一台服务器),因此您的情况并不会更糟,但您应该尝试了解并计划可能需要响应的故障场景。
| 归档时间: |
|
| 查看次数: |
5473 次 |
| 最近记录: |