NetScaler的cookieinsert和sourceip联合保持机制
NetScaler的cookieinsert和sourceip联合保持机制
使用NetScaler的cookieinsert和sourceip联合进行session保持机制即主用cookieinsert方式进行保持,当cookieinsert失效时启用sourceip的保持机制。
客户端访问到NetScaler的某一个vserver,NetScaler接收到第一个request时,使用load balance的算法(比如least connection)进行分发到真实服务器。当服务器返回response给NetScaler时,NetScaler会在这个response的 http头部插入一个cookie,命名为NSC_xxxx。当下一个request中带有这个cookie时,NetScaler就会根据这个 cookie进行session保持。如下是这个cookie的官方说明:
The system inserts the following cookie NSC_XXXX= where
XXXX is the encrypted name of the virtual server serving the request;
ServiceIP is the hexadecimal value of the physical service's IP address;
ServicePort is the hexadecimal value of the physical service's port.
但是在NetScaler版本6.1和8.0关于这个cookie的插入动作有区别,如下:
1, 在NetScaler NS6.1: Build 96上,cookieinsert这个动作是在同一个session的每一个response里都插入的,不管timeout时间设置为多少(包括0);
2, 而在NetScaler NS8.0: Build 53.2上,cookieinsert这个动作当设置时间为0时是在同一个session的第一个response里插入的,后续的不会插入了(可以通过httpwatch查看证明,实际上这个改动在NS7.0就更新了)。但是将cookie的时间设置为非0时,cookieinsert这个动作是在同一个session的每个response里都插入的,因为要告知client进行此cookie的时间更新。
一般最常用的session保持机制就是使用cookieinsert(0mins)为主,sourceip为backup机制。官方是这样说明原理的:
The Backup persistence option is used when the primary configured persistence mechanism on virtual server fails. For example, if the primary persistence is Cookie Insert, the backup persistence can be set to Source IP to handle any client browsers that do not support cookies.
Any client browsers that do not support cookies,这句话值得我们深究。一般我们是认为当NetScaler完成了第一次response插入NSC后紧接着接收到的request中应该带有这个NSC,但是当没有这个NSC时,NetScaler就是用backup机制进行保持。但是实际上这是错误的。NetScaler怎样判断 browser do not support cookies呢?原理如下:
NS接收到下一个request时,会查看这个request的http头中是否存在cookie字段:
■ Cookie字段存在,然后查看是否有NS自己插入的cookie(NSC)
√ 如果存在就根据此NSC进行分发;
√ 如果不存在或者NSC值错误(可能被篡改),就会根据lb的算法进行分发(原来理解为根据backup的方式);
■ Cookie字段不存在,就根据backup的方式进行保持。
当然有些场景不需要我们了解到如此细致,就能够满足应用的需求做到session保持了。但是在某些场景(比如跨域访问,可以参见上篇博文"初识P3P”)就需要非常注意这个操作原理,否则就会出现session保持不了的情况。
报表界面:

配置界面:

NetScaler的cookieinsert和sourceip联合保持机制的更多相关文章
- Sql-Server应用程序的高级注入
本文作者:Chris Anley 翻译: luoluo [luoluonet@hotmail.com] [目 录] [概要] [介绍] [通过错误信息获取信息] [更深入的访问] [xp_cmdshe ...
- WCF中的标准绑定
使用过WCF的童鞋们都很清楚,绑定是必须的.我将这些绑定总结了下. 一.标准绑定简要说明 1.basicHttpBinding 基于WS-I Basic Profile 1.1 的web服务,所需的. ...
- 【MySQl】MyISAM和InnoDB索引对比
部分内容转自:http://www.2cto.com/database/201211/172380.html 比较好的文章:http://www.cnblogs.com/hustcat/archive ...
- 论文阅读笔记三十一:YOLO 9000: Better,Faster,Stronger(CVPR2016)
论文源址:https://arxiv.org/abs/1612.08242 代码:https://github.com/longcw/yolo2-pytorch 摘要 本文提出YOLO9000可以检测 ...
- arcgis api for silverlight 3.1 更新说明
前言: 查看arcgis sl api 老版本帮助的方式:http://resources.arcgis.com/en/help/silverlight-api/3.0/xxxxxxx 新版本的帮助默 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- Spring核心技术(六)——Spring中Bean的生命周期
前文已经描述了Bean的作用域,本文将描述Bean的一些生命周期作用,配置还有Bean的继承. 定制Bean 生命周期回调 开发者通过实现Spring的InitializeingBean和Dispos ...
- 拼接HTML代码在UIWebVIew中显示
其原理:通过网络请求获得相关的信息,再通过手机端进行拼HTML,然后在WebView进行展示,此处还对文章中的图片增加点击效果,可以保存到相册中:文章的样式已经存在项目中,直接去调用: 1:首先了解两 ...
- WCF简要介绍
什么是WCF WCF的全称是:Windows Communication Foundation.从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA思想的技术框架.WCF为程序员提供了丰富的功 ...
随机推荐
- Lucene检索提高性能的几个方式
1.采用最新版本的Lucene 2.索引文件存储采用本地文件系统,如果需要挂载远程系统,请采用 readonly方式. 3.当然采用更好的硬件,更高I/O的磁盘 4.提高OS 缓存,调整参数 5.提高 ...
- UVA_10139
The factorial function, n! is defined thus for n a non-negative integer:0! = 1 n! = n×(n−1)! (n > ...
- js函数的默认参数
function f(flag, start, end, msg){ flag = flag == false ? flag : true; start = start || null; start ...
- 解决Cannot reinitialise DataTable问题 解决dataTables再次调用不能清空数据
这里我们只需要多设置一个字段 “destroy" : true 即可 或者设置retrieve: true, 或者在加载datatable之前使用$("#example" ...
- TCP_Wrappers & PAM & Nsswitch服务
cpwrapper:工作在第四层(传输层),能够对有状态连接的服务进行安全检测并实现访问控制的工具.部分功能上跟iptables重叠. 对于进出本主机访问某特定服务的连接基于规则进行检查的一个访问控制 ...
- Eloquent: 修改器
感觉好长时间没写东西了,一方面主要是自己的角色发生了变化,每天要面对各种各样的事情和突发事件,不能再有一个完整的长时间让自己静下来写代码,或者写文章. 另一方面现在公司技术栈不再停留在只有 Larav ...
- C++指针之间的赋值与转换规则总结
C++指针之间的赋值与转换规则总结 Note:以下结论不适用于类的成员函数指针,关于类的成员函数指针会单独讨论. 一.任何类型的指针变量均可直接赋值给const void * 任何类型的非const指 ...
- HTML+CSS : 笔记整理(3 移动端布局简单了解)
流体布局:宽度用百分比,计算真实宽度用函数 : width: calc(25% - 4px); box-sizing: 1.content-box:默认计算方式 ,宽度和高度分别应用到元素的内容框.在 ...
- pycharm中文乱码问题 总结
前言: 这几天刚刚开始学习python,然后就安装了pycharm,但是那个中文乱码的问题真是让人心烦,在网上找了好久,都写得好乱,今天终于让我解决了,在这里总结一下经验,希望可以帮到你们 问题:如下 ...
- 牛客暑假多校第二场J-farm
一.题意 White Rabbit has a rectangular farmland of n*m. In each of the grid there is a kind of plant. T ...