会话保持

首先要熟悉两个概念:连接connect和会话session

连接:在四层负载均衡中,连接是最小元素。

l  源端口:客户端随机产生的端口。

l  源地址:发起请求的源IP地址。

l  目的端口:四层负载均衡上的虚拟服务端口。

l  目的IP:BIG-IP LTM上的虚拟服务地址。

会话:一个用户登录则产生一个session,可以由多个连接组成,一个session通常就是会话保持表中的一条记录所记录的所有连接。

源地址会话保持

       认为同一个源地址为一个用户,凡是从一个源地址发过来的连接认为是一个用户发起的多个请求,根据会话保持,将这些连接发到同一服务器。VS会生成一个会话保持表,会话保持表如下图所示:

会话保持表有效时间为300s,超时删除会话保持记录,重新分配服务器。源地址会话保持如下图所示:

哈希会话保持

哈希会话保持的一个基本概念就是将一个连接中的源IP 和目的IP地址进行Hash计算, 根据计算得到的结果并根据后台存在多少台服务器来选择将请求分配到那台服务器。哈希会话保持可以没有会话保持表,而仅仅是根据计算的结果来确定一个源 IP 被分配到那台服务器。 哈希会话保持通常被用于一些特定场合,如要求客户端按照IP地址被固定分配的场合, 或者在一些会话保持表查询的开销已经远远大于 Hash 计算开销的情况下,采用 hash 会话保 持可以提高系统的处理能力和响应速度。

Cookie会话保持

Cookie指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。Cookie 的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成Cookie作用范围。若不设置过期时间,则表示这个Cookie的生命期为浏览器会话期间,关闭浏览器窗口,Cookie 就消失。这种生命期为浏览器会话期的Cookie被称为Session Cookie。Session Cookie一般不存储在硬盘上而是保存在内存里。若设置了过期时间,浏览器就会把Cookie保存到硬盘上,关闭后再次打开浏览器,这些Cookie仍然有效直到超过设定的过期时间。一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。一个WEB站点可以给一个WEB浏览器发送多个 Cookie,这样在WEB浏览器和WEB服务器之间就可以使用多个Cookie来传递多种信息。

Cookie会话保持三种方式

Cookie Insert

当客户进行第一次请求时,客户 HTTP 请求(不带 cookie)进入 BIG-IP LTM,BIG-IP LTM 根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行 HTTP 回复(不带 cookie)被发回 BIG-IP LTM,然后 BIG-IP LTM 插入 cookie,将 HTTP 回复返 回到客户端。当客户请求再次发生时,客户 HTTP 请求(带有上次 BIG-IP LTM 插入的 cookie) 进入 BIG-IP LTM,然后 BIG-IP LTM 读出 cookie 里的会话保持数值,将 HTTP 请求(带有与上 面同样的 cookie)发到指定的服务器,然后后端服务器进行请求回复,由于服务器并不写入 cookie,HTTP 响应将不带有 cookie,服务器响应再次经过进入 BIG-IP LTM 时,BIG-IP LTM 再 次写入更新后的会话保持 cookie。

Cookie Passive

当客户进行第一次请求时,客户HTTP请求(不带 cookie)进入BIG-IP LTM, BIG-IP LTM根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行 HTTP回复一个cookie并发回BIG-IP LTM,然后BIG-IP LTM将带有服务器写的cookie值的HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次服务器写的 cookie)进入BIG-IP LTM,然后 BIG-IP LTM根据 cookie 里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带 有更新的会话保持cookie,恢复流量再次经过进入BIG-IP LTM时,BIG-IP LTM将带有该cookie的请求回复给客户端。

Cookie Rewrite

