F5 LTM 知识点和实验 2-负载均衡基础概念

news2024/11/25 5:31:42

第二章:负载均衡基础概念

目标:

  • 使用网页和TMSH配置virtual servers,pools,monitors,profiles和persistence等。
  • 查看统计信息

image-20230204164108560

基础概念:

Node一个IP地址。是创建pool池的基础。可以手工创建也可以自动创建。node和pool member的区别在于node是一个ip,如172.16.20.1,而pool member是一个ip:port,如172.16.20.1:80
Node 状态enabled,disabled,forced offline。
pool member一个ip:port的组合,是在node创建完之后才能创建的,如172.16.20.1:80。
pool是pool member的组合,是一个逻辑组,需要关联到virtual server。
pool 状态enabled,disabled,forced offline。
virtual server一个ip:port的组合,是F5的流量入口之一。
virtual address当我们创建virtual server的时候,会有两个对象产生:virtual server(IP:port)和virtual address(ip),virtual address可以被宣告到网络里。

地址转换(Address Translation):

当一个数据流到达F5设备的时候,进行地址和端口的匹配,如果是F5上的vs,F5就对他进处理,在经典的vs中,数据包将会负载到其中一个pool memebr上,后端服务器是不会感知到这个数据包被F5处理过,后端服务器以为是用户直接访问。

F5设备将一个会话(session)拆分成两个链接(connection),client-side connection的两端分别是client和F5设备,server-side connection两端是F5设备和pool member。F5在这两个链接中间可以修改一些数据,比如加解密,增加字段等。

Fullnat选择(Address Translation Routing Assumptions):

如果你需要将流量流经F5设备,你有两种选择,第一种将服务器的默认网关配置成F5的接口地址,第二种选择将流经F5的流量做源地址和源端口转换。

如果选择源地址源端口转换的话,你需要开启Auto Map的功能,并且建议使用一个浮动地址做转换后的地址。注意,单个ip可以支持64k的并发连接,如果并发连接更多,你需要成倍配置浮动地址,以防止端口耗尽。

使用源地址源端口转换的坏处,你会发现,在后端服务器上抓到的包,源地址全是F5的浮动ip,如果你做日志记录或者来源认证,你会变得很麻烦。如果你使用的是http协议,你可以使用X-Forward-For技术解决此问题。

健康检测(Health Monitoring)

健康检测用于检测设备是否存活和是否正常工作,一般情况,健康检测需要周期性的接收到执行的响应,如果超时,则认为目标不正常,F5就对这个设备进行摘流,直到他恢复正常。

LTM支持node和pool memebr的健康检测。当node健康检测认定不正常的时候,所有有关此node的pool member都会被认定为不正常,但是pool member的健康检测认定为不正常,不会影响node的状态。

对象层次结构和状态(object hierarchy and status):

每一个模块都影响其他的模块,他们都是用层级关系的,比如一个node的健康检测为不正常,会直接将所有有关此node的pool member都会被认定为不正常,但是反过来,一个pool member不正常,不会影响node的状态,当pool member所有成员都不正常,pool会被认定为不正常,同时也会影响virtual server的状态。

image-20230216231832086

状态:

状态可能是通过健康检测做出的认定,也可能是管理员手工配置的。管理员可以通过tmsh或者网页进行配置。分为三种状态:

  • Enabled:符合接流条件
  • Disabled:保持现有活跃链接,对于新建连接,如果属于已存在的持久性会话(persistence session),则依然会建立链接,否则不会建立。
  • Forced offline:保持现有活跃链接,不进行新连接建立。

状态图标:

图标解释
image-20230216234208225配置为enabled,且检测为可达。对象可用。表示BIG-IP系统为目的地址为该对象的流量服务。
image-20230216234324929配置为enabled,但是暂时不可达。该对象当前不可用,但稍后可能在没有用户干预的情况下变得可用。例如,已达到配置连接限制的对象可能会显示黄色状态,然后在连接数量低于配置限制时切换到绿色状态。
image-20230216234336460配置为enabled,但是判定为不可达。该对象不可用。表示BIG-IP系统无法为目的地址为该对象的流量提供服务。例如,当一个节点因为不可用而服务检查失败时,可能会出现这种状态。此状态需要用户干预才能将对象状态恢复为绿色。
image-20230216234346247对象的可用性未知。例如,该对象未配置为服务检查,该对象的IP地址配置错误,或该对象与网络断开时,可能会出现这种状态。此图标表示会话正在挂起,尚未建立。
注意:状态为unknown的池成员和节点有资格接收客户端请求。
image-20230216234354148用户主动禁用(disabled)了一个可用对象。只保持现有会话或者持久化链接流量定向到此对象。
image-20230216234404034用户主动下线(forced offline)了一个可用对象,不将流量导向此对象。

