专栏首页奕知伴解F5 LTM 负载均衡基础理论

F5 LTM 负载均衡基础理论

PC端建议访问

https://www.liuluanyi.cn

或点击底部原文阅读


F5的默认配置文件是ucs后缀的文件,如果想查看可以把ucs改成rar后缀的压缩文件格式并解压便可以看到

在F5 BIG-IP LTM的内部对于数据包的处理方式,存在有两种主要的工作模式,分别针对于四层处理和七层处理,其中四层处理模式命名为Performance L4 ,七层处理模式命名为Standard.

在Performance L4的情况下,BIG-IP LTM是按照纯四层的处理方式对流量处理,换句话说基本上只看IP和端口部分的内容,然后在对数据包进行转发的时候,对四层信息进行处理,比如替换目的IP、目的端口,然后就直接进行转发了,对其他的TCP参数不进行任何的变动。

Standard 模式是BIG-IP LTM TMOS 的Full Proxy结构,在这种结构下,BIG-IP LTM对于连接,建立两个TCP堆栈,分别是Client side 和 Server side。

另外再多说一点Virtual server的类型Forwaiding,它有一种基于Layer 2,VS设置与关联VLAN中的节点共享相同的IP地址,没有pool members;另一种基于IP,同样没有pool members,接受外部VLAN上的所有流量并将其转发到VS中目标IP地址的服务器。

Virtual Server 执行顺序

  • 指定IP地址和指定端口 10.0.33.199:80
  • 指定IP地址和全端口 10.0.33.199:*
  • IP网段和指定端口 10.0.33.0:433 netmask 255.255.255.0
  • IP网段和全端口 10.0.33.0:* netmask 255.255.255.0
  • 全零网段和指定端口 0.0.0.0:80 netmask 0.0.0.0
  • 全零网段和全端口 0.0.0.0:* netmask 0.0.0.0

应用负载均衡策略

静态负载均衡算法:轮询,比率(使用轮询算法时,pool member或node中设置的比率值不生效) 动态负载均衡算法: 最少连接数,最快响应速度,观察方法,Predictive预测法,Dynamic Ratio 动态比率

轮询算法

轮询算法:顾名思义就是轮换的访问服务器。通常使用在比较简单的情况下。有时,在大流量和大量新建连接时,也采用轮询算法保证服务器接收请求的平均性,避免动态算法的计算间隔带来的单台服务器压力过大的问题。

比率算法:

在BIG-IP LTM上给每个服务器分配一个加权值为比例,根椐这个比例,BIG-IP LTM把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

比率算法通常用于在后台服务器的服务能力不均匀的情况下。可以手工指定每台服务器所接收的请求比率。实现负载的均衡性。

最少连接数 在BIG-IP LTM上对每一台服务器的当前连接数进行统计,当有新的请求进入时,将新的请求分配给当前最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP LTM就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

最小连接数为最常用的负载均衡算法之一,在后台服务器处理能力均等的情况下,使用最小连接数可以得到最为平衡的负载均衡效果。

最快响应速度 在BIG-IP LTM上通过观察每台服务器得应用响应速度,当有新的请求进入的时候,将新的请求分配给响应最快的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP LTM就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

Note:如果比较有心的小伙伴可以留意到我前面介绍负载方式都是基于member,而关于node方式是不一样的,因为他们的主体不同,一个是以node为主体,一个是以member为主体。

node : 表示服务器的IP地址;

pool member : node上运行的一个服务,用IP地址和服务端口的组合表示

pool : 一个或多个pool member的逻辑分组,一个pool代表一个应用

Virtual server : IP地址和端口组合而成用来监听客户端的请求

会话保持 在大多数后台应用系统的设计中,没有实际考虑到将被应用于负载均衡的环境中,为了保持在用户访问时与单机运行环境的一致,因此,在BIG-IP LTM上必须采用会话保持功能。 连接(connection)与会话(Session)的区别 在开始讨论什么是会话保持之前,必须先清楚一个概念,就是连接和会话的区别。这个也是在很多不同厂商,不同的产品之间一个比较容易混淆的概念。 首先,我们来看什么是一个连接(connection)。在四层负载均衡的概念中,连接是四层负载均衡的最小元素,一个连接包含: 源端口:通常是在客户端的一个随机产生的端口。 源IP:发起请求的源IP地址。 目的端口:通常是四层负载均衡上的虚拟服务端口。 目的IP: 通常是BIG-IP LTM上的虚拟服务地址。

