我的 Linux 服务器上有两个 wildfly 服务器实例,我想使用 apache 代理平衡器来平衡这两个服务器的负载。但平衡器无法正常工作,它会以循环方式将请求一个接一个地发送到 wildfly 服务器,但没有一个正常工作。在我的网站上,我可以看到登录页面,但添加登录凭据后,它不会重定向到主页,在日志中我可以看到它已正确登录。如果我停止一台服务器,那么一切都会正常工作
这是我的代理配置
ProxyRequests Off
ProxyPreserveHost On
ProxyVia On
<Proxy balancer://mycluster>
# WebHead
BalancerMember http://x.y.z.z:8080
# WebHead2
BalancerMember http://x.y.z.z:8280
</Proxy>
ProxyPass /test balancer://mycluster/test
ProxyPassReverse /test balancer://mycluster/test
请告诉我这其中有什么问题以及我该如何改正
答案1
可能发生的情况是,您正在登录 Server1(xyzz:8080),但下一个请求转到 Server2(xyzz:8280),而 Server2 不知道您在 Server1 上的会话。
有两种主要方法可以解决这个问题。
在服务器之间共享会话状态执行
此操作的方式取决于服务器端技术(PHP,Java,Pyton),但基本上你会使用一个通用位置(Redis,SQL,MemCached等)来存储会话信息两个都服务器,以便任何给定的连接都可以转到任一服务器并被识别。在您的 mod_proxy 配置中启用“粘性会话”
同样,如何执行此操作的实际细节取决于您的服务器端技术,但大体上,您需要在指令stickysession
中添加一个键/值对,如ProxyPass
文档。