配置文件(profile):

profile是一个很有用的配置项,可以很容易的定义一个流量的行为。profile可以做到:

  • 更改网络流量的行为。
  • 对一个数据包进行深层次的检查。
  • 减少基础设施的硬件需求,以适应外部技术的变化和发展。
  • 调整网络上的性能和吞吐量。
  • 减少应用服务器的处理量。

具体的说,profile是一个配置对象,其中包括控制和复制特定网络流量(如HTTP链接),profile还为你提供了一种启用持久性和管理客户端应用程序认证的方法。

persistence profile:

现在,有越来越多的网页应用是有状态的,这意味这一个链接需要维持稳定的上下文关系,比如,电子商务web应用程序需要维护购物车和用户放置物品的逻辑关系。对于负载均衡环境中有状态的应用程序,用户一旦链接,就必须连接到同一个应用程序实例上,以确保访问存储在该实例中的信息是准确的。持久性(persistence)就可以做到这一点。

有很多种实现persistence的方法,简单一些的方法,比如simple,SSL,cookie,高级一些方法,如SIP,Universal和Hash。

simple persistence是一个基于网络层特征的方式,比如基于源目地址的持久性,这种方式是简单的持久性能力,使用简单,但是缺点是在使用源地址亲和持久性的特性时,会导致流量非常不均匀。

cookie persistence是一种使用cookie头来完成持久化能力的方式,许多应用服务器插入一个session id 在响应报文中,这个cookie用于用户上下文信息同步和访问存储服务器的数据。基于此,F5设备向HTTP包头中添加另一个cookie是十分容易的,基于cookie的持久性相较于simple的方式,流量会更加均匀。

source address affinity persistence 源地址亲和持久性允许一个特定ip或者一组ip被选择转发到同一个pool member上。当第一个数据包发送到F5设备上,会根据负载均衡策略进行分配,同时在内存中创建一个持久化记录,之后相同的源地址在访问这个vs的时候就会根据持久化记录的信息转发数据包。每次匹配到持久化记录时,记录中的时间会重置为0,当时间超过老化时间,记录将被删除。

你可以使用命令查看记录。

show ltm persistence persist-recoeds

cookie persistence工作原理是在客户端第一次链接到vs的时候,在响应报文中,F5设备在http包头中插入特定的cookie,这个cookie随着响应报文发送到客户的浏览器中并储存,下一次请求会根据这个特定的cookie转发到特定的pool member中。持久化记根据cookie的老化时间超时而消失,或者客户端关掉网页。F5设备支持多种cookie的持久化,比如:cookie insert、cookie rewrite、cookie passive等。

SSL offload(ssl卸载):

image-20230220230801238

F5的vs可以充当一个TLS/SSL会话的终端,如果流量在F5设备上解密,F5设备可以在发送到pool memebr之前对执行cookie persistence 和irules等操作。这样的优势是,不需要昂贵的SSL加速硬件,还可以为每一个pool member提供单独证书,实现集中管理。

client SSL profile:

当加密的流量到达配置了client ssl profile的vs上,F5设备在ssl协商过过程中充当服务端,流量被解密,此时可以执行iRules,流量策略,ASM策略,cookie persistence的工作。没有加密的流量会转发到pool member上。回复的数据包,在不加密的状态下发送到F5设备上,F5对其进行加密,返回给client。

server SSL profile:

server SSL profile 可以将流量加密之后转发到pool member。这个是对server-side进行加密,不是client-side侧的。

同时使用server和client SSL profile:

单独使用client ssl profile可以提高性能,但是允许线路上未加密流量通过,降低了安全性,我们同时使用server和client SSL profile,以保证安全性,同时还能享受F5的iRules、本地流量策略、cookie persistence等特性。如果不需要这些特性,你可以不配置SSL profile,直接将加密流量转发到pool member上。

image-20230220230816373

Big-ip的配置文件:

文件描述
/config/bigip.conf包含virtual server、load balancing pools、profile、monitors和SNATs。
/config/bigip_base.conf包含platform、network(VLANs、interface、self-ip)、HA configuration data(traffic groups、trust domains)
/config/bigip_user.conf本地用户的account和加密后的password。
/config/BigDB.dat这个数据库保存了一组配置键,这个键值定义了BIG-IP系统各个方面的行为。例如:ui.statistics.modulestatistic.localtraffic.persistencerecords 如果配置成enabled,你可以使用Configuration utility查看persistence的记录,如果配置成disabled,则只能使用tmsh查看persistence记录
/config/bigip.license包含lecense的记录,包含日期和能提供的特性

保存配置:

tmsh save sys config

可以将内存中运行的配置保存在文件当中,保存文件包含:

  • /config/bigip.conf
  • /config/bigip_base.conf
  • /config/bigip_user.conf

加载配置:

tmsh load sys config

这个命令的效果:

  • 重新加载所有本地负载均衡的配置,如vs,pool, monitor等。
  • 重新加载网络配置,如selfip,vlan,traffic group。
  • 重新加载系统用户信息。
  • 保留管理地址
  • 保留license文件
  • 保留/shared文件夹中的文件
  • 保留BigDB.dat中的key

UCS 存档:

使用ucs存档可以将重要的配置文件存入不同的文件夹中,用于灾备。

# 保存
tmsh save sys ucs 20230225_bigip.ucs
# 加载
tmsh load ucs 20230225_bigip.ucs

ucs包含:

  • 所有big-ip的配置文件
  • 产品系列号
  • 本地用户信息和密码
  • DNS 的zone 文件
  • SSL证书和密钥

注意事项:

  • 你需要在创建ucs的设备上进行恢复操作,因为license是与F5的串码相关联的,如果需要更换设备,需要将license关联到新的设备上。重新关联需要照F5的售后。

实验:

使用界面创建一个应用

1、创建一个HTTP 监控器

  • Name:configltm_http_monitor
  • Type:HTTP
  • Send String:GET /index.html\r\n
  • Receive String:Server [1-3]

image-20230611183701537

2、创建两个pool

  • Name:http_pool
  • Monitor:configltm_http_monitor
  • Load Balancing Method:Ratio(member)
  • Member:172.16.20.3:80 -3,172.16.20.2:80 -2,172.16.20.1:80 -1

image-20230611184125693

  • Name:https_pool
  • Load Balancing Method:Round Robin
  • Member:172.16.20.3:443 ,172.16.20.2:443 ,172.16.20.1:443

image-20230611225601630

3、创建源地址关联持久性配置文件

  • Name:configltm_src_persist
  • Persistence Type:Source Address Affinity
  • Parent Profile:source_addr
  • Timeouts:30 seconds
  • Prefix Length:Specify IPv4 and 16

image-20230611233737647

4、创建两个vs

  • Name:http_vs
  • Destination Address:10.10.10.100:80
  • Default Pool:http_pool

image-20230611234110404

image-20230611234747372

  • Name:https_vs
  • Destination Address:10.10.10.100:443
  • Default Pool:https_pool
  • Default Persistence Profile:configltm_src_persist

image-20230611234905500

image-20230611234938297

5、在浏览器输入http://10.10.10.100,查看pool的流量统计,改变权重4:4:1之后,查看统计。

实验预期:

当您第一次通过访问http_vs及其关联的池http_pool测试HTTP应用程序,并查看本地流量统计信息时,您应该看到,在172.16.20.1、172.16.20.2和172.16.20.3的池成员中,连接分布到所有池成员,比例接近1:2:3。在改变每个成员的比例并重新测试后,连接的分布比例应该接近4:4:1。

当您第一次通过虚拟服务器https_vs及其关联池https_pool测试HTTPS应用程序时,您应该看到做出了一个负载平衡决策。由于附加到虚拟服务器的源地址关联持久性配置文件,来自你电脑的后续连接应该被定向到相同的池成员。您应该已经看到了类似以下的持久性信息:

Sys::Persistent Connections
source-address 10.10.0.0 10.10.10.100:443 172.16.20.1:443 (tmm: 1)
Total records returned: 1

在等待持久性记录过期30秒后,你应该看到F5做出另一个负载平衡决策,然后创建了新的持久性记录。

在Source Address Translation调整成auto map之前时访问不通的,因为不在同一个二层内。

使用TMSH创建一个应用

1、创建一个pool

  • Name:ssh_pool
  • Load Balancing Method:Round Robin
  • Member:172.16.20.3:80 ,172.16.20.2:80 ,172.16.20.1:80
# 创建
create ltm pool ssh_pool load-balancing-mode round-robin members add {172.16.20.1:22 172.16.20.2:22 172.16.20.3:22}
# 查看
list ltm pool ssh_pool
# 手工保存
save sys config
# 离开
quit

2、使用命令查看在bigip.conf是否存在ssh_pool配置。

