F5 LTM 知识点和实验 3-负载均衡中的负载算法
第三章:负载均衡中的负载算法
负载算法分为静态的和动态的。静态的连接分布模式是预先设置的,流量处理中是不会变化的,动态的连接分布模式也是预先设置的,但是连接分布会根据某些因素的改变而调整。
轮询(round robin):
将新建的链接逐一转发到每一个后端服务器上。静态的。

比率轮询(ratio):
可以根据赋予的权重将流量分不到后端服务器上,ratio可以根据member或者node为单位进行赋予。静态的。

最小连接数(least connnection):
将新建的链接分发到当前连接最少的后端。对于长连接场景有很好的均衡效果,随着时间推移,设备的连接数会比较均匀。

最快(fastest):
将新连接分配给当前拥有最少未完成的第7层请求的应用节点,如果关联的vs同时不具备tcp和7层的profile,就会使用最少连接算法,进行负载。此方式对于流量分配到响应时间可能不同的设备非常有用。

最少会话(least sessions):
将新建连接转发到持久化表中最少记录的后端服务器上,这种方式必须关联persistence的profile,且persistence的profile必须使用持久化表。

加权最少连接数(weight least connection):
要求每个成员或节点分配一个非零连接限制,然后,请求被分配到使用其容量的最小百分比设备,其中容量是当前连接数与允许的最大连接数的比率。

观察(observed):
此算法计算一个动态比率(ratio)值,这个值基于四层连接数,bigip系统每秒钟都会统计每个后端的连接数,并分配一个比率值,当有一个新连接,会根据分配的比率值来进行连接分配,优选比率值最大的后端。

预测(predictive):
该算法对服务器性能随时间的推移进行排名,并优选性能有所提高的后端服务器,bigip系统根据一段时间内到每个成员的四层连接数计算动态比率值,每秒钟,bigip系统会观察到每个后端服务器的四层连接数,并与之前的连接数进行对比,以确定性能趋势,并为每一个成员分配一个比率值,如果连接数保持不变,则系统不更改比率值,如果连接数增加,则比率值减少,反之增加,新建连接会根据比率值进行分配,优选比率值最大的后端服务器。

动态比率(dynamic ratio):
此算法专门用于RealNetwork RealSystem服务器平台,配置了windows management instrumentation的windows平台或者配置了snmp代理的服务器。
优先组(priority group ):
优先组的概念允许你在单个池子内定于主要成员和备用成员。你需要对组进行赋值,同时要配置这个组最小成员数,当小于可用成员小于这个数的时候,会启用备用组。
举个例子:一个pool有6个member。3个在组10,3个在组5,同时配置最少可用成员为2,当接收到流量的时候,只有组10的3个成员会收到流量,组5的三个成员不会被分配流量。

如果此时组10内的两个成员健康检测失败或者手工配置为不可用,bigip系统将会激活下一个低优先级的组,这里就是组5的三个成员,此时流量将会分配到4个后端服务器上。

一般优先组使用有两种场景,第一种,在主用出现大量故障的情况时,需要启用道歉服务器。第二种,如果后端服务器被多种业务使用,比如同一个服务器同时具备web和ftp程序,正常时候服务器承载ftp,如果优先组的web服务器大量故障,承载了ftp的服务器被激活,也可以充当web服务器。
优先组取值范围:0-4294967295。
备用主机( fallback host):
如果池中的成员都不能正常提供服务了,vs将会直接发送一个http回应报文到客户端,将他们重定向到其他的主机上,比如道歉服务器,备用主机的能力是在http profile中配置,且只能应用在http场景里。

实验:
配置优先组:
1、清除http_pool的统计值

2、给http_pool配置少于2个成员时候,激活优先组
- 路径:Local Traffic ›› Pools : Pool List ›› http_pool,member tab ›› Priority Group Activation
- tmsh:
modify ltm pool http_pool min-active-members 2

3、更改http_pool的所属组
| memebr | ratio | priority group |
|---|---|---|
| 172.16.20.1:80 | 1 | 0 |
| 172.16.20.2:80 | 2 | 4 |
| 172.16.20.3:80 | 3 | 4 |
- 路径:Local Traffic ›› Pools : Pool List ›› http_pool ›› Current Members
- tmsh:
modify ltm pool http_pool members modify { 172.16.20.2:http { priority-group 4 } }
modify ltm pool http_pool members modify { 172.16.20.3:http { priority-group 4 } }

4、在浏览器中输入10.10.10.100,刷新10次,看统计信息。

5、清除http_pool的统计值,并把172.16.20.2:80这个rs配置为disable,在浏览器中输入10.10.10.100,刷新10次,看统计信息。

6、将172.16.20.3:80这个rs配置为disable,确保流量完全打到172.16.20.1这台机器上,并给http_vs添加基于source_addr的持久化配置。在浏览器中输入10.10.10.100并刷新10次。此时在将172.16.20.2和3配置成enable,在浏览器中请求10.10.10.100,看数据流达到那台rs上。


