会话保持

首先要熟悉两个概念:连接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. ubuntu服务器允许Root用户登录

    1.重置root密码 sudo passwd root 2.修改ssh配置文件 sudo vim /etc/ssh/sshd_config后进入配置文件中修改PermitRootLogin后的默认值为 ...

  2. ARTS挑战

    最近有点迷茫,感觉自己工作了一年多,技术成长有限,我要做出改变.2019年11月2日,就从今天开始,参加耗子叔的ARTS挑战. ARTS的初衷 Algorithm:主要是为了编程训练和学习.每周至少做 ...

  3. appium常见问题01_android筛选下拉框无法定位问题

    近期用appium做android自动化的过程中,遇到一种筛选下拉框,神奇的是,定位工具定位怎样都定位不到. 首先尝试用uiaotomator工具定位,无法定位到下拉框元素,只能定位到底层元素: 询问 ...

  4. linux/linux学习笔记-vim文本编辑器(mooc)

    vim文本编辑器 vim与vi的区别:( vim=vi +IMproved) VIM是一个Unix以及类unix文本编辑器 特点:功能强大,高度可定制 vim编辑器的三种模式:一般模式.编辑模式和命令 ...

  5. 从零构建vue项目(三)--vue常用插件

    一.直接拉取的模板中,package.json如下: { "name": "vuecli2-test", "version": " ...

  6. 【监控笔记】【2.4】SQL Server中的 Ring Buffer 诊断各种系统资源压力情况

    SQL Server 操作系统(SQLOS)负责管理特定于SQL Server的操作系统资源. 其中相关的动态管理试图sys.dm_os_ring_buffers将被标识为仅供参考.不提供支持.不保证 ...

  7. 一分钟安装mysql

    学数据库的人都知道,MySQL数据库是比较基本的掌握要求,不仅开源而且社区版本是免费使用的.由于工作上或者经常更换系统的原因,有时候会需要安装MySQL数据库.为了不至于每次安装都要查阅资料,现把安装 ...

  8. ls 命令通配符(3)

    使用过正则的人应该很熟悉通配符.如果非要解释的话,我找来一段: 通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件. 当查找文件夹时,可以使用它来代替一个或多个真正字符:当不知道真正 ...

  9. 微信JSSdk实现分享功能

    1. 概述 微信分享服务器的作用是为用户在微信浏览器端对来自网站以及客户端的页面进行二次分享链接时更友好的展示提供服务.为实现二次分享功能需要使用微信JS-SDK来开发. 微信JS-SDK是微信公众平 ...

  10. PHP数据结构基本概念

    原文:https://www.cnblogs.com/crystaltu/p/6408484.html 学习任何一种技术都应该先清楚它的基本概念,这是学习任何知识的起点!本文是讲述数据结构的基本概念, ...