背景🌼

1、案例

​ 描述:F5 使用优先级组在 2 台服务器之间实现负载,平时流量都负载到服务器A,当服务器A Down时,流量都切换到服务器B上。

​ 问题:当服务器A 再次变为 UP 时,未超时旧连接会继续负载到服务器B 上,导致部分业务异常。

​ 需求:当服务器A 变为 UP 时,需要自动关闭客户端到服务器B 的连接。以将流量移动到服务器A。

2、解决方法

​ 当 F5 检查到 Server A 状态变为 UP 的日志时,自动触发删除所有客户端到 Server B 流量的命令。

一、基础环境🌻

1、环境拓扑

image-20220617163333131

说明:地址和优先级等信息已经在上图进行描述,pool 中少于一个成员存活时触发优先级组切换。现在当客户端访问 F5 虚拟服务 192.168.6.234:80 ,将会把流量负载到Server A

二、实验配置🌹

1、模拟 Server A Down

关闭 Server A 服务器,检查当前连接状态。

image-20220617170024379

通过以上截图显示,当前流量已经负载到 Server B

2、配置触发命令

/config/user_alert.conf 中添加以下命令:

1
2
3
alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_UP  "Pool /Common/pool_test member /Common/192.168.6.80:80 monitor status up" {
exec command="tmsh delete sys connection ss-server-addr 192.168.10.223 ss-server-port 80"
}

命令含义:当 Server A 成员状态 up 时,删除 Server B 全部连接。

3、重启进程

1
tmsh restart sys service alertd

三、实验测试🌷

(1)开启 Server A 服务器,并检查当前流量连接状态。

image-20220617172413409

通过以上截图显示,当前流量已经负载到 Server A

(2)在 F5 ltm 日志上查看 Server A 状态变为 UP 的日志。

image-20220617173050793

(3)在 F5 Audit 日志上查看触发删除 Server B 连接的命令日志。

image-20220617173026470

总结:通过以上知识可举一反三,当触发其他日志告警时,也可执行响应的命令。

示例:当VS Down,可执行抓取该VS 10000 个数据包等等。

注意:触发多条命令时,命令之间使用分号进行分隔。