grep ssh_pool /config/bigip.conf

3、创建一个vs

  • Name:ssh_vs
  • Destination Address:10.10.10.100:22
  • Default Pool:ssh_pool
# 创建
create ltm virtual ssh_vs destination 10.10.10.100:22 pool ssh_pool profiles add { tcp }
# 查看
list ltm virtual ssh_vs
# 查看统计信息
show ltm pool ssh_pool members { all }
show ltm pool ssh_pool
show ltm virtual ssh_vs
# 查看会话
show sys connection ss-server-port 22

保存配置文件成UCS

# 保存
save sys ucs /shared/tmp/test.ucs
# 加载
load sys ucs /shared/tmp/test.ucs

实验预期:

在您最初创建ssh_vs之后,在bigip.conf中找不到它的配置。使用TMSH所做的更改只影响正在运行的配置。为了查看bigip.conf中ssh_vs的条目,必须手动将正在运行的配置保存到存储的配置中。这种行为与Configuration实用程序不同,在Configuration实用程序中,更改在完成后立即记录到正在运行的配置和存储的配置。
bigip.conf包含从上次运行配置保存到存储配置的应用程序流量处理对象,如虚拟服务器、池、监视器和配置文件。
bigip_base.conf包含从上次运行配置保存到存储配置的网络和系统相关对象(如vlan、self ip、设备组和平台信息)。
bigip_user.conf包含BIG-IP系统从上次运行配置保存到存储配置的所有用户的用户名和密码。
bigip.license包含BIG-IP系统的许可信息。服务检查日期将根据最后一次将系统档案提交到F5许可证服务器进行激活的时间而变化。
只有当UCS档案位于/var/local/ucs时,配置实用程序才能看到它们,因此,您保存在/shared/tmp中的UCS在Configuration实用程序中是不可见的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/794803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7.26总结

继承和实现的区别: 1.修饰符不同: 继承修饰符extends,实现修饰符implements 2.单继承,多实现,Java允许一个类仅能继承一个其他类,即一个类只能有一个父类,这个限制被称为单继承性,而接口允许…

测试开源C#人脸识别模块ViewFaceCore(4:口罩检测、性别预测、年龄预测)

ViewFaceCore模块中的MaskDetector类支持识别人脸是否戴了口罩或有遮挡&#xff0c;主要调用PlotMask函数执行口罩检测操作&#xff0c;其函数原型如下所示&#xff1a; PlotMaskResult PlotMask<T>(T image, FaceInfo info)public class PlotMaskResult{//// 摘要:// …

Docker容器命令(有点详细)

文章目录 Docker 容器容器运行背后启停命令run交互模式需不需要接/bin/bash createexecattachpstoplogscprmcommitexportimportsystem对比export、saveimport、loadcommit、exportimport Docker 容器 Docker 容器是 Docker 平台中的一个基本概念&#xff0c;它是 Docker 技术的…

SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

一、数据聚合 聚合&#xff08;aggregations&#xff09;&#xff1a; 实现对文档数据的统计、分析、运算。 &#xff08;一&#xff09;聚合的常见种类 桶&#xff08;Bucket&#xff09;聚合&#xff1a; 用来做文档分组。 TermAggregation&#xff1a; 按照文档字段值分组…

【计算机网络】2.1——物理层(编码波形、奈氏准则和香农公式计算)

物理层 基本概念 概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流 为数据链路层屏蔽了各种传输媒体的差异 数据链路层只需要考虑如何完成本层的协议和服务&#xff0c;而不必考虑网络具体的传输媒体是什么 物理层协议主要任务 机械特性 指明接口所…

区块链学习笔记

区块链技术与应用 数组 列表 二叉树 哈希函数 BTC中的密码学原理 cryptographic hash function collsion resistance(碰撞抵抗) 碰撞指的是找到两个不同的输入值&#xff0c;使得它们的哈希值相同。也就是说&#xff0c;如果存在任意两个输入x和y&#xff0c;满足x ≠ y…

利用Stable diffusion Ai 制作艺术二维码超详细参数和教程

大家有没有发现最近这段时间网上出现了各种各样的AI艺术二维码&#xff0c;这种二维码的出现&#xff0c;简直是对二维码的“颠覆式创新”&#xff0c;直接把传统的二维码提升了一个维度&#xff01;作为设计师的我们怎么可以不会呢&#xff1f; 今天就教大家怎么制作这种超有艺…

Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 卷积神经网络&#xff0c;简称为卷积网络&#xff0c;与普通神经网络的区别是它的卷积层内的神经元只覆…

