所以,我目前正在将我的网络平台从一台机器重建为一个机器集群,我将使用Apache负载平衡来实现这一点。但是我有两个问题,我需要一个很好的答案才能继续。我在谷歌搜索并搜索过,但没有找到任何好的东西。
我的设置将是一台运行Apache负载平衡服务器的Debian机器(即带有mod_proxy的Apache),然后是任意数量的“奴隶”机器,它们是平衡成员。所有这些都是VMWare机器内的VPS,因此根据需要设置新的从站将是微不足道的。
日志文件 第一个问题是日志文件。为了解决我的平台问题,我有时需要从Apache分析日志文件,包括访问日志和错误日志。当负载均匀分布时(即我不知道我是否甚至会使用粘性平衡,任何主机都可能随时处理任何请求),每个从属Apache实例的日志文件也是如此。有没有办法整合这些 live ,这意味着我的实时日志分析器可以看到来自所有主机的日志文件?我当然明白,当文件位于多个主机上时这样做会很困难,那么是否有办法确保所有日志文件都保存在一台服务器上?
我自己在想两件事,但我非常感谢你的意见。
的syslogd 第一个是syslogd,其中有几个主机可以写入一个日志记录主机。这个问题是在我当前的设置中,apache中的每个虚拟主机都有自己的日志文件。这可能会以某种方式修复。我的主要用途是进行故障排除,而不是为每个主机保留单独的日志(尽管如果两个目标都可以满足,那肯定会是奖励)。
NFS 我的下一个想法是关于NFS,即在LAN上具有NFS共享,其中每个从属设备可以写入相同的日志文件。我将继续并假设这将是困难的,因为slave 1将打开日志文件,然后slave 2将无法写入它。
正如我所说,我非常感激你的意见,因为我觉得自己陷入了解决这个问题的困境。
配置文件 这完全是另一回事。每个从站都将响应每个请求,就像充当单个服务器一样。这就是整个想法。但是如何更改apache配置文件,添加虚拟主机,设置其他参数呢?如果我有十个奴隶,或五十个怎么办?有没有办法确保所有这些奴隶始终保持同步?我已经在使用NFS导出来确保它们都具有相同的文件,但是我应该对配置文件使用相同的方法吗?或者我应该将这些作为某种形式的存储库,然后使用rsync将它们复制到从属服务器?一个问题是我在我的网络平台上构建了一个界面来编辑这些配置文件(即带有虚拟主机的文件),并且由于该操作将在其中一个从属设备上进行,因此该文件的最新副本可能是在一个奴隶身上。
我意识到这是一个漫长而狡猾的帖子,我道歉。我只想确保表达问题的所有参数。
我希望有人可以帮助我,就像你以前一样!提前谢谢!
答案 0 :(得分:5)
我建议不要使用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
在网络服务器上的rsyslog.conf中:
local7.* @<remote host ip>
在远程主机上的rsyslog.conf中:
local7.* /var/log/webfrontends.log;precise
对于Apache配置文件,我们使用NFS
apache2.conf
是指向远程文件的链接(如果需要,可以指定不同机器的不同文件),apache2.conf
我们使用Include
指令读取特定网站配置(如果需要,可以使用不同机器的不同目录) )
在NFS服务器上,NFS导出的目录/NFS_EXPORT/etc/apache2/
包含:
- webserver1_apache2.conf
- webserver2_apache2.conf
- webserver1_vhosts (dir)
- webserver2_vhosts (dir)
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
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
如果您的所有网络服务器在硬件规格方面都相同并且提供相同的网站/应用程序,则无需区分配置。
当然,一旦修改配置,您将需要一个脚本或其他机制来重新启动所有服务器上的apache。 此外,升级您的apache2软件可能会非常棘手,除非您具有对NFS导出的root访问权限,因为通常您的软件包管理系统会抱怨无法修改某些配置文件。
答案 1 :(得分:4)
NFS无法帮助您处理日志文件,原因如上所述。您应该使用syslogd(或Splunk之类的其他解决方案)来集中日志记录。包含有关日志条目来自哪个主机的信息非常简单,因此您可以在进行故障排除时将其下载到每个主机数据。
配置文件:您需要集中它们(“主”副本),或者有办法将在任何服务器上进行的更改分发给所有其他服务器。我建议将集中化作为更简单的方法。 NFS将在此处完成工作,或者,如您所建议的那样,NFS将从中定期更新所有主机的存储库。这里有很多选项,一直运行到版本控制(SVN,git等)甚至配置服务器(Chef等)。
请注意,从单个服务器迁移到群集有很多含义。在上述两种情况下(日志记录,配置文件),如果天真地完成,有可能引入单点故障。既然你已经拥有了(一台服务器),你就不会变得更糟,但你应该尝试了解并计划你可能需要回应的故障情况。
答案 2 :(得分:0)
使用为作业构建的工具--Puppet旨在管理多个服务器上的配置文件。有一个开源工具,或者您可以获得他们的企业版..
puppetlabs.com