使用 Apache 服务器对多个 PHP 站点和 JSP 站点进行负载平衡

使用 Apache 服务器对多个 PHP 站点和 JSP 站点进行负载平衡

在过去的几天里,我一直在尝试让这个小(我认为)场景发挥作用。

我的建筑小图。

      request
         |
     ApacheLB
         |
    |---------|
 Apache1   Apache2
 Tomcat1   Tomcat2

到目前为止,我可以使以下工作正常进行,可以为我的 Apache 服务器集群提供服务,也可以为我的 Tomcat 服务器集群提供服务。

Apache 集群处理 PHP 站点并使用粘性会话(效果很好),而 Tomcat 集群处理 JPS 站点,效果也很好。

我需要的是当请求到达我的负载均衡器(ApacheLB)并且请求的主机以“admin”开头时,Tomcat 集群将由 Apache 集群接管其他请求处理。

两个集群都用于处理多个站点。以下是一些示例。

http://www.company1.com
http://admin.company1.com

http://www.company2.com
http://admin.company2.com

我在 Windows 下使用 Apache 2.4、Tomcat 7 和 mod_proxy_balancer。

我的配置。

Apache LB
<VirtualHost *:80>
Header add Set-Cookie "BALANCEID=lb.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED

ProxyRequests Off
ProxyPreserveHost On

ProxyPass /balancer-manager !
ProxyPass / balancer://lb/ stickysession=BALANCEID nofailover=Off
ProxyPassReverse / http://windows-server1:8009/
ProxyPassReverse / http://windows-server2:8009/

<Proxy balancer://lb>
    BalancerMember http://windows-server1:8009/  route=node1 min=3 max=5
    BalancerMember http://windows-server2:8009/  route=node2
    ProxySet lbmethod=byrequests
</Proxy>

<Location /balancer-manager>
    SetHandler balancer-manager
    AuthType Basic
    AuthName "Balancer Manager"
    AuthUserFile "C:/etc/lb/conf/.htpasswd"
    Require valid-user
</Location>

</VirtualHost>

主持人
<VirtualHost *:8009>
DocumentRoot "c:/etc/www/test"
ServerName www.company1.com
ServerAlias company1.com

<Directory "c:/etc/www/www.company1.com">
    AllowOverride All
    Order Allow,Deny
    Allow from all
    Require all granted
</Directory>

</VirtualHost>

任何帮助都非常感谢!谢谢!

谨致问候罗伯特

答案1

来自评论

通过在不同端口上创建负载均衡器并由 DNS 处理,解决了这个问题。

相关内容