会话保持

首先要熟悉两个概念:连接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. 关于在DBGridEh的一个字段使用checkbox的方法 .

    在DBGridEh的columns中新增加一个字段 1.如果你选择的数据库字段,则选择checkbox为true,并在keylist中输入0和1,就可以了 2.如果你选择的是一个临时字段,在数据集中新 ...

  2. Gradle之Gradle 的基本使用(一)

    [Android 修炼手册]Gradle 篇 -- Gradle 的基本使用 预备知识 基本的 android 开发知识 了解 Android Studio 基本使用 看完本文可以达到什么程度 掌握 ...

  3. zstack分配的虚拟机的dns设置

    环境: $ uname -a Linux 10-57-19-61 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x8 ...

  4. flask-profiler, 监视端点调用并尝试进行某些分析的Flask 事件探查器

    源代码名称:flask-profiler 源代码网址:http://www.github.com/muatik/flask-profiler flask-profiler源代码文档 flask-pro ...

  5. Django框架效率问题的解决方法和总…

    由于项目的需要,学习了Django框架,Django框架的MTV很清晰,通过MTV能够很好地了解Django框架的内部机理.但是在使用过程中发现了一个严重的问题,就是当有大量IO(写数据库操作)的时候 ...

  6. JavaScript —— 用法 输出

    用法 必须在<script>标签内 可以在<body>和<head>部分中 不限数量 <script> ... </script> 即可,不 ...

  7. 四、Zabbix-zabbix agent部署

    1.添加zabbix安装源 rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch ...

  8. maven指定本地jar包

    来自 https://blog.csdn.net/zhengxiangwen/article/details/50734565 一.怎么添加jar到本地仓库呢?步骤:1.cmd命令进入该jar包所在路 ...

  9. Hive-java.lang.ClassNotFoundException: org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe

    Task with the most failures(): ----- Task ID: task_1555476136794_8201_m_000000 URL: http://hadoop1:8 ...

  10. [Web 前端] 030 ajax 是什么

    AJAX 是什么 1. AJAX 是一种"艺术" 简单地说 AJAX 是在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的艺术 网上是这样说的 AJAX 指异步 Java ...