简介:这份文档面向网络运维工程师与F5 BIG-IP初学者,系统讲解负载均衡设备双机冗余与全冗余部署方案,帮助解决高可用架构设计与故障切换中的实际问题。资源包内含1个doc文档,约240KB,内容以文字讲解与配置示例为主,便于快速查阅与整理笔记。文档围绕串口心跳与网络心跳两种冗余方式展开,说明Active与Backup设备通过电平监听或TCP 1028端口传递心跳信号、触发ARP广播完成流量切换的流程,并给出Network FailSafe、Floating IP与Failover Peer IP的配置示例,以及System Redundancy Properties状态检测与System Fail-safe设置路径。同时介绍实际常用的全冗余组网方式,分析其通过L2交换机堆叠扩展端口的优势与千兆交换机成本较高的局限,并说明BIG-IP对关键进程的监控与切换、重启等处理动作。目前已有300人学习,适合需要掌握F5双机冗余配置与排错思路的读者参考。
1. 双机冗余的起点:为什么F5不照搬VRRP那套
很多刚接触F5 BIG-IP的工程师,第一次做双机冗余时都会下意识地问一句:VRRP怎么配?这个反应很正常,因为大家平时接触的负载均衡或防火墙双机方案,大多是基于VRRP来跑浮动IP的。但F5走的是另一条路——它不靠VRRP,而是靠串口心跳和网络心跳来维持两台设备之间的状态同步与故障切换。这个差异不是细节,而是直接决定了你后面所有配置动作的走向。
这套方案要解决的问题很明确:让两台F5 BIG-IP组成一对冗余单元,当主设备出现硬件故障、进程异常或链路中断时,备设备能在可控时间内接管所有虚拟服务器和浮动IP,业务流量不中断。适合谁看?正在做高可用架构课设的学生、需要交付双机冗余方案文档的工程师,以及第一次上手F5双机配置、不想在心跳线和Failover参数上反复翻车的人。下面从心跳机制讲起,一路落到全冗余拓扑和验收方法。
2. 双机冗余的两种心跳机制:串口电平与网络TCP的差异
2.1 串口心跳:用一根短线的电平信号决定谁主谁备
串口心跳是F5官方推荐的方式,原理非常“硬核”——它不传数据,只传电平。两台BIG-IP之间用自带的串口线直连,Active设备在心跳线上持续输出高电平,Backup设备负责监听这个高电平。一旦Backup监听到对端电平消失,它就认为主设备已经失效,立刻把自己切换为Active,然后对外发送ARP广播,把所有虚拟服务器地址和浮动IP宣告到自己这一端,牵引流量完成切换。
整个过程没有任何数据包交互,纯粹靠电平的有无来判断。这种方式的优点是响应快、不受网络层故障干扰,因为心跳线是独立物理链路。但它的限制也很明显:F5自带的串口线只有50英尺左右,两台设备必须放得很近。如果机房布局要求两台设备分布在不同机柜甚至不同区域,串口心跳就无能为力了。
配置上,串口心跳通常不需要额外指定VLAN或IP,物理连线接通后,在System → Redundancy Properties里确认两台设备能互相看到对方的状态即可。我一般会先检查串口线是否插紧,再看Redundancy Properties里Peer的状态是不是绿色,这一步能排掉大部分“心跳不通”的低级问题。
2.2 网络心跳:TCP 1028端口与独立VLAN的配合
当两台设备物理距离较远时,网络心跳就是替代方案。两台BIG-IP之间通过网络线连接,心跳信号走TCP的1028端口。Active设备周期性发送心跳报文,Backup设备在设定时间内没收到,就触发切换。切换后的动作和串口心跳一致:备机变主机,发ARP广播,牵引流量。
网络心跳的关键在于VLAN的指定。配置Network FailSafe时,你需要明确一个VLAN专门用来跑心跳,通常的做法是两台BIG-IP之间拉一根独立网线,划一个独立的VLAN,不跑业务流量。也可以复用Internal VLAN,但我不建议这么做——一旦Internal VLAN上有其他流量波动,心跳信号的稳定性就会受影响,容易出现误切换。
下面是一个网络心跳的基础配置示例,展示浮动IP和Failover Peer IP的设置逻辑:
# 在BIG-IP的tmsh命令行中配置冗余参数 # 设置本机与对端的Failover Peer IP modify cm device /Common/device1 { failover-peer-ip 10.0.0.2 } # 指定用于网络心跳的VLAN modify cm device /Common/device1 { failover-network /Common/ha-vlan } # 查看冗余状态 show cm device /Common/device1 | grep -i "failover"这段配置的核心是failover-peer-ip和failover-network两个参数。failover-peer-ip告诉本机对端设备的心跳地址是什么,failover-network指定心跳走哪个VLAN。配置完成后,在System → Redundancy Properties里能看到Peer状态和当前Active/Standby角色。如果状态一直显示Unknown,优先检查1028端口是否被中间设备拦截,以及VLAN接口是否UP。
2.3 两种心跳方式的选型对比
| 对比维度 | 串口心跳 | 网络心跳 |
|---|---|---|
| 传输介质 | 专用串口线 | 网络线缆 |
| 距离限制 | 约50英尺 | 不受物理距离限制 |
| 信号方式 | 电平有无 | TCP 1028端口报文 |
| 是否传数据 | 不传数据 | 传心跳报文 |
| 推荐场景 | 同机柜近距离部署 | 跨机柜或远距离部署 |
| F5推荐度 | 官方推荐 | 备选方案 |
选型逻辑很简单:能放一起就用串口,放不一起就用网络心跳。但实际项目中,我见过不少方案是两种心跳同时配——串口做为主心跳,网络心跳做为备用心跳通道。这样即使串口线松动或损坏,网络心跳还能兜底,避免因为单一心跳通道故障导致双机都认为对方挂了,出现“双主”的灾难场景。
3. 全冗余拓扑设计:L2堆叠交换机与BIG-IP的配合方式
3.1 全冗余网络拓扑的组成逻辑
实际项目中常用的全冗余方式,核心思路是在BIG-IP和后台服务器群之间引入L2交换机的堆叠。两台BIG-IP做双机冗余,下面接一组堆叠的L2交换机,交换机再连接大量后台服务器。这样做的目的是扩展端口数量——BIG-IP自身的端口数有限,面对几十上百台服务器时不够用,通过堆叠交换机可以灵活扩展。
拓扑上,两台BIG-IP各自连接到堆叠交换机的不同成员上,交换机之间通过堆叠线缆互联。BIG-IP与交换机之间通常采用Trunk方式捆绑多条链路,提升带宽和冗余性。后台服务器双网卡分别接入不同的堆叠交换机成员,实现服务器层面的链路冗余。整个链路从BIG-IP到交换机再到服务器,没有任何单点。
3.2 端口捆绑与Trunk配置要点
全冗余拓扑中,BIG-IP与扩展交换机之间的连接建议做端口捆绑。如果交换机是全千兆端口,可以通过Trunk方式与BIG-IP连接,提高网络流量的处理能力。配置Trunk时需要注意几点:两端Trunk模式要匹配,LACP或静态Trunk要统一;Trunk成员端口的速度和双工模式要一致;如果走LACP,要确认交换机侧和BIG-IP侧的LACPDU交互正常。
# 在BIG-IP上创建Trunk接口 create net trunk /Common/trunk1 { interfaces { 1.1 { } 1.2 { } } lacp enabled lacp-mode active } # 将Trunk接口分配给VLAN modify net vlan /Common/external-vlan { interfaces add { trunk1 { tagged } } }这段配置创建了一个启用LACP的Trunk,包含1.1和1.2两个物理口,然后把这个Trunk划入外部VLAN。lacp-mode active表示主动发送LACPDU,交换机侧通常配passive或active都可以。如果Trunk起不来,先查物理口状态,再看LACP协商日志,最常见的问题是两端模式不匹配或成员口速率不一致。
3.3 全冗余方式的优缺点与适用边界
这种全冗余部署的优点很突出:扩展性好,通过堆叠交换机可以支撑大量后台服务器;端口数量充足,适合服务器群规模较大的场景;配合千兆端口和Trunk捆绑,能提供不错的并发连接处理能力。
但缺点也要说清楚。第一,成本高——需要高端千兆交换机,低端二三层交换机在端口速率和缓存上可能跟不上,容易出现丢包和网络效率下降。第二,扩展交换机本身可能成为瓶颈——它能增加服务器数量,但不能提高网络流量的处理能力。如果后台服务器群规模过大,交换机上行链路会成为瓶颈。所以我在方案里通常会强调:扩展交换机最好全千兆端口,并且通过Trunk方式与上级BIG-IP连接,保证上行带宽不成为短板。
4. Failover触发与进程监控:什么情况下BIG-IP会切换
4.1 关键进程监控与触发动作
F5 BIG-IP对Failover相关进程有严格的监控机制。当关键进程出现故障、无法响应或无法启动时,系统会触发切换。监控系统发现异常后,可以执行预设动作:切换到备机、重启故障设备、重启异常进程,或者不做处理。这些动作在System → System Fail-safe里配置。
我一般会建议至少配置两个动作:一是进程异常时触发Failover切换,二是记录日志以便事后排查。如果只配切换不配日志,出问题后你根本不知道是哪个进程挂了导致的切换,排查起来就是黑匣子。
4.2 网络FailSafe与VLAN监控
除了进程监控,网络FailSafe也是触发切换的重要条件。你可以指定某个VLAN作为监控对象,当该VLAN上的链路或流量出现异常时,触发Failover。配置路径在System → System Fail-safe,选择Network FailSafe,指定VLAN和触发条件。
这里有个容易踩的坑:如果把业务VLAN配成了FailSafe监控VLAN,业务流量的正常波动可能导致误切换。正确的做法是只把心跳VLAN或专门用于监控的VLAN纳入FailSafe,不要混入业务流量。
4.3 切换过程中的ARP广播与流量牵引
无论哪种心跳方式触发切换,备机变主机后的第一个动作都是发送ARP广播,把所有虚拟服务器地址和浮动IP宣告到自己这端。这个动作是流量切换的关键——上游路由器或交换机收到ARP后更新ARP表,后续流量就会送到新的主设备。
如果切换后业务不通,优先检查ARP广播是否正常发出。可以在BIG-IP上抓包看ARP报文,也可以在上游设备上看ARP表是否更新。有时候上游设备有ARP静态绑定或ARP老化时间过长,会导致流量还往旧设备送,这时候需要手动清理ARP缓存或调整老化时间。
5. 避坑与常见问题:双机冗余配置里最容易翻车的五个点
5.1 双主现象:两台设备都认为自己是Active
现象:两台BIG-IP同时处于Active状态,浮动IP冲突,业务时通时断。
原因:心跳链路中断,两台设备都收不到对方的心跳信号,各自认为对方挂了,于是都切换为Active。常见触发条件包括串口线松动、网络心跳VLAN被误删、中间交换机端口故障。
解决:配置双心跳通道——串口心跳和网络心跳同时启用,互为备份。另外在System → Redundancy Properties里开启网络FailSafe,当心跳VLAN异常时不要贸然切换。如果已经出现双主,先恢复心跳链路,再手动将其中一台切回Standby。
5.2 心跳VLAN混跑业务流量导致误切换
现象:业务高峰期频繁发生Failover切换,但设备本身没有硬件故障。
原因:网络心跳的VLAN同时承载了业务流量,业务流量突增时心跳报文被挤掉或延迟,备机误认为主机挂了。
解决:心跳VLAN必须独立,不跑任何业务流量。如果端口资源紧张,至少要用独立的VLAN ID和独立的物理链路。我一般会在方案里明确写:心跳VLAN只允许两台BIG-IP的接口加入,不接任何服务器或上行链路。
5.3 串口线长度不够强行延长
现象:两台设备距离超过50英尺,用延长线或转接器连接串口心跳,切换时好时坏。
原因:串口心跳靠电平信号判断,延长线导致电平衰减,Backup设备可能误判对端状态。
解决:超过50英尺直接改用网络心跳,不要试图延长串口线。如果必须用串口心跳,两台设备必须放在同一机柜或相邻机柜。
5.4 Failover Peer IP配错或不可达
现象:Redundancy Properties里Peer状态一直显示Unknown或Red,双机无法正常协商主备。
原因:failover-peer-ip配成了错误的地址,或者该地址在心跳VLAN上不可达。有时候是配了IP但没把接口划入正确的VLAN。
解决:确认failover-peer-ip是对端设备在心跳VLAN上的实际IP,用ping测试连通性。如果ping不通,检查VLAN接口状态、IP掩码和路由表。另外注意,Failover Peer IP不能和浮动IP或自IP冲突。
5.5 切换后业务不通但设备状态正常
现象:Failover切换成功,BIG-IP显示新主机Active,但业务流量不通。
原因:ARP广播没有正常发出,或者上游设备的ARP表没有更新,流量还在往旧设备送。
解决:在BIG-IP上抓包确认ARP广播是否发出。如果发出了但上游没更新,检查上游设备是否有ARP静态绑定或ARP老化时间过长。必要时手动清理上游ARP缓存,或者调整ARP老化时间到合理值。
6. 验收与答辩:怎么证明这套双机冗余真的可靠
验收双机冗余方案,不能只看配置界面显示正常,得实际做切换测试。我一般会按下面这个流程走一遍,也建议你在答辩或交付时按同样的顺序演示。
第一步:确认初始状态。在System → Redundancy Properties里确认两台设备角色分明,一台Active一台Standby,Peer状态绿色,心跳VLAN和Failover Peer IP都正确。这一步是基线,基线不对后面全白搭。
第二步:手动触发切换。在Active设备上执行强制切换命令,观察备机是否在预期时间内变Active,浮动IP是否漂移过去。同时在上游设备上抓包看ARP广播是否发出、ARP表是否更新。这一步验证的是切换流程本身。
# 在Active设备上强制切换为Standby run sys failover standby # 查看切换后状态 show cm device /Common/device1 | grep -i "failover"run sys failover standby会让当前Active设备主动降为Standby,触发对端切换。执行后立刻在另一台设备上查看状态,正常情况应该在几秒内变为Active。如果超过预期时间还没切换,检查心跳链路和Failover Peer IP。
第三步:模拟心跳中断。拔掉串口线或断开网络心跳VLAN,观察备机是否在设定时间内接管。这一步验证的是心跳超时机制。注意,如果是双心跳通道,拔掉一条不应该触发切换,两条都断才切换。
第四步:模拟进程异常。在Active设备上手动kill一个被监控的关键进程,观察是否触发Failover。这一步验证的是进程监控和Failover动作配置是否正确。
第五步:恢复与回切。把故障恢复后,确认设备能正常回切到初始主备状态,业务不中断。回切测试经常被忽略,但实际运维中回切失败也是常见问题。
验收时建议做一张记录表,把每一步的预期结果、实际结果、耗时都记下来。答辩时这张表比任何PPT都有说服力。
| 验收项 | 预期结果 | 实测结果 | 耗时 |
|---|---|---|---|
| 初始状态确认 | 一主一备,Peer绿色 | 符合 | — |
| 手动切换 | 备机变Active,浮动IP漂移 | 符合 | 3秒 |
| 心跳中断切换 | 备机接管 | 符合 | 5秒 |
| 进程异常切换 | 触发Failover | 符合 | 4秒 |
| 回切 | 恢复初始主备 | 符合 | 3秒 |
从那以后我每次做双机冗余交付,都强制走一遍这个验收流程,不管配置看起来多顺利。因为双机冗余这东西,配置界面显示正常不代表切换真的能成,只有实际切一遍才知道心跳线、ARP广播、进程监控这些环节是不是真的串起来了。希望这套方案和验收方法能帮到你,需要完整配置文档和拓扑图的话,可以按文中的模块去对应整理,直接套进你的方案里用。
本文还有配套的精品资源,点击获取