使用Apache 2.4设置负载均衡器

我正在尝试使用Apache 2.4设置负载平衡器,但是我无法使其工作。

这是我在我的http.conf文件中写的:

<Proxy balancer://pop> BalancerMember http://pop1.local/ loadfactor=1 BalancerMember http://pop2.local/ loadfactor=1 ProxySet lbmethod=byrequests </Proxy> 

这是加载的Apache模块的列表:

核心mod_so http_core mod_authn_file模块事件mod_authn_core mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_core mod_access_compat mod_auth_basic mod_watchdog mod_reqtimeout mod_filter mod_mime mod_log_config mod_env mod_headers中mod_setenvif mod_version mod_proxy的mod_proxy_connect mod_proxy_ftp模块mod_proxy_http mod_proxy_fcgi mod_proxy_scgi mod_proxy_wstunnel的mod_proxy_ajp mod_proxy_balancer的mod_proxy_express mod_slotmem_shm mod_lbmethod_byrequests mod_lbmethod_bytraffic mod_lbmethod_bybusyness mod_lbmethod_heartbeat mod_unixd mod_heartmonitor mod_status的mod_autoindex mod_dir mod_alias中的mod_rewrite mod_php5

为了testing,我设置了三个虚拟机 ,一个用于负载平衡器,另外两个用于后端Web服务器。 使用hosts文件我在所有机器中引入了三个域:

 192.168.0.100 pop.local 192.168.0.101 pop1.local 192.168.0.102 pop2.local 

pop.local是我的负载平衡器,另外两个是后端。 在每个后端创build一个info.php文件,我可以加载他们inputhttp://pop1.local/info.phphttp://pop2.local 。 但是,当我键入http://pop.local 404 File not found错误返回。

pop.local上的Apache正常加载,就好像没有设置Proxy balancer 。 它甚至可以在没有问题的情况下自己的本地文件。

有什么问题? 我错过了什么吗?

[UPDATE]

这里是我的日志文件的内容:

error_log中:

 [Wed Oct 02 02:40:55.530051 2013] [lbmethod_heartbeat:notice] [pid 2179:tid 140142625933120] AH02282: No slotmem from mod_heartmonitor [Wed Oct 02 02:40:55.541737 2013] [mpm_event:notice] [pid 2179:tid 140142625933120] AH00489: Apache/2.4.6 (Unix) PHP/5.5.1 configured -- resuming normal operations [Wed Oct 02 02:40:55.541768 2013] [core:notice] [pid 2179:tid 140142625933120] AH00094: Command line: '/usr/local/apache2/bin/httpd' [Wed Oct 02 02:42:04.170782 2013] [:error] [pid 2615:tid 140142199158528] [client 192.168.0.81:55732] script '/usr/local/apache2/htdocs/info.php' not found or unable to stat 

这是一个完整的平衡器configuration应该工作:

 <Proxy balancer://pop> BalancerMember http://pop1.local/ loadfactor=1 BalancerMember http://pop2.local/ loadfactor=1 ProxySet lbmethod=byrequests </Proxy> ProxyPass / balancer://pop/ 

如文档中所述 ,如果ProxyPass的第一部分以/结尾,则第二部分也需要以/结尾。

如果第一个参数以/结尾,那么第二个参数也应该以/结尾,反之亦然。 否则,由此产生的请求到后端可能会错过一些需要的斜线,并不提供预期的结果。

您还需要确保ProxyRequests已设置为off