使用EasyPoi实现Excel的按模板样式导出

1&#xff0c;横向遍历 #fe 使用#fe命令可以实现集合数据的横向拓展&#xff0c;比如模板代码是 {{#fe:maths t.score}}导出的excel里面就会显示会自当前列&#xff0c;向右拓展&#xff0c;效果可参见下面的导出文件截图 2&#xff0c;横向遍历值 v_fe 使用v_fe命令可以实现…

vue3+ts+elementui-plus二次封装弹框

一、弹框组件BaseDialog <template><div classmain><el-dialog v-model"visible" :title"title" :width"dialogWidth" :before-close"handleClose"><!-- 内容插槽 --><slot></slot><template…

分布式理论:CAP理论 BASE理论

文章目录 1. CAP定理1.1 一致性1.2 可用性1.3 分区容错1.4 矛盾 2. BASE理论3. 解决分布式事务的思路4. 扩展 解决分布式事务问题&#xff0c;需要一些分布式系统的基础知识作为理论指导。 1. CAP定理 Consistency(一致性): 用户访问分布式系统中的任意节点&#xff0c;得到的…

【LeetCode】1143.最长公共子序列(闫氏dp可视化无分析)

class Solution { public:int longestCommonSubsequence(string text1, string text2) {int len1 text1.size(), len2 text2.size();text1 " " text1;text2 " " text2; //以上三行代码需要注意&#xff0c; //第一行是求string长度的方法 //第二行是…

使用3ds Max粒子系统创建飞天箭雨特效场景

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 设置箭头 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我使用多边形建模技术制作了一个简单的箭头&#xff0c;我将 在教程中使用。.max您可以从 下载部分。 箭头.max 步骤 3 将此箭头重命名为静态…

如何安装多个版本的python,python可以装两个版本吗

这篇文章主要介绍了可不可以在同一台计算机上安装多个python版本&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1、不同版本的python不能安装到同一台计算机上 可以的&#…

绿水青山,水质监测需要智能网关

“ 绿水青山就是金山银山&#xff0c;随着国家在环保领域的持续发力&#xff0c;水作为环境监管极其重要的一极&#xff0c;尤其是河湖水系的监管&#xff0c;也越来越严格&#xff0c;监测布点密度不断加大。水质自动监测站作为河湖断面监测和水质判断比较权威的工具&#xff…

LabVIEW开发谐振器陀螺仪仿真系统

LabVIEW开发谐振器陀螺仪仿真系统 陀螺仪是INS系统中最重要的传感器。它们的性能&#xff08;如精度和偏置稳定性&#xff09;决定了INS系统的水平。陀螺仪按原理分为三类&#xff1a;角动量守恒、萨格纳克效应和科里奥利效应。旋转坐标系中的移动物体受到的力与旋转坐标系的角…

微信小程序 样式和全局配置

WXSS wxss 把屏幕分为750个物理像素&#xff0c;大屏大&#xff0c;小屏小&#xff0c;随着设备不一致自动适配 推荐使用iPhone6作为标准&#xff0c;1个rpx 0.5个px&#xff0c;把px乘以2就是rpx的参数 import 导入外部样式表 import /common/common.wxss 样式 权重一…

Pytorch个人学习记录总结 09

目录 损失函数与反向传播 L1Loss MSELOSS CrossEntropyLoss 损失函数与反向传播 所需的Loss计算函数都在torch.nn的LossFunctions中&#xff0c;官方网址是&#xff1a;torch.nn — PyTorch 2.0 documentation。举例了L1Loss、MSELoss、CrossEntropyLoss。 在这些Loss函数…

Andrew算法求凸包模板

前置知识 向量的叉乘: 设 a ⃗ ( x a , y a , z a ) , b ⃗ ( x b , y b , z b ) \vec a(x_a,y_a,z_a), \vec b(x_b, y_b,z_b) a (xa​,ya​,za​),b (xb​,yb​,zb​), 令 a ⃗ \vec a a 和 b ⃗ \vec b b 的叉乘为 c ⃗ \vec c c , 有: c ⃗ ∣ i j k x a y a z a x b y…

微软对Visual Studio 17.7 Preview 4进行版本更新,新插件管理器亮相

近期微软发布了Visual Studio 17.7 Preview 4版本&#xff0c;而在这个版本当中&#xff0c;全新设计的扩展插件管理器将亮相&#xff0c;并且可以让用户可更简单地安装和管理扩展插件。 据了解&#xff0c;目前用户可以从 Visual Studio Marketplace 下载各式各样的 VS 扩展插…