0

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

 1 year ago
source link: https://blog.51cto.com/u_9346709/6855458
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

  • 使用网页和TMSH配置virtual servers,pools,monitors,profiles和persistence等。
  • 查看统计信息
F5 LTM 知识点和实验 2-负载均衡基础概念_源地址

基础概念:

**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的状态。

F5 LTM 知识点和实验 2-负载均衡基础概念_源地址_02

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

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

状态图标:

图标 解释
F5 LTM 知识点和实验 2-负载均衡基础概念_源地址_03 配置为enabled,且检测为可达。对象可用。表示BIG-IP系统为目的地址为该对象的流量服务。
F5 LTM 知识点和实验 2-负载均衡基础概念_源地址_04 配置为enabled,但是暂时不可达。该对象当前不可用,但稍后可能在没有用户干预的情况下变得可用。例如,已达到配置连接限制的对象可能会显示黄色状态,然后在连接数量低于配置限制时切换到绿色状态。
F5 LTM 知识点和实验 2-负载均衡基础概念_F5_05 配置为enabled,但是判定为不可达。该对象不可用。表示BIG-IP系统无法为目的地址为该对象的流量提供服务。例如,当一个节点因为不可用而服务检查失败时,可能会出现这种状态。此状态需要用户干预才能将对象状态恢复为绿色。
F5 LTM 知识点和实验 2-负载均衡基础概念_F5_06 对象的可用性未知。例如,该对象未配置为服务检查,该对象的IP地址配置错误,或该对象与网络断开时,可能会出现这种状态。此图标表示会话正在挂起,尚未建立。<br/>注意:状态为unknown的池成员和节点有资格接收客户端请求。
F5 LTM 知识点和实验 2-负载均衡基础概念_SSL_07 用户主动禁用(disabled)了一个可用对象。只保持现有会话或者持久化链接流量定向到此对象。
F5 LTM 知识点和实验 2-负载均衡基础概念_F5_08 用户主动下线(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卸载):

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

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上。

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

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]
F5 LTM 知识点和实验 2-负载均衡基础概念_持久性_11

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
F5 LTM 知识点和实验 2-负载均衡基础概念_F5_12
  • Name:https_pool
  • Load Balancing Method:Round Robin
  • Member:172.16.20.3:443 ,172.16.20.2:443 ,172.16.20.1:443
F5 LTM 知识点和实验 2-负载均衡基础概念_持久性_13

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

  • Name:configltm_src_persist
  • Persistence Type:Source Address Affinity
  • Parent Profile:source_addr
  • Timeouts:30 seconds
  • Prefix Length:Specify IPv4 and 16
F5 LTM 知识点和实验 2-负载均衡基础概念_F5_14

4、创建两个vs

  • Name:http_vs
  • Destination Address:10.10.10.100:80
  • Default Pool:http_pool
F5 LTM 知识点和实验 2-负载均衡基础概念_F5_15
F5 LTM 知识点和实验 2-负载均衡基础概念_持久性_16
  • Name:https_vs
  • Destination Address:10.10.10.100:443
  • Default Pool:https_pool
  • Default Persistence Profile:configltm_src_persist
F5 LTM 知识点和实验 2-负载均衡基础概念_源地址_17
F5 LTM 知识点和实验 2-负载均衡基础概念_源地址_18

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实用程序中是不可见的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK