使用 Apache 2.4 设置负载均衡器

使用 Apache 2.4 设置负载均衡器

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

这是我在http配置文件文件:

<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

为了测试,我设置了三个虚拟机,一个用于负载均衡器,两个用于后端 Web 服务器。使用主办方文件中我在所有机器中引入了三个域:

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

pop.local是我的负载均衡器,另外两个是后端。info.php在每个后端上创建一个文件后,我可以通过输入http://pop1.local/info.php和来加载它们http://pop2.local。但是当我输入 时http://pop.local404 File not found会返回错误。

Apache 可以pop.local正常加载,就像没有Proxy balancer设置一样。它甚至可以毫无问题地提供其自己的本地文件。

有什么问题?我遗漏了什么吗?

[更新]

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

错误日志:

[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

答案1

这是一个可以正常工作的完整平衡器配置:

<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

相关内容