所以,我目前正在将我的Web平台从单机重建为一组机器,并将使用Apache负载平衡来实现。但在继续之前,我有两个问题需要好的答案。我已经在Google和SO中搜索过,但没有找到什么好的答案。
我的设置将是一个Debian机器运行Apache负载平衡服务器(即具有mod_proxy的Apache),然后是任意数量的“从”机器,它们是平衡成员。所有这些都是VMWare机器内部的VPS,因此按需设置新的从机器将非常简单。
日志文件 第一个问题是日志文件。为了排除故障,我有时需要分析Apache的访问日志和错误日志。当负载均衡均匀分布(即我不知道是否会使用粘性负载平衡,任何主机可能可以随时处理任何请求)时,每个从Apache实例的日志文件也会如此。有没有办法将这些实时合并,使我的实时日志分析器可以查看所有主机的日志文件?我当然理解,在文件位于多个主机上时这样做可能很困难,所以有没有办法确保所有日志文件保存在一个服务器上?
我自己考虑了两件事情,但我非常感谢您的意见。
syslogd 首先是syslogd,其中几个主机可以写入一个记录主机。但是,我的当前设置中,Apache中的每个虚拟主机都有自己的日志文件。尽管可能可以以某种方式解决这个问题。我的主要用途是为了排除故障,而不是为每个主机保留单独的日志(尽管如果两个目标都能实现,那当然会是一个奖励)。
NFS 我接下来想到的是NFS,即在LAN上有一个NFS共享,每个从机器都可以写入相同的日志文件。我将继续假设这将是困难的,因为从机器1将打开日志文件,然后从机器2将无法写入它。
正如我所说,非常感谢您的意见,因为我感到陷入了如何解决这个问题的困境。
配置文件 这是另一件事情。每个从机器将响应每个请求,就像作为一个单一服务器一样。这就是整个想法。但是,如何更改Apache配置文件,添加虚拟主机,设置其他参数呢?如果我有十个或五十个从机器,怎么办?有没有办法确保所有这些从机器始终同步?我已经使用NFS导出使它们都具有相同的文件,但是我是否应该使用相同的方法处理配置文件?还是应该将它们作为某种存储库,然后使用rsync将它们复制到从机器上?一个问题是我在我的Web平台中构建了一个界面,用于编辑这些配置文件(即具有虚拟主机的文件),由于该操作将在一个从机器上进行,因此该文件的最新副本可能潜在地位于一个从机器上。
(Note: The original text contained no technical vocabulary or jargon, so there was no need to add any specialized terminology to the translation.)
我的设置将是一个Debian机器运行Apache负载平衡服务器(即具有mod_proxy的Apache),然后是任意数量的“从”机器,它们是平衡成员。所有这些都是VMWare机器内部的VPS,因此按需设置新的从机器将非常简单。
日志文件 第一个问题是日志文件。为了排除故障,我有时需要分析Apache的访问日志和错误日志。当负载均衡均匀分布(即我不知道是否会使用粘性负载平衡,任何主机可能可以随时处理任何请求)时,每个从Apache实例的日志文件也会如此。有没有办法将这些实时合并,使我的实时日志分析器可以查看所有主机的日志文件?我当然理解,在文件位于多个主机上时这样做可能很困难,所以有没有办法确保所有日志文件保存在一个服务器上?
我自己考虑了两件事情,但我非常感谢您的意见。
syslogd 首先是syslogd,其中几个主机可以写入一个记录主机。但是,我的当前设置中,Apache中的每个虚拟主机都有自己的日志文件。尽管可能可以以某种方式解决这个问题。我的主要用途是为了排除故障,而不是为每个主机保留单独的日志(尽管如果两个目标都能实现,那当然会是一个奖励)。
NFS 我接下来想到的是NFS,即在LAN上有一个NFS共享,每个从机器都可以写入相同的日志文件。我将继续假设这将是困难的,因为从机器1将打开日志文件,然后从机器2将无法写入它。
正如我所说,非常感谢您的意见,因为我感到陷入了如何解决这个问题的困境。
配置文件 这是另一件事情。每个从机器将响应每个请求,就像作为一个单一服务器一样。这就是整个想法。但是,如何更改Apache配置文件,添加虚拟主机,设置其他参数呢?如果我有十个或五十个从机器,怎么办?有没有办法确保所有这些从机器始终同步?我已经使用NFS导出使它们都具有相同的文件,但是我是否应该使用相同的方法处理配置文件?还是应该将它们作为某种存储库,然后使用rsync将它们复制到从机器上?一个问题是我在我的Web平台中构建了一个界面,用于编辑这些配置文件(即具有虚拟主机的文件),由于该操作将在一个从机器上进行,因此该文件的最新副本可能潜在地位于一个从机器上。
我意识到这是一篇冗长而复杂的文章,我很抱歉。我只是想确保我的问题的所有参数都被表达出来。
希望有人能够像以前一样帮助我!提前感谢你!
(Note: The original text contained no technical vocabulary or jargon, so there was no need to add any specialized terminology to the translation.)