![在负载平衡 Apache 机器上使用 mod_status 设置平衡器管理器](https://linux22.com/image/615649/%E5%9C%A8%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%20Apache%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8%20mod_status%20%E8%AE%BE%E7%BD%AE%E5%B9%B3%E8%A1%A1%E5%99%A8%E7%AE%A1%E7%90%86%E5%99%A8.png)
我正在设置一台运行 Apache 的 Centos 机器,用于在两个应用程序 Web 服务器之间进行负载平衡。通常我会使用 F5(或其他硬件 LB)来完成所有这些工作,但客户不想再花钱了,所以我将它与 VM 放在一起。我已经让它在两台机器之间进行常规循环,但我只需要第二台服务器进行故障转移。请参阅下面的虚拟主机:
<VirtualHost *:80>
Options +FollowSymLinks
Include conf/virtualhosts.conf
RewriteEngine on
RewriteLogLevel 9
RewriteLog /var/log/httpd/rewrite_log
RewriteRule ^/?h/(\.[0-9]+)/(string/.*)$ balancer://mycluster/$2?h=$1 [P,QSA]
Header add Set-Cookie "h=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_WORKER_ROUTE
<Proxy balancer://mycluster/>
Order deny,allow
Allow from all
BalancerMember http://server1:8080 route=0
BalancerMember http://server2:8080 route=1 status=+H
</Proxy>
ProxyPreserveHost on
ProxyPass / balancer://mycluster/ stickysession=h nofailover=On
ProxyPassReverse / balancer://mycluster/
ProxyPass /balancer-manager !
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from all
</Location>
</VirtualHost>
我现在遇到两个问题:
我已经设置了 status=+H 选项,但是当我关闭 server1 上的 Web 服务时,它仍然试图将我发送到该服务器。这是因为我的机器上的 cookie 仍然希望我转到该服务器吗?我需要为 http 返回值设置健康检查吗?我现在有点迷茫了。如果我关闭整个服务器,它应该可以工作,但之后我必须下楼到服务器机房重新启动它 :)。
我无法让 balancer_manager 工作。当我访问时,
http://virtualip/balancer-manager
它会将我发送到其中一个 Web 服务器,然后 server1 上的 Web 服务器会告诉我该链接不存在。
对任何一个问题的任何帮助都将非常有帮助!