简介:这份文档面向负责F5 BIG-IP运维与高可用架构的网络工程师,聚焦双机冗余配置与全冗余解析这一实际部署中的关键问题。内容围绕串口心跳与网络心跳两种冗余方式展开,讲解Active/Backup切换流程、ARP广播引发流量切换的机制,以及Network FailSafe、Floating IP、Failover Peer IP等配置要点,并延伸至实际常用的全冗余组网方式及其扩展性与成本权衡,同时涉及BIG-IP对FailOver关键进程的监控与异常处理动作。资源包内含1个doc文档,约240KB,结构紧凑,适合作为配置参考与排错思路梳理。目前已有300人学习下载,可供需要搭建F5双机高可用环境、理解心跳与切换原理的读者对照查阅。
1. 双机冗余不是“两台机器插上网线”那么简单
很多同行第一次接触 F5 BIGIP 的双机冗余,脑子里蹦出来的画面就是“两台设备、两根线、配个 IP 就完事”。真到机房里把串口线一插、网线一接,发现备机死活不切换,或者切换过去之后业务流量绕了一圈又回到故障机上——这种翻车现场我见过不止一次。F5 的双机冗余跟 RadWare 那套 VRRP 思路完全不同,它不靠虚拟路由协议,而是靠串口心跳和网络心跳两条独立通道来感知对端状态,再配合浮动 IP 和 ARP 广播完成流量牵引。串口心跳是 F5 官方推荐的方案,靠电平信号传递状态,线上没有任何数据报文;网络心跳则用 TCP 1028 端口在设备之间传心跳包,适合两台设备物理距离较远、串口线够不着的场景。这套机制决定了它的配置逻辑、排错路径和“全冗余”架构的边界。如果你正在规划双活数据中心、做负载均衡高可用改造,或者被备机不切换的问题卡住,下面这些从串口电平到交换机堆叠的细节,值得逐条对着看。
2. 串口心跳与网络心跳:两种冗余通道的选型逻辑
2.1 串口心跳为什么是 F5 的首选
串口心跳的物理层很简单:一根 F5 自带的串口线,把两台 BIGIP 直接连起来。这根线不长,官方标称 50 英尺,大概 15 米左右,所以只适合两台设备在同一机柜或相邻机柜的场景。它的工作方式不是发报文,而是靠电平——Active 设备在心跳线上持续输出高电平,Backup 设备一直监听这根线。一旦 Backup 发现对端高电平消失,就判定 Active 挂了,立刻把自己切成 Active,然后对外发 ARP 广播,把所有 VS 地址和浮动 IP 重新宣告一遍,让上游交换机把流量指到自己这边。
这种“电平即状态”的设计有个好处:不依赖任何网络协议栈,不怕 IP 冲突,不怕 VLAN 配错,也不怕中间设备丢包。只要串口线物理连通、电平正常,状态判断就是确定的。F5 官方推荐串口心跳,核心原因就在这里——它的故障检测路径最短,干扰因素最少。但代价是距离受限,而且串口线本身没有冗余,线断了备机就会误判。我一般会在机柜内布线时把串口线单独走一条路径,避免跟电源线捆在一起,减少物理损伤概率。
2.2 网络心跳的配置步骤与参数含义
两台设备隔得远,串口线拉不过去,就得走网络心跳。网络心跳的本质是在两台 BIGIP 之间建一条独立的心跳 VLAN,通过 TCP 1028 端口周期性地发心跳包。Backup 设备在设定时间内收不到心跳,就触发切换。配置网络心跳的步骤不复杂,但每一步的参数都影响切换行为。
第一步,划一个独立 VLAN 专门跑心跳。这个 VLAN 不承载业务流量,只连两台 BIGIP 的心跳口。常见做法是直接用交叉线直连,或者过一台独立交换机。不建议把心跳 VLAN 和 Internal VLAN 混在一起,否则业务流量突发时心跳包可能被挤掉,导致误切换。
第二步,设置 Floating IP 和 Failover Peer IP。Floating IP 是双机共用的浮动地址,同一时刻只在一台设备上生效;Failover Peer IP 是对端设备的心跳口地址,用来标识“我该把心跳发给谁”。
# 在 tmsh 中配置冗余参数(示例,地址按实际规划替换) create cm device-group failover-group type failover modify cm device-group failover-group \ members add { bigip-a { peer-ip 10.10.10.2 } bigip-b { peer-ip 10.10.10.1 } } # 设置浮动 IP 所在的自定义 VLAN create net vlan ha-vlan interfaces add { 1.2 { tagged false } } create net self 10.10.10.1/24 vlan ha-vlan allow-service default create net self 10.10.10.2/24 vlan ha-vlan allow-service default上面这段 tmsh 命令做了三件事:建了一个 failover 类型的设备组,把两台设备的 peer-ip 互相指向对方;建了一个 ha-vlan 专门跑心跳;给两台设备的心跳口配了同网段地址。注意allow-service default会放行包括 TCP 1028 在内的默认服务,如果安全策略收紧,要单独确认 1028 端口没有被 ACL 挡掉。
第三步,在 System → Redundancy Properties 里确认运行状态。这里能看到当前哪台是 Active、哪台是 Standby,以及心跳通道的健康状态。如果状态显示 “Peer not connected”,先查 VLAN 通不通,再查 1028 端口有没有被防火墙拦截。
第四步,配置 System → System Fail-safe。这一步是定义“什么情况下触发切换”。除了心跳丢失,还可以把链路状态、进程状态纳入触发条件。比如某条上联链路 down 了,即使心跳正常,也可以主动切换,避免流量进到一台“半死”的设备。
2.3 进程监控与 FailOver 触发动作
F5 对关键进程有内置监控,比如 tmm、mcpd 这些核心进程。当进程无响应或起不来时,监控系统会按预设动作处理。可选动作包括:切换到备机、重启故障机、重启异常进程、不做处理。我一般会把 tmm 和 mcpd 配成“切换 + 重启”,因为这两个进程挂了,设备基本没法正常转发流量,留在 Active 状态只会让业务持续受损。但要注意,如果两台设备同时出现进程异常,频繁切换会导致双机“乒乓”,这时候需要设置切换延迟或抑制时间,让状态稳定下来再判断。
3. 全冗余组网:L2 堆叠扩展与 Trunk 上联的实操
3.1 全冗余架构的拓扑逻辑
实际生产里用得最多的“全冗余”方式,是在两台 BIGIP 下面挂一对堆叠的 L2 交换机,服务器双网卡分别接到两台交换机上。BIGIP 的多个业务口通过 Trunk 捆绑上联到交换机堆叠组,服务器网关指向 BIGIP 的浮动 IP。这样任意一台 BIGIP 故障、任意一台交换机故障、任意一条上联链路故障,流量都能自动绕行。
这种架构的扩展性来自 L2 交换机的堆叠能力。堆叠之后,多台交换机在逻辑上是一台,端口数量可以随堆叠成员增加而扩展,后台服务器数量不再受单台交换机端口数限制。对于服务器群规模大、并发连接数高的场景,这个优势很明显。但堆叠不是没有代价——堆叠带宽和堆叠链路的可靠性直接决定整个二层域的稳定性,堆叠线断掉可能导致堆叠分裂,比单台交换机故障更麻烦。
3.2 Trunk 上联与端口捆绑配置
BIGIP 上联到交换机堆叠组时,建议用 Trunk 把多个物理口捆成一个逻辑口。这样既能提高带宽,也能在单条链路故障时保持连通。下面是一个 Trunk 配置的示例:
# 在 tmsh 中创建 Trunk 并绑定物理接口 create net trunk trunk-uplink interfaces add { 1.1 { } 1.2 { } 1.3 { } 1.4 { } } modify net trunk trunk-uplink lacp enabled modify net trunk trunk-uplink lacp-mode active # 将 Trunk 划入业务 VLAN create net vlan business-vlan interfaces add { trunk-uplink { tagged false } }这段配置创建了一个名为 trunk-uplink 的 Trunk,绑定了 1.1 到 1.4 四个物理口,启用了 LACP 且模式为 active。LACP active 模式下,BIGIP 会主动发 LACPDU 协商,交换机侧也要配成 active 或 passive 才能形成聚合。如果交换机侧没配 LACP,Trunk 起不来,业务 VLAN 就不通。我遇到过好几次“BIGIP 配了 Trunk、交换机忘了配”的情况,现象是链路灯亮但流量不通,查 VLAN 状态才发现 Trunk 是 down 的。
3.3 交换机选型与瓶颈判断
全冗余架构对交换机的要求比想象中高。如果服务器用千兆网卡,交换机端口最好也是全千兆。低端二三层交换机混用百兆和千兆口时,千兆口到百兆口的流量收敛会导致丢包和延迟抖动,业务侧表现就是“偶尔卡一下”。更隐蔽的问题是:堆叠交换机扩展了端口数量,但堆叠带宽是固定的。后台服务器群规模越大,东西向流量和上联流量叠加,堆叠链路可能先成为瓶颈。这时候 Trunk 上联到 BIGIP 的带宽反而成了次要矛盾——瓶颈在交换机堆叠口上。
判断方法不复杂:看堆叠口的利用率。如果堆叠口长期跑在 70% 以上,而 BIGIP 上联 Trunk 利用率不到 50%,那扩展交换机就是瓶颈。解决办法要么升级堆叠带宽,要么把服务器群拆到多组交换机上,让流量分散到不同的堆叠组。
4. 避坑与排查:双机冗余配置里最容易翻车的五件事
4.1 备机不切换,心跳灯却正常
现象:Active 设备断电,Backup 设备没有变成 Active,业务中断。原因:串口线接错口,或者网络心跳 VLAN 被 ACL 挡了 1028 端口,心跳信号实际没通。解决:先在 System → Redundancy Properties 看 Peer 状态。串口心跳查物理口是否接对(F5 的串口口标号容易看错);网络心跳用 tcpdump 抓 1028 端口,确认包有没有发出去、有没有收到。
4.2 切换后流量绕回故障机
现象:备机切为 Active 后,部分业务流量还是往故障机走。原因:上游交换机 ARP 表没更新,或者浮动 IP 的 ARP 广播被抑制。解决:检查交换机 ARP 老化时间,必要时手动清 ARP。另外确认 BIGIP 的 ARP 广播没有被 VLAN 上的风暴抑制功能误伤。
4.3 双机频繁乒乓切换
现象:两台设备反复在 Active/Standby 之间跳。原因:心跳链路质量差,丢包导致双方都认为对方挂了;或者进程监控触发条件太敏感。解决:给心跳 VLAN 做 QoS 保障,避免和业务流量抢带宽。进程监控加切换延迟,等状态稳定再动作。
4.4 Trunk 配了但带宽没叠加
现象:Trunk 显示 up,但单条流量的带宽还是单口上限。原因:LACP 哈希算法基于源/目的 IP 或 MAC,单条 TCP 流只会走一个物理口。解决:这是正常行为,Trunk 提升的是多流并发总带宽,不是单流带宽。如果业务需要单流高带宽,得换更高带宽的物理口。
4.5 全冗余架构下服务器网关指错
现象:服务器双网卡分别接两台交换机,但网关只指了一台 BIGIP 的接口地址。原因:服务器网关应该指向浮动 IP,而不是某台 BIGIP 的物理口地址。解决:统一把服务器网关改成 BIGIP 的浮动 IP,这样切换后网关不变,服务器不用改配置。
5. 从“能切换”到“切得干净”:验证清单与一个压箱底技巧
双机冗余配完,怎么确认它真的可靠?我一般会走一遍“冷验证”流程:先确认当前 Active 是哪台,然后在业务低峰期直接拔掉 Active 的电源,观察备机切换时间和业务恢复情况。切换时间通常在秒级,如果超过 10 秒还没恢复,就要查 ARP 广播和上游交换机收敛速度。网络心跳场景下,还可以用tcpdump -i ha-vlan port 1028抓心跳包,确认包间隔稳定、没有大量重传。
验证清单可以按这个顺序过一遍:
| 检查项 | 正常表现 | 异常处理 |
|---|---|---|
| 心跳通道状态 | Peer connected | 查物理线/VLAN/ACL |
| 浮动 IP 归属 | 只在 Active 上生效 | 查 ARP 广播和交换机表 |
| 进程监控动作 | 触发后按预设执行 | 调整触发条件和延迟 |
| Trunk 状态 | up 且 LACP 协商成功 | 查交换机侧 LACP 配置 |
| 服务器网关 | 指向浮动 IP | 统一改配置 |
压箱底的技巧是关于 ARP 的:F5 切换时发的 ARP 广播是 Gratuitous ARP,但有些交换机默认不学习 Gratuitous ARP,或者学习后不刷新转发表。这种情况下,即使 BIGIP 切过去了,交换机还是把流量往旧端口送。解决办法是在交换机上开 Gratuitous ARP 学习,或者把 ARP 老化时间调短。我吃过一次亏,切换后业务断了快两分钟,最后定位到是交换机 ARP 表没更新。从那以后我每次配完双机冗余,都强制走一遍“拔电 + 抓包 + 查 ARP 表”的流程,确认切换后上游转发表真的刷新了才收工。希望帮到你。
本文还有配套的精品资源,点击获取