7、删除http_vs的持久化配置
实验预期:
将优先级组激活设置为少于2个成员并启用所有池成员,172.16.20.1:80应该没有收到流量。流量以2:3的比例分配给成员172.16.20.2和172.16.20.3。
如果将优先级组激活设置为少于2个成员,并且禁用池成员172.16.20.2:80,则激活下一个较低优先级组(0)。然后将流量按1:3的比例分配给成员172.16.20.1和172.16.20.3。
当向http_vs添加源地址关联持久性配置文件,并强制连接进行负载平衡并持久化到最低优先级组(172.16.20.1:80)中的池成员时,即使在重新启用其他两个成员并且池中再次有两个成员可用之后,仍然持久化到172.16.20.1:80,并且将继续这样转发,直到持久性记录过期。
配置比率负载均衡:
将负载均衡算法从Ratio(member)调整成为Ratio(node),调整node节点172.16.20.3的权重为5.

2、在网页中请求10.10.10.100,刷新10次,查看http_pool的统计值,
实验预期:
由于优先级组仍然在http_pool上配置,因此只需激活两个池成员即可满足最小值。成员172.16.20.2:80和172.16.20.3:80在最高优先级组中,并且是BIG-IP系统负载平衡连接的唯一成员。但是,即使池成员172.16.20.2:80的比率为2,池成员172.16.20.3:80的比率为3,BIG-IP系统也会忽略这些比率,而使用关联节点上配置的比率。节点172.16.20.3的比值为5,节点172.16.20.2的比值为1。因此,地址172.16.20.3:80的连接数大约是地址172.16.20.2:80的连接数的5倍.
测试连接限制对优先组激活的影响
1、清除http_pool的统计值,调整172.16.20.3:80的connection limit值为3.

