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为程序员提供了丰富的功 ...
随机推荐
- typeid操作符
typeid() operator返回type_info,返回值不可拷贝.不可赋值 // Illustrates the typeid operator. #include <iostream& ...
- class 类 this指向的问题
ES6 实现了类的概念 class Prosen { } ES5使用函数模拟 function Prosen() { } ES6中的 class定义一个类, 其内部包含 constructor构造函数 ...
- 连接MYSQL 错误代码2003
问题是服务里面mysql没有启动或者mysql服务丢失 解决办法: 开始->运行->cmd,进到mysql安装的bin目录(以我的为例,我的安装在D盘)D:\MySQL\bin>my ...
- JAVA / MySql 编程——第七章 JDBC
1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力: ●Java是通过JDBC技术实现对各种数据 ...
- 以CentOS为操作系统的vps或服务器安装lnmp运行环境的方法
安装步骤: 1.使用putty或类似的SSH工具登陆VPS或服务器: 登陆后运行:screen -S lnmp 如果提示screen: command not found 命令不存在可以执行:yum ...
- 【JavaScript】jQuery绑定事件
jquery中直接绑定事件:只能用在程序中一开始就存在的html代码 目标元素.click(function(){ }) jquery中间接绑定事件: 如果目标元素是js生成的,则需要间接绑定事件,用 ...
- 细说 unicode 、utf-8 、utf-16、ascii 、gbk 、gb2312
一.计算机的由来 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为”字节“.再后来,他们又做了一些可以处理这些 ...
- python之微信自动发送消息
代码如下: from __future__ import unicode_literals from threading import Timer from wxpy import * import ...
- caioj:1348: [NOIP普及组2012]质因数分解 C++
题目描述 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入样例 21 输出样例 7 输入 输入只有一行,包含一个正整数n. 输出 输出只有一行,包含一个正整数p,即较大的那个质数 ...
- C语言指针篇(一)指针与指针变量
指针 1. 什么是指针? 2. 指针可不可怕? 3. 指针好不好玩? 4. 怎么学好指针? C语言是跟内存打交道的语言,指针就是内存地址.指针无处不在,指针并不可怕,相反,等你学到一定程 ...