在负载平衡 Apache 机器上使用 mod_status 设置平衡器管理器

在负载平衡 Apache 机器上使用 mod_status 设置平衡器管理器

我正在设置一台运行 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>

我现在遇到两个问题:

  1. 我已经设置了 status=+H 选项,但是当我关闭 server1 上的 Web 服务时,它仍然试图将我发送到该服务器。这是因为我的机器上的 cookie 仍然希望我转到该服务器吗?我需要为 http 返回值设置健康检查吗?我现在有点迷茫了。如果我关闭整个服务器,它应该可以工作,但之后我必须下楼到服务器机房重新启动它 :)。

  2. 我无法让 balancer_manager 工作。当我访问时,http://virtualip/balancer-manager它会将我发送到其中一个 Web 服务器,然后 server1 上的 Web 服务器会告诉我该链接不存在。

对任何一个问题的任何帮助都将非常有帮助!

相关内容