负载均衡器的粘性会话
Posted
技术标签:
【中文标题】负载均衡器的粘性会话【英文标题】:Sticky sessions with Load Balancer 【发布时间】:2021-09-06 15:09:22 【问题描述】:如果你能澄清一下这将是一个很大的帮助。
当我使用负载平衡器时,我使用 appsession 或任何其他方式将服务器与客户端绑定。但是,如果该服务器出现故障,则负载平衡器会将客户端重定向到另一台服务器,并且在这样做的同时,整个会话都会丢失。那么我是否必须以这样一种方式编写我的应用程序,以便将会话数据存储在外部以便可以共享?
那么当事务由于服务器无响应而中途失败时,使用负载平衡器有多好?
请告诉我,谢谢。
【问题讨论】:
【参考方案1】:这两个概念之间存在区别:会话粘性和会话复制。
会话粘性可确保一旦来自客户端的请求到达健康的服务器,来自同一客户端的后续请求将由该服务器处理。当您的服务器出现故障时,粘性会丢失,新请求会转到另一台健康的服务器。会话粘性通常由负载平衡器提供,您的应用服务器通常不需要做任何事情。 会话复制使您能够在服务器出现故障时恢复会话。在上述情况下,粘性会丢失,但新服务器将能够根据您必须实施的外部会话存储恢复先前的会话。【讨论】:
谢谢。所以根据你的第一点,如果请求被转发到不同的服务器,负载均衡器也会恢复会话变量? 不,负载均衡器不会恢复与会话相关的任何内容,对于 AWS Elastic Load Balancer,它在请求中使用特殊 cookie 来支持会话粘性。参考:docs.aws.amazon.com/elasticloadbalancing/latest/classic/… 好的。我认为您的这句话让我忘乎所以**会话粘性通常由负载平衡器提供,您的应用程序服务器通常不需要做任何事情。** 我的意思是,如果您需要没有复制的会话粘性,您不需要做任何特别的事情,因为负载均衡器只需简单的配置即可支持。但是,这也意味着如果您的服务器意外停机,您愿意丢失一些客户端的会话。以上是关于负载均衡器的粘性会话的主要内容,如果未能解决你的问题,请参考以下文章
负载均衡器 cookie 粘性和用于存储用户会话的 ElastiCache 有啥区别?