我正在尝试使用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.php和http://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 。