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

基础排查-步骤四:cookie被动会话保持原理及排障注意事项

|

问题描述

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

告警信息

以下图为例解释被动的原理:

根因

通过上述数据的分析,cookie被动的原理汇总如下:

1、节点服务器返回的HTTP应答是已经携带cookie信息,例如Set-Cookie: sangfor1=88598220; path=/ 。
2、服务器HTTP应答经过AD设备,AD将cookie值转换成一个哈希值例如%¥&#. 然后会把这个哈希值与当前调度的节点一起插入到会话保持记录中,例如:<%¥&#, node1> 。
3、客户端再次访问,携带上该cookie信息Set-Cookie: sangfor1=88598220; path=/ 发现cookie方式为被动,则使用cookie值进行同样的哈希运算得到值%¥&# 。
4、根据上面计算出来的哈希%¥&#再去会话记录表中查询,发现存在记录匹配node1节点。

解决方案

1、新建Cookie改写会话保持,同时将该会话保持引用到节点池中。

2、客户端第一次访问业务系统,通过抓取后端数据包可知,服务器初次应答时,也返回了自己的cookie信息。


3、但经过AD处理后,原封不动的转发给客户端,不做cookie的任何修改。

4、客户端收到数据后,呈现出相应的cookie值。

5、客户端访问后续的其他链接都会携带上该cookie值

6、AD收到该请求后,通过查询哈希算法生成的会话保持记录,由于cookie值并未变化,从而调度到同一个节点服务器上。运用的哈希记录,后台可以查到,如下:

建议与总结

理解上述改写原理后,遇到cookie被动不生效时,建议排查如下:

1、检查客户端浏览器的设置,避免禁用cookie相关的设置,导致浏览器无法正常提交cookie信息。

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

3、基于被动的原理,需要保证Cookie名称填写正确,才能识别对应的cookie值,从而参与哈希计算,而且名称有大小写之分。


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

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