提示
X
本案例来自tskb,请前往tskb修改源内容:立即前往
'>

基础排查-步骤二:cookie插入会话保持原理及排障注意事项

|

问题描述

节点池引用Cookie插入会话保持时,有时会不生效,同一个终端的多个关联请求,被调度到多个节点上。

告警信息

以下图为例解释插入的原理:

根因

Cookie插入原理总结如下:
1、节点服务器返回的HTTP应答是没有携带cookie信息的。
2、服务器HTTP应答经过AD设备后被插入cookie,如Set-Cookie: sangfor1=88598220; path=/ 。
3、客户端再次访问,携带上该cookie信息经过AD分发,优先查询cookie记录表,从而匹配上一次的节点。

解决方案

1、新建的节点,随机分配的cookie值为88598220,同时绑定Cookie插入类型的会话保持。


2、客户端第一次访问,后端服务器返回的应答头部中是不带任何cookie参数的。


3、服务器应答的头部经过AD处理之后,插入了对应的cookie信息,同时返回给客户端。


4、客户端收到返回的内容后,可以看到插入的cookie信息。


5、之后客户端访问其他请求,也都会携带上该cookie信息。



6、客户端携带cookie的所有请求达到AD后,设备都会查询会话保持记录,从而调度到同一个节点。

PS:此时调度给节点时,默认携带了AD插入的cookie参数,不会删除被AD插入的信息

建议与总结

理解上述插入原理后,遇到cookie插入不生效时,建议排查如下:
1、检查客户端浏览器的设置,避免禁用cookie相关的设置,导致浏览器无法正常提交cookie信息。

2、查看设备服务日志,是否存在节点故障的日志,节点故障会影响到会话保持记录。

3、节点服务器的繁忙状态也会影响到会话保持,取决下图的配置结果,假设配置了启用,则节点繁忙了,不会走会话保持记录,而是重新调度,反之继续匹配会话保持记录。

排查内容

补充案例:
问题现象:网站域名通过云waf或cdn代理(看作公网的浏览器)后,网站登陆出现异常,AD节点配置cookie插入,发现调度异常,node1节点cookie值的请求调度到node2节点。
问题原因:虚拟服务配置为:“按连接调度①”,cookie作用域为“/”(即对整个网站有效),明确结果为:在多个连接下,设备进行了分发到不同服务器,以及插入cookie,云waf浏览器最终会覆盖之前的cookie,且只携带一个cookie值发给AD。因为设备是按照连接调度,所以同一个连接中的不同请求不会因为cookie值不同而发生调度的变化。
解决方案:
方案1、基于应用层头部记录的客户端ip做会话保持(云waf一般都有xff字段),如http请求被动会话保持。
方案2、使用cookie被动的的会话保持,虚拟服务配置为:“按请求调度。

我要分享
文档编号: 250249
作者: admin
更新时间: 2023-04-20 14:44
适用版本: