首页 > 解决方案 > Apache:按会话进行负载平衡

问题描述

我有两个后端服务器(所以 2 个工作人员),我通过会话在它们之间进行负载平衡。但是有一个问题:一旦我加载我的应用程序,它会发送多个请求并且负载均衡器选择第一个工作人员并向第二个工作人员发送一个请求(用于检查?),因此 jk-status 将始终将 1 个会话放入第一个工作人员和第二个工作人员,当我在不同的浏览器(不同的会话)上加载应用程序时,负载均衡器将始终选择第一个工作人员,因为两个工作人员的会话数相同。该怎么办?

我使用 Apache 2.2、Tomcat 8.5.x 和 mod_jk 1.2.40

worker.properties 配置:

worker.list=jkstatus,router
worker.jkstatus.type=status
worker.router.type=lb
worker.router.balance_workers=worker1,worker2
worker.router.method=S
worker.router.sticky_session=true
worker.template.type=ajp13
worker.template.lbfactor=1
worker.template.socket_keepalive=true
worker.template.recovery_options=7
worker.worker1.reference=worker.template
worker.worker1.host=mysite.com
worker.worker1.port=8009
worker.worker1.redirect=worker2
worker.worker2.reference=worker.template
worker.worker2.host=mysecondsite.com
worker.worker2.port=8009
worker.worker2.redirect=worker1

标签: apachetomcatserverconfigmod-jk

解决方案


某种情况迫使我从workers.properties 切换到httpd.conf 并使用代理和平衡器(也更新了Apache 和mod_jk)并且一切正常。


推荐阅读