简介:F5 BIG-IP双机冗余配置与全冗余解析是一份面向负载均衡运维及架构师的Word技术文档,旨在理清F5设备实现高可用与负载均衡的冗余机制。压缩包共1个文件,文件类型为doc,整体大小约240KB,便于离线阅读与查阅。文档重点对比串口心跳与网络心跳两种双机冗余方式:前者通过串口电平监测主备状态并借助ARP广播完成流量切换,后者基于TCP 1028端口传递心跳并支持Network FailSafe网络心跳配置;同时给出Floating IP/Peer IP设置、FailOver触发进程监控以及全冗余L2交换机堆叠架构的优缺点。读者可从中获得从双机切换原理、配置示例到大规模服务器群扩展方案的完整认知,也可作为F5高可用部署、故障切换与网络排障的直接参考,尤其适合数据中心双机热备及关键应用负载均衡场景。资源已有299人学习下载,适合需要系统理解F5冗余配置的网络工程师。
1. 双机冗余的意义:备机接管业务时,真的能接住吗
很多团队在采购F5负载均衡时,第一诉求就是「别让设备变成单点」。两台F5接到同一套业务网段里,主设备挂了自动切到备机,听起来是件理所当然的事。但我见过不止一次这样的场景:设备确实切换了,VIP也确实从主设备漂到了备机,可业务反而彻底中断了——备机上的配置是三个月前的,pool里的后端节点全是旧地址;或者连接镜像没开,所有在线用户的会话在切换瞬间全部断裂,支付请求直接超时。也就是说,双机冗余不只是「买两台设备再配个心跳」那么简单,它要解决的是三个连续问题:配置什么时候保持一致,状态能不能实时镜像,流量凭什么从主设备平滑交接到备机。本文就把这背后的机制拆开,再给出一套可以直接照抄的配置流程和检查清单,让你在落地F5双机冗余时少走弯路。适合正在运维F5、或者正准备做负载均衡双机改造的工程师阅读。
2. 双机冗余机制拆解:硬件、心跳与配置同步三板斧
2.1 硬件基础:F5设备内部的冗余与两台设备的物理连接
F5负载均衡设备本身是一台专用的网络设备,跑的是自家TMOS操作系统。要在它之上做双机冗余,第一层依赖其实是单台设备自身的硬件冗余能力。常见的物理形态里,电源模块通常有双份,风扇也是可热插拔的冗余配置,硬盘一般做成RAID或者双盘镜像。这些部件级冗余保证的是「一台设备内部不要因为单个零件损坏就宕机」,它是后面所有高可用逻辑的物理底座。虽然这部分平时感知不强,但采购选型时值得确认一遍,尤其是双电源模块和独立管理网口,后面会讲到它们各自的作用。
两台F5设备之间要建立冗余关系,需要物理连接上打通两条路径:一条是管理网络,负责设备之间的信任建立和配置同步;另一条是心跳链路,负责实时探测对端设备是否存活。心跳链路推荐用独立的物理网口直连,或者走一个专用的、不受业务拥塞干扰的VLAN。如果业务流量很大,把心跳报文混在业务链路上传输,很容易因为瞬时拥塞造成心跳超时,进而触发误切换。这是很多双机环境里最隐蔽的坑,后面避坑章节会展开说。
设备之间的信任关系建立,不同版本有不同实现方式,常见是通过管理网络交换证书或者密钥完成认证。信任建立之后,两台设备才会被允许做配置双向同步。这一步如果不做,备机永远只是台「摆设」,看似在线,实际拿不到任何配置。
2.2 状态检测与切换逻辑:Active-Standby 是怎么判定的
F5双机冗余最常见的运行模式是Active-Standby,也叫主备模式。主设备承载全部流量,备设备处于热备状态,不接收业务流量,但时刻准备接管。判断谁该接管,靠的是一套状态检测机制,检测对象包括心跳报文、TMM进程运行状态、硬件自检结果等。一旦主设备心跳丢失或者TMM进程异常,备机会在预设的超时时间后将自己提升为Active,同时通过ARP广播宣告VIP已经漂移到自己身上。
这里需要分清两个概念:设备故障切换和业务故障切换。F5的HA切换机制主要针对「设备级故障」,比如整机断电、TMM进程崩溃、硬件自检失败。如果你的F5本身活着,但它负责的pool里所有后端服务器都挂了,此时F5不会触发主备切换,因为这是后端业务层面的故障,不是设备故障。很多新手在这里会踩坑,以为双机冗余连后端服务的健康状态都会自动接管,实际上那是另外一套健康检查策略的职责。
此外还有一个容易混淆的概念:浮动IP。在双机环境里,F5上承载业务的VIP和self IP都归属于一个叫做traffic group(流量组)的逻辑对象。默认情况下,所有资源都在同一个traffic-group-1里。主设备持有这个流量组的所有浮动对象,备机平时不响应这些IP。切换发生时,备机接管整个流量组,浮动IP随之迁移。理解了这一点,后面配置时你就会明白为什么要给VIP指定traffic group。
2.3 配置同步与连接镜像:决定「接管后业务可不可用」的两把钥匙
主备设备之间有一个自动化的配置同步机制,通常称为ConfigSync。它的工作方式是:你在主设备上做的任何配置变更,都会被推送到备机,保证两台设备上的配置数据库完全一致。配置同步的内容覆盖VIP、pool、monitor、irule、数据组等所有对象。这个机制在部署时一定要验证,否则主备之间配置不一致,切换后业务一定出问题。我遇到过不止一次「备机接管后VIP出现了但pool是空的」的情况,查下来就是同步链路不通,或者自动同步被关掉了。
连接镜像是另一个关键机制。它负责把主设备上的连接表、持久化会话等状态实时镜像到备机。为什么要镜像?因为切换发生时,如果备机没有这些状态数据,所有在线用户的长连接都会断掉,已经建立的TCP连接将无法续传。对于Web页面可能影响不大,用户重新登录就行;但对支付网关、即时通讯、文件上传这类长连接业务,这就是事故。所以配置双机冗余时,要按业务类型决定是否开启镜像。开启的代价是设备性能和镜像链路带宽都有额外开销,不是所有业务都需要开,但开了才能真正做到「无缝切换」。
3. 双机冗余最小配置:一份可以照抄的部署清单
3.1 规划阶段:三张表把地址和资源提前理清
动手配置前,我建议先用表格把地址规划写清楚,避免配置到一半发现网段冲突。F5双机环境里至少涉及四类地址:管理IP、心跳IP、业务self IP、浮动VIP。管理IP用于登录设备和管理网络通信,心跳IP用于两台设备之间的状态探测,self IP是F5接入业务网段的接口地址,浮动VIP是最终提供给外部访问的虚拟服务地址。规划时有一个原则:心跳链路要独立网段,管理网段和业务网段建议也分开,减少相互干扰。
| 设备角色 | 管理IP | 心跳IP | 业务self IP | 浮动VIP(示例) |
|---|---|---|---|---|
| F5主设备 | 192.168.24.1 | 192.168.88.1 | 10.80.1.1/24 | 10.80.1.100:80 |
| F5备设备 | 192.168.24.2 | 192.168.88.2 | 10.80.1.2/24 | 10.80.1.100:80 |
上面的例子是典型的单VIP场景。两台设备在业务网段各有自己的self IP,用于和交换机、后端节点通信;浮动VIP则共用一个地址,平时由主设备持有并响应。规划时还要额外确定一件事:配置同步走哪条链路。通常情况下同步报文走管理网络,也可以指定走心跳链路,视网络规模而定。我的习惯是让配置同步和心跳都走独立链路,这样即便管理网络出问题,也不影响配置同步和状态检测。
3.2 部署步骤:初始化、建信任、建流量组、配置同步
以下是基于TMSH命令行风格的最小配置参考。不同版本的TMSH命令对象名称略有差异,但整体逻辑一致,实际部署时以你的版本命令参考为准。配置前请先将两台设备的管理IP和主机名按规划设置好。
# ---- 以下命令在主设备上执行 ---- # 1. 修改主机名,便于在设备组中清晰识别 tmsh modify sys global-settings hostname "f5-ha-a" # 2. 添加备机设备对象,指定其管理IP tmsh create cm device f5-ha-b management-ip 192.168.24.2 # 3. 创建设备组,类型为 sync-failover # 该类型同时负责配置同步和设备故障切换 tmsh create cm device-group dg-f5 devices { f5-ha-a f5-ha-b } type sync-failover # 4. 创建流量组 traffic-group,浮动VIP后续会挂到这个组里 tmsh create cm traffic-group tg-web # 5. 创建后端节点和健康检查 tmsh create ltm pool pool-web monitor http members { 10.1.1.20:80 10.1.1.21:80 } # 6. 创建virtual server,绑定traffic-group,开启连接镜像 tmsh create ltm virtual vs-http destination 10.80.1.100:80 pool pool-web traffic-group tg-web mirror connection enabled上面命令的逻辑需要说明几点。type sync-failover这个设备组类型把配置同步和故障切换绑定在一起,是最常用的组合。traffic-group tg-web决定了VIP归属哪个流量组,切换时该流量组整体漂移。mirror connection enabled表示开启连接镜像,备机上会同步主机的连接表,切换时TCP连接可以继续存活。这里特别提醒:mirror connection对吞吐量有影响,如果业务对切换容忍度较高(比如纯Web页面),可以关掉镜像降低开销;但像支付、上传类业务建议开启。
创建完成后,还需要执行一次配置同步。同步动作在主设备上执行:
# 将主设备当前配置手动同步到设备组中的所有设备 tmsh run cm config-sync to-group dg-f5 # 查看设备组同步状态,确认同步成功 tmsh show cm device-group dg-f5to-group参数明确指定同步目标,比直接使用config-sync全局同步更可控。首次部署时我建议手动执行同步,不要依赖自动同步,这样能直观确认两台设备之间的信任链路是否正常。同步完成后,登录备机检查一下关键配置是否存在,比如tmsh list ltm virtual vs-http能看到相同的VIP和pool定义。
3.3 用一次切换验证配置是否真生效
配置完成后,不要直接认为高可用已经生效,先做一次主动切换验证。在F5中强制主设备进入Standby状态的常见命令如下:
# 在主设备上执行,让本机主动降级为standby tmsh run cm failover standby # 检查当前failover状态,确认角色变化 tmsh show sys failover执行后观察两个现象:一是主设备的show sys failover输出,状态应从Active变为Standby;二是备机的同一命令输出应变为Active。同时从客户端访问浮动VIP,确认服务依然可用。如果VIP在切换后无法访问,优先检查备机上VIP对应的pool是否有健康的成员、网关路由是否配置、ARP是否能正确学习到浮动IP。
整个最小配置流程走完后,你的F5双机冗余已经具备基础能力:配置同步、状态检测、VIP漂移、连接镜像。但注意,这距离真正的「全冗余」还有距离,下一章展开讲全冗余到底要覆盖哪些层次。
4. 全冗余解析:从两台设备的HA到全链路无单点
4.1 冗余层次对照表:部件、设备、链路、网络与应用
很多团队在验收F5双机项目时,只验证了「主设备宕机后VIP漂移」这一个动作,然后宣布高可用完成。但从真实的故障场景来看,双机冗余解决的只是设备层冗余,整条业务链路里还有其他单点。我把全冗余拆成六个层次,每次做方案时对着这张表逐项排查,会清晰很多。
| 冗余层次 | 关键对象 | 实现方式 | 最常见的疏漏 |
|---|---|---|---|
| 部件级 | 电源、风扇、硬盘 | 双电源模块、冗余风扇、磁盘RAID | 双电源接到同一个PDU,市电故障一起挂 |
| 设备级 | 两台F5设备 | Active-Standby + 配置同步 | 只建了设备对,没验证配置同步 |
| 链路级 | 上联交换机、光模块、网线 | 双上联、链路聚合、冗余端口 | 光模块单点,一根光纤断了整条路径失效 |
| 网络级 | 默认网关、三层路由、NAT | 浮动网关、双出口、BGP对等 | 备机自带的网关路由和主设备不一致 |
| 应用级 | 会话、持久化、长连接 | 连接镜像、持久化镜像 | 镜像带宽不够,切机后镜像丢包 |
| 站点级 | 整个机房或数据中心 | GSLB、DNS智能解析 | 只有机房内双机,没有跨站点容灾 |
这个表里每一层都需要在方案设计时确认一次。部件级冗余通常由硬件形态决定,采购时选双电源型号就能覆盖;链路级冗余需要配合网络团队一起梳理,F5的上联口和交换机下联口要接在不同交换机上,避免一台交换机故障带走整条链路;网络级冗余则要重点检查备机把VIP接管之后,它的出向路由能不能正常工作,很多非对称路由问题都是在这里埋下的。
4.2 Active-Standby、Active-Active 与集群的取舍
全冗余解析到设备形态时,会面对三种常见方案:Active-Standby、Active-Active、以及集群化部署。Active-Standby是最稳妥的默认选择,配置简单、切换逻辑清晰、排障容易,适合绝大多数生产环境。Active-Active则是把两台设备的资源分别承载不同VIP,两台都是Active状态,各自负责一部分流量;这样两台设备的算力都被用上了,但代价是配置复杂度翻倍,切换时要清楚哪些资源绑在哪个流量组,排障时也更考验对traffic group的理解。如果业务总量不大,不建议为了利用率去做Active-Active,一台备机常年空转不是浪费,是高可用的必要成本。
集群化部署是更进一步的形态,通过虚拟化或专用硬件把多台设备组合成一个逻辑集群,对外表现为单一负载均衡实体。这种方式适合超大规模流量场景,但对运维能力要求很高,故障域从设备级变成了集群级。对绝大多数业务而言,Active-Standby已经能覆盖需求;Active-Active适合有明确算力瓶颈的场景;集群化则要慎重评估运维投入是否跟得上。
4.3 全冗余中最容易漏掉的三处细节
第一处是默认网关与非对称路由。F5的self IP接入三层网络后,默认网关通常指向核心交换机的接口地址。主设备接管浮动VIP时,入向流量正常到达;但出向流量如果走了另一台设备的self IP,就会出现流量从A进、从B出的非对称路径,导致连接被中间设备丢弃。解决方式是在交换机上做VRRP或者让F5的self IP和浮动VIP都指向同一网关,保证路径一致。
第二处是镜像链路的带宽。连接镜像开启后,主设备上的连接表会持续同步到备机,这个同步流是有带宽消耗的。如果镜像流量和业务流量共用同一条拥塞链路,高负载时镜像报文可能丢失,导致备机上的连接表不完整,切机后用户连接仍然会断。我的经验是镜像链路至少预留不低于业务峰值连接数的同步带宽,独立VLAN传输最保险。
第三处是管理网口与心跳网口的访问控制。有些环境为了安全,把心跳链路放进防火墙策略里,只放通特定端口,结果F5之间的状态探测报文被防火墙拦截,设备始终处于unknown状态。心跳探测协议和端口在不同版本上有差异,配置防火墙放行规则前需要先确认版本对应的协议特征。要记住一句话:冗余链路之间,除了业务控制策略,不要额外加安全设备去「把关」。
5. 双机冗余部署的常见问题与避坑记录
5.1 配置同步失效,备机拿到旧配置
现象:切换测试时备机接管了VIP,但VIP对应的pool为空,或者pool里的成员还是已经下线了的旧地址,业务直接中断。
原因:主设备上的配置变更没有同步到备机。常见情况是自动同步被关闭,或者同步链路中断,备机的配置停留在初始化时的状态。
解决:把「所有变更在主设备上进行、完成后手动执行一次config-sync」写成部署流程的固定步骤。每次变更后检查tmsh show cm sync-status的输出,确认同步状态为绿色。另外建议定期把主备配置导出比对,用文件差异对比工具检查是否存在分叉。同步是双机冗余的生命线,这条线断了,高可用就是空话。
5.2 心跳误判引发的来回切换
现象:两台设备的状态在Active和Standby之间反复横跳,VIP也在两台设备上来回漂移,业务连接频繁中断。
原因:主备心跳链路不稳定,常见于心跳流量意外混入业务链路,业务高峰时拥塞导致探测报文超时;或者心跳探测的两台设备之间经过了其他网络设备,被链路震荡波及。
解决:将心跳链路改为独立物理直连,或者放到不受业务影响的专用VLAN内。同时检查心跳报文的超时参数,不同版本的默认超时值不同,合理评估调大超时窗口,给瞬时抖动留出余地,避免心跳一抖就触发切换。我做这类排障时会先用抓包工具确认心跳报文收发是否连续,再判断是链路问题还是参数问题。
5.3 会话镜像未开启导致切换后全线掉线
现象:一次计划内切换演练,备用设备成功接管VIP,但所有在线用户的连接全部重置,运维后台收到大量登录异常的反馈。
原因:virtual server上没有开启mirror connection,备机没有主机的连接表。切换后客户端发起的TCP报文到达备机,备机不认识这些连接,只能回RST重置。
解决:对有状态业务(支付、上传、长连接推送)的virtual server开启连接镜像和持久化镜像。配置时注意mirror connection和persistence mirror是两件事,前者管TCP连接状态,后者管会话保持状态,根据业务实际需求决定开启哪个。开启后要通过压力测试确认镜像对设备性能的影响在可接受范围内。
5.4 主备版本不一致,同步直接失败
现象:设备组同步状态持续异常,配置同步时报错或者拒绝执行,备机无法获取最新配置。
原因:主备系统的软件版本不一致,备机版本较旧,不支持主机上某些新版本的配置对象或irule函数。
解决:给设备组设定版本一致性要求,升级时遵循「先备后主」的顺序:先把备机升级到目标版本,再手动切换让备机接管业务,再升级原主设备。避免在版本不一致状态下强行同步,也避免长期维持版本差异运行。每次设备版本变更后在变更记录里登记,防止时间久了版本悄悄分化。
5.5 错误的演练方式震停了生产流量
现象:工程师为了测试切换可靠性,直接重启主设备上的TMM进程模拟故障,结果备机接管后由于健康检查还没收敛,流量出现短时黑洞,生产报障。
原因:演练方式过激,没有先评估备机的健康检查收敛时间。备机刚接管时,它对pool成员的监控尚未完成第一次有效探测,会暂时把成员标记为不可用。
解决:演练分梯队进行。第一梯队只做soft failover,即run cm failover standby,验证VIP漂移和基本连通性;第二梯队再考虑重启TMM或者模拟掉电,并且演练前通知业务方预留观察窗口。切换验证要循序渐进,不要上来就用最暴力的方式测试。
6. 把切换演练做成日常工作:三次验证与一个回切模板
双机冗余的验证不能一年做一次,把切换演练做成周期性动作,才能真正在故障来临时从容应对。我这里给出一套自己常用的验证节奏,分三步。第一步是日常巡检,每周看一眼tmsh show sys failover确认角色正常,再查tmsh show cm sync-status确认配置同步没有积压。第二步是月度切换演练,选择低峰期在主设备上执行run cm failover standby,观察备机接管情况,确认业务无感知后执行回切。第三步是季度深度演练,模拟链路故障或TMM进程异常,验证备机在更恶劣条件下的接管能力。
# 日常巡检三段命令,每次切换演练前必跑一遍 tmsh show sys failover tmsh show cm sync-status tmsh show sys mirror running回切操作也要有固定模板。现在active设备上确认业务状态正常,然后执行run cm failover standby,把流量切回原主设备,再检查两台设备状态和同步状态。回切完成后别急着收工,观察10到15分钟,确认浮动VIP稳定在原主设备上,镜像状态正常,再宣布演练结束。这套流程跑顺之后,切换动作在团队里就不再是高风险操作,而是一个随时可以执行的标准动作。
最后说一句经验之谈。我处理过一个生产环境,看到配置同步时间戳和当前时间相差三个月,当时就知道这个双机架构迟早要出问题。后来故障果然来了,只不过不是设备宕机,而是主设备做硬件维护时强制切机,备机拿到的还是三个月前的配置。从那以后,我把「配置同步时间戳检查」写进了所有F5巡检脚本里,也建议你把同样的习惯建立起来——双机冗余不是买了两台设备就完事,而是要让备机在每一刻都保持和主设备完全一致的配置和状态,真正能接得住流量。希望帮到你。
本文还有配套的精品资源,点击获取