前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >F5 LTM 负载均衡基础理论

F5 LTM 负载均衡基础理论

作者头像
刘銮奕
发布2019-07-22 17:37:10
5.1K0
发布2019-07-22 17:37:10
举报
文章被收录于专栏:奕知伴解奕知伴解
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。


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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奕知伴解 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PC端建议访问
  • https://www.liuluanyi.cn
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档