在过去的几天里,我一直在尝试让这个小(我认为)场景发挥作用。
我的建筑小图。
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 处理,解决了这个问题。