Chr*_*her 5 networking web-applications load-balancing
我有一个要在多台服务器上运行的网络应用程序。我想确保使用相同会话(值为 JSESSIONID=x 的 HTTP cookie 标头)的请求始终与同一服务器通信。也就是说,直到会话在某些情况下“移动”到不同的服务器(不仅在服务器出现故障时,而且由于某些服务器端缓存和性能策略)。
我的 Web 应用程序在这种情况下运行良好,但我应该使用哪种负载均衡器?显然,我可以在应用程序级别进行负载平衡,但我正在寻找更有效的方法。也许是专门的硬件(也许不是)?我不能花很多钱...
更新
感谢您到目前为止的回答:我现在发现,可以配置Pound和HAProxy来查找某些 cookie。我还没有找到,他们是否还允许动态更新映射(当会话“移动”到不同的应用程序服务器时)?
是否有(便宜的)硬件解决方案,也可以做到这一点?(这会比额外的负载平衡服务器的成本更低吗?)
通常不建议使用“粘性(持久)会话”。如果这样做,您将失去负载平衡的许多好处。负载将无法平衡,您将失去高可用性,因为某些客户端在出现故障时将无法访问您的应用程序。
您希望您的会话是动态的。对于 Java,它通常存储在内存中并通过多播集群到所有服务器。更常见的是,会话将存储在数据库中。
如果您的 Web 应用程序需要粘性会话,则您的架构可能需要改进。
就负载均衡器解决方案而言,有很多解决方案,这里已经广泛地涵盖了该主题。我喜欢LVS。其他人喜欢nginx。 被博科收购的Foundry Networks制造了一些可靠的商业产品。它们是硬件负载平衡器的主要商业解决方案。 Barracuda还有一个基于 Linux/OSS 的“设备”,可用于负载平衡。
我刚刚阅读了 HAProxy 作者 Willy Tarreau 撰写的文章“通过负载均衡使应用程序可扩展”,它包含了我需要的所有答案。
以下是我个人对所学知识的总结:
这篇文章是 2006 年的,之后有些内容可能发生了变化。
归档时间: |
|
查看次数: |
19733 次 |
最近记录: |