首页 文章

配置Apache和Tomcat以实现负载 balancer

提问于
浏览
2

我正在尝试将Apache设置为具有会话亲缘性的2个Tomcat实例的负载均衡器 .

目标是让会话坚持到一个服务器但是有下一个会话(当它被后端服务器改变时)转到下一个可用的服务器(假设使用循环算法以便于实现) . 在Tomcat中使用“jvmRoute”和在Apache中使用等效的“路由”时,执行路由的实际值是路由名称,该名称不会更改,并且所有请求始终路由到单个客户端的同一后端服务器 .

到目前为止,我发现只使用JSESSIONID cookie时会出现鸡/蛋问题 . 我们来考虑以下设置:

2个Tomcat服务器侦听端口8009和8010(AJP13)1具有以下配置的Apache服务器

<Proxy balancer://hello-cluster>
    BalancerMember ajp://127.0.0.1:8009/hello
    BalancerMember ajp://127.0.0.1:8010/hello
</Proxy>

ProxyPass /hello balancer://hello-cluster stickysession=JSESSIONID

这是场景:

  • 第一个请求没有cookie,因此Apache选择负载均衡器中的下一个可用服务器来处理请求 .

  • 后端Tomcat服务器设置JSESSIONID但不记录返回的实际值 .

  • 下一个请求进来,Apache注意到没有为给定的JSESSIONID注明后端服务器,因此它选择下一个可用的服务器,在这种情况下,另一个服务器作为第一个请求服务

  • Tomcat注意到JSESSIONID的值无效,因此它创建了一个新值 .

  • Apache没有注意到JSESSIONID已更改为将其固定到该后端服务器 .

  • 回到pt . 3

有没有办法说服Apache注意Tomcat返回的值?

1 回答

相关问题