使用Mod Proxy和Session Sticky的Apache Tomcat负载均衡器

使用代理模块和粘性会话配置Tomcat和Apache

使用Mod Proxy配置Tomcat负载均衡器与Apache Web服务器非常简单。

只要按照顺序进行,并且一切顺利,就很容易。我列出了以下有关如何使用Mod Proxy配置Apache与Tomcat配置负载均衡器的逐步说明。

在生产环境中,始终建议进行负载均衡以提高可用性。

Apache Web服务器配置

  • 在Apache Web服务器的httpd.conf中启用proxy_moduleproxy_balancer_moduleproxy_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

类似文章