当客户进行第一次请求时,客户HTTP请求(不带 cookie)进入BIG-IP LTM, BIG-IP LTM 根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复一个空白的cookie并发回 BIG-IP LTM,然后BIG-IP LTM重新在cookie里写入会话保持数值,将HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次BIG-IP LTM重写的cookie)进入 BIG-IP LTM,然后 BIG-IP LTM读出cookie里的会话保持数 值,将HTTP请求(带有与上面同样的 cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带有空的cookie,恢复流量再次经过进入BIG-IP LTM时,BIG-IP LTM再次写入更新后会话保持数值到该cookie。

SSL ID 会话保持

在用户的 SSL 访问系统的环境里,当 SSL 对话首次建立时,用户与服务器进行首次信息交换:

1.交换安全证书 2.商议加密和压缩方法 3.为每条对话建立 Session ID。

由于该 Session ID 在系统中是一个唯一数值,由此,BIG-IP LTM 可以应用该数值来进行会话保持。当用户想与该服务器再次建立连接时,BIG-IP LTM 可以通过会话中的 SSL Session ID 识别该用户并进行会话保持。

基于 SSL Session ID 的会话保持就需要客户浏览器在进行会话的过程中始终保持其 SSL Session ID 不变,但实际上,微软 Internet Explorer 被发现在经过特定一段时间后将主动改变 SSL Session ID,这就使基于 SSL Session ID 的会话保持实际应用范围大大缩小。

可编程控制的会话保持

在实际的使用过程中,我们往往可能遇到更加复杂的一些情况,一个最典型的情况就是会话的特征并不在一些通常的位置,或者通用的名称。而是一个自定义的名称在一个特定的位置。在可编程控制的会话保持中,会话保持主要由两个部分组成: 1. 会话保持的特征的获取 2. 将特征与后台服务器相对应 。因此在 F5 BIG-IP LTM产品设计中,可以采用可编程控制方式来实现灵活的会话保持策略。

LTM_本地流量管理(二)的更多相关文章

  1. LTM_本地流量管理(一)

    基本元素及概念 Node:节点,即服务器的IP地址. Member:成员,即一个服务,用IP+端口表示. Pool:池:一个或多个Member的逻辑分组,一个Pool表示一个应用,每个Pool都有自己 ...

  2. JavaScript技巧总结和本地存储(二)

    离线检测 检测是否离线,html5为此定义了一个navigator.onLine属性,这个属性为true表示设备能上网,false表示离线,这个属性还有点兼容问题.因此单独使用这个属性不能确定网络是否 ...

  3. H5本地存储二

    众所周知,H5的storage有sessionstorage&localStorage,其中他们的共同特点是API相同 下面直接上代码,storage中的存储与删除: <!DOCTYPE ...

  4. H5混合开发二维码扫描以及调用本地摄像头

    今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底 ...

  5. Java 生成在线二维码 以Base64返回前端、或者写入到本地磁盘

    思路 现阶段遇到这样一个问题,在原有的产品上加入线下优惠券模式,用户领取优惠券以后,获取到一个唯一的ID作为领取凭证,但是在线下用扫码枪进行扫码的时候,总不能让人手动输入吧 于是乎就想出了一个办法,后 ...

  6. 在本地(Eclipse)运行第一个strom-starter例子

    一.在Eclipse中建立storm项目: 具体步骤如下: 1.在Eclipse中新建java project项目并导入jar包: File-> New -> Java Project - ...

  7. QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

    目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到 ...

  8. python读取数据库并把数据写入本地文件

    一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...

  9. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

随机推荐

  1. 【SD系列】SAP SD凭证处理被批次处理冻结

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD凭证处理被批次处理冻结 ...

  2. HDU4372(第一类斯特林数)

    题意:N座高楼,高度均不同且为1~N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数. 0 < N, F, B <= 2000 首先我们知道一个结论:n的环排列的 ...

  3. 强化学习之MDP

    前言 最近又入坑RL了,要搞AutoML就要学会RL,真的是心累.. 正文 MDP里面比较重要的就是状态值函数和动作-状态值函数吧,然后再求最优状态值函数和最优动作状态值函数,状态值函数的公式推导一开 ...

  4. Jmeter 03 Jmeter断言之Json断言

    json断言可以让我们很快的定位到响应数据中的某一字段,当然前提是响应数据是json格式的,所以如果响应数据为json格式的话,使用json断言还是相当方便的. 还是以之前的接口举例 Url: htt ...

  5. glide使用总结

    1 glide是什么 glide是一个图片加载和缓存库. 2 glide的使用 第一,添加依赖 implementation 'com.github.bumptech.glide:glide:4.5. ...

  6. MySql-Mysql技术内幕~SQL编程学习笔记(1)

    1.MySQL的历史,一些相关概念. 2.MySQL数据类型 *通常一个页内可以存放尽可能多的行,那么数据库的性能就越好,选择一个正确的数据类型至关重要. 1>UNSIGNED类型: 将数字类型 ...

  7. 1、Java语言概述与开发环境——编译和运行第一个程序HelloWorld.java

    编写一个Java程序到运行的步骤概述: 1.将Java代码编写到扩展名为.Java的文件中 2.通过Javac命令对该Java文件进行编译 3.通过Java命令对生成的class文件进行运行 一.编写 ...

  8. python学习第五十一天os模块的用法

    os模块故名思意就是操作系统模块,该模块提供很多容许你的程序与操作系统直接交互的功能. 1,得到当前工作目录  os.getcwd() 2, 返回指定目录下的所有文件和目录名 os.listdir() ...

  9. JDK集合框架源码分析 - 简单概要

    1.类继承体系 在集合框架的类继承体系中,最顶层有两个接口Collection.Map: Collection 表示一组纯数据 Map 表示一组key-value对 Collection的类继承体系: ...

  10. 吴恩达深度学习:2.3梯度下降Gradient Descent

    1.用梯度下降算法来训练或者学习训练集上的参数w和b,如下所示,第一行是logistic回归算法,第二行是成本函数J,它被定义为1/m的损失函数之和,损失函数可以衡量你的算法的效果,每一个训练样例都输 ...