2、在浏览器中请求10.10.10.100多次。
3、查看统计值。
4、调整http_pool的算法为轮询算法,并关闭优先组。
5、设置172.16.20.3:80的connection limit值为0
6、调整http_pool的成员,优先组的数值为0,ratio均为1.
实验预期:
在对池成员172.16.20.3:80设置连接限制之前,流量只在优先级组4中的两个成员172.16.20.2:80和172.16.20.3:80之间进行负载分担。到池成员172.16.20.3:80的最大并发连接数远远超过3。
在将池成员172.16.20.3:80的连接限制设置为3后,流量在所有池成员之间进行负载均衡,因为该池成员将周期性地达到其最大连接数,从而触发激活优先级组0,其中172.16.20.1:80是其成员。激活后,BIG-IP系统在所有三个池成员之间负载均衡流量,直到172.16.20.3:80上的连接数低于3。当查看http_pool的统计信息时,到172.16.20.3:80的最大并发连接数应该是3。到其他池成员的最大并发连接数将可能比3大。
相关文章:
F5 LTM 知识点和实验 3-负载均衡中的负载算法
第三章:负载均衡中的负载算法 负载算法分为静态的和动态的。静态的连接分布模式是预先设置的,流量处理中是不会变化的,动态的连接分布模式也是预先设置的,但是连接分布会根据某些因素的改变而调整。 轮询(round robi…...
多线程(JavaEE初阶系列2)
目录 前言: 1.什么是线程 2.为什么要有线程 3.进程与线程的区别与联系 4.Java的线程和操作系统线程的关系 5.多线程编程示例 6.创建线程 6.1继承Thread类 6.2实现Runnable接口 6.3继承Thread,使用匿名内部类 6.4实现Runnable接口,使…...
Ubuntu20.04点Ubuntu software没反应,打不开的解决方案(Ubuntu笔记)
首先检查Ubuntu Software的状态,在终端输入:systemctl status snap.ubuntu-software.ubuntu-software.service 如果状态显示为inactive,则需要启动snap.ubuntu-software.ubuntu-software.service,在终端输入:sudo sys…...
力扣1114.按序打印-----题目解析
题目描述 解析: class Foo {public int a 0;public Foo() {}public void first(Runnable printFirst) throws InterruptedException {// printFirst.run() outputs "first". Do not change or remove this line.printFirst.run();a;}public void second…...
Centos7.9安全部署_防火墙配置_端口配置_协议配置_IP配置_全部亲测---记录022_大数据工作笔记0182
在我们平时搭建大数据平台的时候,由于防火墙的限制,会让搭建集群的时候,报各种错误,但是,有些网络环境要求比较严格的地方,防火墙又要求必须要放开,尤其是.. 有些网络环境会安全组进行定时扫描,说实话,我们用的很多开源软件,一般都是低版本的话都有漏洞,但是升级的话又会很容易…...
Tik Tok海外公会是什么?
在数字社交媒体领域,TikTok已成为全球性的热门应用之一,印尼市场也不例外。作为全球第四人口最多的国家,印尼的年轻人口众多,是一个极具潜力的市场。对于希望在印尼市场进行TikTok公会申请的机构来说,了解市场发展趋势…...
elasticsearch批量导入问题
Testvoid bulkIndex() throws IOException{List<Product> products new ArrayList<Product>();products.add(new Product("香烟",135,1)); // products.add(new Product("瓜子",154,2)); // products.add(new Product("矿…...
SAP安装笔记
1、准备安装介质,SWPM10SP25,51050829_NW750_JavaExport、SAP_HANA_CLIENT、kernel放到/sapcd/NetWeaver目录下 进入SWPM10SP25执行./sapinst安装 2、待出现 “Open your browser and paste the following URL address to access the G…...
速速收藏!程序员副业赚钱的8种模式
程序员副业赚钱的方式有很多,我总结了程序员兼职赚钱,增加收入的八种模式,希望能够给在迷茫的程序员一点参考! 投资理财 很多程序员多少都会买买基金、炒炒股作为一个小副业,由于程序员大多是理科生,有比…...
2、基于redis实现分布式锁
目录 2.1. 基本实现2.2. 防死锁2.3. 防误删2.4. redis中的lua脚本2.4.1 redis 并不能保证2.4.2 lua介绍 2.5. 使用lua保证删除原子性 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setn…...
【问题记录】Ubuntu 22.04 环境下,程序报:段错误(核心已转储)怎么使用 core 文件和GDB调试器 解决?
目录 环境 问题情况 解决思路 原因分析 解决方法 番外知识 环境 VMware Workstation 16 Pro (版本:16.1.2 build-17966106)ubuntu-22.04.2-desktop-amd64 问题情况 本人在运行百万并发的服务端程序时,程序运行报:…...
9 Linux实操篇-实用指令
9 Linux实操篇-实用指令 文章目录 9 Linux实操篇-实用指令9.1 指定和修改运行级别-init/systemctl9.2 找回root密码9.3 Linux的指令说明9.3 帮助类-man/help9.4 文件目录类-pwd/ls/cd/mkdir/...9.5 时间日期类-date/cal9.6 搜索查找类-find/locate/which/grep9.7 压缩和解压类-…...
Hbase基础概念
HBase 一、HBase的数据模型1.HBase数据存储结构2.HBase存储概念3.HBase基本架构 二、HBase Shell1.DDL(Data Definition Language)1.namespace2.table 2.DML(Data Manipulation Language)1.写入数据2.读取数据3.删除数据 三、HBase组成架构1. Master架构…...
JTS-Angle角度类
目录: 获取AB连线与正北方向的角度求距离此点一定距离、一定夹角的点经纬度判断point点 在线段startPoint-etartPoint的左侧或者右侧米转换为弧度弧度转换为米 定义Point点 public class LatLngPoint {final static double RC 6378137;final static double RJ …...
pytest---环境切换(base-url)
前言 前面小编介绍了如何通过pytest的插件来实现自动化测试的环境的切换,当时使用的方法是通过钩子函数进行获取命令行参数值,然后通过提前配置好的参数进行切换测试环境地址,今天小编再次介绍一种方法,通过pytest的插件ÿ…...
linux跑代码,程序终止了,但资源没有释放。
linux跑代码,程序终止了,但资源没有释放。 程序终止,但是资源没有释放. kill -9 5062完成。 linux终止进程...
数据结构--线性表2-1
目录 一、线性结构的定义 二、线性表的表示 三、顺序表的实现(或操作) 1、修改: 2、插入: 四、顺序表的运算效率分析:时间效率分析: 一、线性结构的定义 若结构时非空有限集,则有且仅有一个…...
网访问内网机器:基于frp的内网穿透
随缘更新些我自己的博客网站里的文章吧 因为经常需要远程访问自己的机器,所以写一个博客记录一下 公网访问内网机器:基于frp的内网穿透 从公网中访问自己的私有设备向来是一件难事儿。 1. 为什么需要内网穿透? A. 计算机网络 如何在自己的机…...
【Spring框架】Spring读取与存储综合练习
练习 在 Spring 项⽬中,通过 main ⽅法获取到 Controller 类,调⽤ Controller ⾥⾯通过注⼊的⽅式调⽤ Service 类,Service 再通过注⼊的⽅式获取到 Repository 类,Repository 类⾥⾯有⼀个⽅法构建⼀个 User 对象,返…...
Python实现指定区域桌面变化监控并报警
在这篇博客中,我们将使用Python编程语言和一些常用的库来实现一个简单的区域监控和变化报警系统。我们将使用Tkinter库创建一个图形界面,允许用户选择监控区域,并使用OpenCV库进行图像处理和相似性比较,以检测区域内的变化&#x…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
