粘性会话与 HTTP 和 HTTPS 有何关系?
如果我在一些运行支持 HTTPS 的前端的 Web 应用服务器前面放置一个负载均衡器,那么会话是否会在将“粘性会话”列为其支持功能之一的典型负载均衡器上保持“粘性”?
我理解这个问题部分是开放式的;需要澄清的是,我是否需要一个支持粘性 HTTPS 会话特定的负载均衡器,或者“粘性会话”是否是一个与 HTTP 有效负载无关的主体(无论是否加密)?
谢谢。
答案1
负载均衡器可以通过 cookie、url 中的参数等来识别会话。如果您在负载均衡器上使用 https,则负载均衡器必须自行完成所有 SSL 处理,因此它可以查看会话。
因此,是的,您需要一个负载均衡器来终止到客户端的 SSL,以便它可以访问会话数据。(那么你就没有 Linux 虚拟服务器或 HAProxy)
答案2
一般情况下,HTTPS 默认为粘性,HTTP 默认为非粘性。
对于 HTTP,如果部分会话状态数据本地保存在服务器端(仅在 RAM 中或仅在本地存储中),则需要启用粘性会话。例如,一旦与服务器 A 的连接通过身份验证,就需要继续将其路由到服务器 A,因为服务器 B 将需要重新进行身份验证。
如果后续请求无论被路由到哪个服务器都会成功,那么您就不应该使用粘性。
如果您的应用程序支持,通常优先选择非粘性。