而会话(Session)的概念则要广泛一些,通常情况下,一个会话是由多个连接组成。BIG-IP LTM将一个会话里的多个连接认为是同一个用户发起的,是为同一个用户服务的。在BIG-IP LTM的概念中,一个Session通常就是会话保持表中的一条记录所对应的所有连接。每个命中到这条记录的连接都是属于同一个Session的。比如当我们选择源地址会话保持的时候,会话保持表里面的每个记录对应一个源IP地址,则所有从这个源IP地址发起针对一个VS的连接都认为是一个Session。在现在的互联网时代,session相信不用我多说啥了。

如下图的HTTP请求

下面说说Virtual server 中的Default Persistence Profile 中三种source_addr、dest_addr、cookie :

源地址(source_addr) :当我们选择源地址会话保持的时候,会话保持表里面的每个记录对应一个源IP地址,则所有从这个源IP地址发起针对一个VS的连接都认为是一个Session。

目的地址(dest_addr): 一般应用于外面三条链路如:移动、联通、电信,如果你只想走电信的链路,这时可以运用。

cookie : 是一种用在HTTP应用中的一种非常普遍的技术。Cooike 有效的改进了HTTP协议的无状态性。使原本无状态的HTTP协议变成有状态的应用协议。是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。浏览器可以决定是否保存这片数据,一旦WEB浏览器保存了这片数据,那么它在以后每次访问该WEB服务器时,都应在HTTP请求头中将这片数据回传给WEB服务器。显然,Cookie最先是由WEB服务器发出的,是否发送Cookie和发送的Cookie的具体内容,完全是由WEB服务器决定的。

当客户进行第一次请求时,客户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。

Oneconnect

BIG-IP LTM的Oneconnect其实是可以用于TCP层面上的其他协议的。只是当在一个VS上同时关联HTTP Profile和One Connect Profile的时候,BIG-IP LTM就会把所有这个VS的流量按照HTTP协议来进行One Connect处理。 OneConnect运行的首先前提是使用VS Standard模式

One Connect Profile不是必须和HTTP Profile共用,也可以用于其他应用协议,但必须使用iRules编程来调用One Connect。


上述过程如有错误,欢迎指正。共同学习,砥砺前行。

本文分享自微信公众号 - 奕知伴解(yzbjchat),作者:刘銮奕

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • F5之LTM入门

    服务器负载均衡器是指设置在一组功能相同或相似的服务器前端,对到达服务器组的流量进行合理分发,并在其中某一台服务器故障时,能将访问请求转移到其它可以正常工作的服务...

    刘銮奕
  • 华为SDN之VXLAN

    1、第一次虚拟化:利用隧道技术将边缘设备互连透传二层报文;整网抽象理解成一台端口数目扩展的超大LAN switch。

    刘銮奕
  • HTTP 响应代码

    HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客...

    刘銮奕
  • AWS的Elastic IP和Private IP的区别

    上图elastic IP即弹性IP: 弹性 IP 地址 是专为动态云计算设计的静态 IPv4 地址。弹性 IP 地址与 AWS 账户关联。借助弹性 IP 地址...

    Jerry Wang
  • AWS的Elastic IP和Private IP的区别

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • kail洪水攻击

    在计算机行业,拒绝服务(DoS)或分布式拒绝服务(DDoS)攻击是指不法分子企图让某机器或网络资源无法被预期的用户所使用。虽然执行DoS攻击的方式、动机和目标不...

    周俊辉
  • 二次元!IP!拒绝同质化!DataEye发布2016年Q1新品洞察报告

    <数据猿导读> 经历了2015年的“寒冬论”,最苦最累的游戏CP们终于挺过来了,DataEye数据中心行研师们,针对Q1移动游戏新品数据进行了深度解析,从新游市...

    数据猿
  • MapReduce设计模式

    MapReduce设计模式(MapReduce Design Pattern) 整个MapReduce作业的阶段主要可以分为以下四种:   1、Input-M...

    Albert陈凯
  • 颜色空间系列1: RGB和CIEXYZ颜色空间的转换及相关优化

    颜色空间系列代码下载链接:http://files.cnblogs.com/Imageshop/ImageInfo.rar (同文章同步更新)

    用户1138785
  • 为什么选择 Rust 作为你的下一个编程语言【Programming】

    为项目选择编程语言通常是一个复杂的决定,尤其是当涉及从一种语言切换到另一种语言时。 对于许多程序员来说,这不仅是一个技术考验,而且是一个深刻的情感抉择。 由于缺...

    Potato

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动