使用Mod Proxy和Session Sticky的Apache Tomcat负载均衡器
使用代理模块和粘性会话配置Tomcat和Apache
使用Mod Proxy配置Tomcat负载均衡器与Apache Web服务器非常简单。
只要按照顺序进行,并且一切顺利,就很容易。我列出了以下有关如何使用Mod Proxy配置Apache与Tomcat配置负载均衡器的逐步说明。
在生产环境中,始终建议进行负载均衡以提高可用性。
Apache Web服务器配置
- 在Apache Web服务器的httpd.conf中启用
proxy_module
,proxy_balancer_module
和proxy_http_module
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so
在应用程序上下文根目录中添加代理和负载均衡器名称。
在此示例中,我有一个代理路径为examples,负载均衡器名称为mycluster。
非常重要的是要包含stickysession,因为没有此选项,将会将相同的请求分配给多个Tomcat服务器,从而在应用程序中导致会话过期问题。
ProxyRequests Off ProxyPass /examples balancer://mycluster stickysession=JSESSIONID ProxyPassReverse /examples balancer://mycluster stickysession=JSESSIONID BalancerMember http://localhost:8080/examples route=server1 BalancerMember http://localhost:8090/examples route=server2
如您在上面的配置中所示,我已在BalancerMember中添加了一个路由,以便可以将路由值附加到会话ID。
现在,让我们配置Apache以在访问日志中打印JSESSIONID。
- 在LogFormat指令中添加以下内容
%{JSESSIONID}C
例如:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combined
- 重新启动Apache Web服务器
Tomcat配置
您必须使用与您在上面的BalancerMember中配置的相同路由ID配置Tomcat实例。
- 在Tomcat的
server.xml
中的Engine名称标签中添加jvmRoute
参数。
使用8080端口配置的Tomcat实例
使用8090端口配置的Tomcat实例
- 重新启动Tomcat服务器
验证
对应用程序进行一些负载,并检查Apache服务器的访问日志,以确保您的请求只被路由到一个Tomcat实例。
您还将注意到您的会话ID已附加到路由,如下例所示。
例如:
我希望这篇文章能帮助您配置Tomcat负载均衡器和Apache Mod代理以及会话粘性。
如果您有兴趣了解Tomcat管理的话,请查看这个online course。