负载均衡Cookies 会话保持方式的原理是什么?
负载均衡cookies会话保持有cookie植入(insert)和cookie重写(rewrite)两种方式:植入状态下会返回cookie的超时时间给客户端。重写状态下没有超时时间。
在Cookie 植入模式下,ALB 负责将cookie植入客户端,后端服务器无需作出任何修改。当客户端进行第一次请求时,客户端 HTTP 请求(不带 Cookie)进入 ALB, ALB 根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行 HTTP 回复(不带 Cookie)被发回 ALB,然后 ALB 通过set-cookie头插入响应返回给客户端。
当客户请求再次发生时,客户HTTP 请求(带有上次 ALB 插入的 Cookie)进入 ALB,然后 ALB 读出 Cookie 里的会话保持数值,cookie值与后端服务器进行对比,将HTTP请求(带有与上面同样的 Cookie)发到指定的服务器,然后后端服务器进行请求回复,由于服务器并不写入 Cookie,HTTP 回复将不带有 Cookie,此时ALB也不会再把cookie插入响应返回给客户端。
如果出现ALB解析客户端cookie失败或者对应cookie的服务器健康检查DOWN的情况,那么将根据用户配置的负载均衡算法重新选择后端服务器,并重新将cookie植入响应返回给客户端。
在Cookie 重写模式下,重写模式使用服务端的标识符来覆盖后端服务器中用于进行会话保持的cookie。不同于insert模式,如果后端服务器在响应头中没有设置对应名称的cookie,insert模式会直接插入cookie,而rewrite模式则会认为当前请求不需要进行session sticky,不进行任何操作。当客户端进行第一次请求时,客户端 HTTP 请求(不带 Cookie)进入 ALB, ALB 根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行 HTTP 回复(带 Cookie)被发回 ALB,然后 ALB 解析后端服务器返回的响应,对比ALB设置好的cookie name,找到后,重写cookie name为设置的cookie name,然后插入客户端。
当客户请求再次发生时,客户HTTP 请求(带有上次 ALB 插入的 Cookie)进入 ALB,然后 ALB 读出 Cookie 里的会话保持数值,cookie值与后端服务器进行对比,将HTTP请求(带有与上面同样的 Cookie)发到指定的服务器。后端服务器进行 HTTP 回复(带 Cookie)被发回 ALB,然后 ALB 解析后端服务器返回的响应,对比ALB设置好的cookie name,找到后,重写cookie name为设置的cookie name,然后插入客户端。