【问题标题】:Sticky sessions with Load Balancer负载均衡器的粘性会话
【发布时间】:2021-09-06 15:09:22
【问题描述】:

如果你能澄清一下这将是一个很大的帮助。

当我使用负载平衡器时,我使用 appsession 或任何其他方式将服务器与客户端绑定。但是,如果该服务器出现故障,则负载平衡器会将客户端重定向到另一台服务器,并且在这样做的同时,整个会话都会丢失。那么我是否必须以这样一种方式编写我的应用程序,以便将会话数据存储在外部以便可以共享?

那么当事务由于服务器无响应而中途失败时,使用负载平衡器有多好?

请告诉我,谢谢。

【问题讨论】:

    标签: load-balancing sticky-session


    【解决方案1】:

    这两个概念之间存在区别:会话粘性和会话复制。

    • 会话粘性可确保一旦来自客户端的请求到达健康的服务器,来自同一客户端的后续请求将由该服务器处理。当您的服务器出现故障时,粘性会丢失,新请求会转到另一台健康的服务器。会话粘性通常由负载平衡器提供,您的应用服务器通常不需要做任何事情。
    • 会话复制使您能够在服务器出现故障时恢复会话。在上述情况下,粘性会丢失,但新服务器将能够根据您必须实施的外部会话存储恢复先前的会话。

    【讨论】:

    • 谢谢。所以根据你的第一点,如果请求被转发到不同的服务器,负载均衡器也会恢复会话变量?
    • 不,负载均衡器不会恢复与会话相关的任何内容,对于 AWS Elastic Load Balancer,它在请求中使用特殊 cookie 来支持会话粘性。参考:docs.aws.amazon.com/elasticloadbalancing/latest/classic/…
    • 好的。我认为您的这句话让我忘乎所以**会话粘性通常由负载平衡器提供,您的应用程序服务器通常不需要做任何事情。**
    • 我的意思是,如果您需要没有复制的会话粘性,您不需要做任何特别的事情,因为负载均衡器只需简单的配置即可支持。但是,这也意味着如果您的服务器意外停机,您愿意丢失一些客户端的会话。
    猜你喜欢
    • 2017-10-22
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2014-09-21
    • 2018-03-20
    • 2016-08-12
    相关资源
    最近更新 更多