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为程序员提供了丰富的功 ...
随机推荐
- Centos防火墙添加IP白名单
Centos iptables防火墙添加IP白名单,指定IP可访问端口 vi /etc/sysconfig/iptables 以下为我虚拟机的防火墙为例(Centos 7) # sample conf ...
- 使用session处理用户搜索后数据的上一页和下一页跳转
搜索语句界面: /*单一检索:此处为一个下拉列表的检索*/ if(isset($_POST['submit']) && $_POST['submit'] == '点击搜索') { if ...
- JS动画与CSS3动画
Js动画 show / hide var div = $('#test-show-hide'); div.show('slow'); // 在0.6秒钟内逐渐显示 div.hide(3000); // ...
- poj_1995_Raising Modulo Numbers
Description People are different. Some secretly read magazines full of interesting girls' pictures, ...
- JS - 给数组的原型添加去掉重复元素的distinct方法
/* 调用完该方法,原数组只留下非重复的数据 返回一个数组,里面是依次出现的重复元素 */Array.prototype.distinct = function () { var removeA ...
- 利用sysbench进行MySQL OLTP基准测试
Preface In order to know clearly about the real performance threshold of database server,we ...
- 关于TP3.2框架读取Sql server中文字段数据以及处理乱码的一些小心得
最近要做一个项目,需要使用TP3.2框架,之前什么也不会,就硬着头皮上了,结果真的闹了挺多emmmmmm挺低级的错误,就像SQL Server中文字段的读取,一开始我是照着读取英文字段的格式来写的,在 ...
- day1_作业2(三级菜单)
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- province={'江苏省':['南京市','苏州市','无锡市'],'浙江省':['杭州市','温州 ...
- 云心出岫——Splay Tree
(多图预警!!!建议在WI-FI下观看) 之前我们谈论过AVL树,这是一种典型适度平衡的二叉搜索树,成立条件是保持平衡因子在[-1,1]的范围内,这个条件已经是针对理想平衡做出的一个妥协了,但依然显得 ...
- 如何将多个Eclipse项目导入IntelliJ IDEA
技术交流群:233513714 IntelliJ IDEA 与Eclipse在新建项目上的叫法略有不同,区别见下图. 当我们使用idea后再次使用eclipse时就会有很多不适,下面介绍一个多项目的导 ...