问题:
使用apache的proxy_mod来实现tomcat负载均衡,配置如下,
问题是每次访问http://www.bbs.com/test.jsp的jsessionid都不同,没有实现stickysession
httpd.conf:
- ProxyRequests Off
- <proxy balancer://cluster>
- BalancerMember ajp://www.bbs.com:8009 loadfactor=1 route=s1
- BalancerMember ajp://www.bbs.com:9009 loadfactor=1 route=s2
- </proxy>
httpd-vhosts.conf
- <VirtualHost *:80>
- ServerName www.bbs.com
- ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
- ProxyPassReverse / balancer://cluster/
- ErrorLog "logs/my_error.log"
- CustomLog "logs/my_access.log" common
- </VirtualHost>
- tomcat1的server.xml
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">
- tomcat2的server.xml
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="s2">
问题分析:
不懂具体原因
解决办法:
httpd.conf的配置需要放置到httpd-vhosts.conf的虚拟主机配置下。
以下为正确的配置:
<VirtualHost *:80>
ServerName www.a.com
ServerAlias www.a.com
ProxyPass / balancer://proxy/ stickysession=JSESSIONID
ProxyPassReverse / balancer://proxy/
<Proxy balancer://proxy>
BalancerMember http://192.168.1.192:8080/ loadfactor=1 route=tomcat1
BalancerMember http://192.168.1.192:8081/ loadfactor=2 route=tomcat2
</Proxy>
</VirtualHost>