启用会话亲和性后,负载均衡器会将特定最终用户的所有请求定向到特定 endpoint。这种连续性保留了用户会话信息(例如购物车中的商品),否则如果请求分散到多台服务器,这些信息可能会丢失。
会话亲和性还有助于减少网络请求,为按用量计费的用户节省成本。
会话亲和性会自动将来自同一客户端的请求定向到同一 endpoint:
- 当客户端发出第一个请求时,Cloudflare 会在客户端上设置
__cflbcookie(以跟踪关联的 endpoint)。 - 同一客户端的后续请求在 cookie 有效期内且 endpoint 保持健康时,会转发到该 endpoint。
- 如果 cookie 过期或 endpoint 变为不健康,Cloudflare 会设置新的 cookie 以跟踪新的故障转移 endpoint。
flowchart LR
accTitle: Session affinity process
accDescr: Session affinity directs requests from the same client to the same server.
A[Client] --Request--> B{<code>__cflb</code> cookie set?}
B -->|Yes| C[Route to previous endpoint]
C --> O2
B ---->|No| E[Follow normal routing]
E --> O2
E --Set <code>__cflb</code> cookie--> A
subgraph P1 [Pool 1]
O1[Endpoint 1]
O2[Endpoint 2]
end
除非您设置自定义会话生存时间(TTL),否则所有基于 cookie 的会话默认为 23 小时。
启用 Always Use HTTPS 时,会话 cookie 为安全 cookie。此外,cookie 始终启用 HttpOnly,以防止跨站脚本攻击。