我试图通过将 nginx 放在“2 个 Web 服务器(运行 Apache/PHP)”前面来平衡负载。但我需要使用循环算法但当我这样做时我无法获得稳定的会话。
(我明白;如果我使用循环法,一旦我在下次加载时到达另一台服务器,会话信息就会丢失)
有没有正确的方法来实现这一目标?请问这方面的行业标准有什么好的建议吗?
仅供参考,我已经将这 2 个 Web 服务器放入GlusterFS
集群中。所以我有一个公共存储(如果你要基于此提出一些建议)
答案1
尽管这是一篇旧帖子,但它仍然具有很高的 SEO 评级,因此试图回答。
虽然您可以利用集群存储,但您应该始终在单个内存段中处理会话持久性。
对于您的情况,最简单的方法可能是使用一种可能的 NGINX 方法来保持持久的目标上游服务器。最简单的仍然是ip_hash指令,因为它可能很适合您的需求。
对于业务需求,我建议订购商业订阅并使用粘性指令,它还享有许多其他优势,包括广泛的支持。
另一种选择是使用一些第三方(开源)插件(例如nginx-sticky-module-ng)创建相同的功能,无需支付订阅费用。