F5 BIG-IP
F5 BIG-IP 是业界常见的 ADC(Application Delivery Controller,应用交付控制器),在机房或云边界做 四层 / 七层流量转发、负载均衡、SSL 卸载、会话保持与健康检查。与 Nginx、流量入口层 中的 L4/L7 角色同源,多见于金融、电信、大型政企对外入口。
→ 返回网络框架
在流量链路中的位置
客户端
│
▼
CDN / WAF(可选)
│
▼
F5 BIG-IP(L4 或 L7 虚拟服务器)
│ 转发、负载均衡、SSL 终结、会话保持
▼
Nginx / Ingress / 应用 Pod
│
▼
业务服务
- L4 模式:按 IP:Port 转发 TCP/UDP,不解析 HTTP(性能高,类似 LVS / 云 NLB)。
- L7 模式:解析 HTTP/HTTPS,按 Host、URI、Header 路由(能力接近 Nginx / HAProxy)。
核心概念(Local Traffic Manager,LTM)
| 概念 | 说明 |
|---|---|
| Virtual Server(VS) | 对外监听的 VIP + 端口(如 203.0.113.10:443),流量入口 |
| Pool | 后端服务器组,承载负载均衡策略 |
| Node | Pool 成员,即真实后端 IP:Port |
| Profile | 协议与行为模板(HTTP、SSL、TCP、持久化等) |
| Monitor | 健康检查(HTTP GET、TCP、ICMP 等),剔除故障节点 |
| iRule | 基于 TCL 的脚本,在转发前后改写/分支流量(类似 Nginx if + Lua 的运维版) |
| SNAT | 源地址转换,使后端看到的源 IP 为 F5 自身(便于回包路径一致) |
关系示意:
Virtual Server (VIP:443)
│
├── Profile: client-ssl / server-ssl
├── Persistence: cookie / source addr
└── Pool: web-pool
├── Node 10.0.1.11:8080
├── Node 10.0.1.12:8080
└── Node 10.0.1.13:8080
网络转发怎么工作(Full Proxy)
BIG-IP 典型为 全代理(Full Proxy) 架构:客户端与 F5 建连,F5 再与后端建第二条连接,而不是单纯「包转发」。
Client ──TCP/HTTP──► BIG-IP ──TCP/HTTP──► Backend
(VS) (Pool Member)
带来的能力:
- 连接级负载均衡:按连接数、最少连接、观察成员负载等算法选 Node。
- SSL 卸载:在 F5 终结 HTTPS,回源可走 HTTP 或重新加密(减轻应用 CPU)。
- HTTP 改写:插入
X-Forwarded-For、X-Forwarded-Proto,或按路径分流。 - 会话保持(Persistence):同一用户固定到同一后端(Cookie、源 IP Hash 等),解决有状态会话问题(与 前后端会话 中的粘性会话思路一致)。
负载均衡与调度
| 算法 / 能力 | 说明 |
|---|---|
| Round Robin | 轮询(默认常见) |
| Least Connections | 最少连接数 |
| Observed / Predictive | 根据成员负载观察或预测 |
| Ratio / Priority | 权重、主备(Active/Standby 成员) |
| Priority Group | 主组全挂才切备用组 |
健康检查失败时,成员被标记为 Offline,流量不再转发,恢复后自动加回。
常见场景
1. HTTPS 入口 + 回源 HTTP(SSL Offload)
Internet --HTTPS--> VS:443 (证书在 F5)
--HTTP--> Pool:8080 (内网明文)
与 Nginx listen 443 ssl + proxy_pass http://backend 同类,证书集中运维在 F5。
2. 七层按路径分流
/api/*→ API Pool/static/*→ 静态资源 Pool
可用 iRule 或 Local Traffic Policy 根据 HTTP::uri 选择 Pool。
3. 四层透传(TCP 直通)
游戏、数据库、MQ 等非 HTTP 协议,VS 类型为 Performance (L4),只做 IP:Port 转发,不解析应用层。
4. 与 Kubernetes 并存
集群外仍用 F5 作南北向入口,VIP 指向 Ingress Controller 或 NodePort;东西向可用 Istio。云环境也可用厂商 LB 替代硬件 F5。
与 Nginx / LVS / 云 LB 对比
| 维度 | F5 BIG-IP | Nginx | LVS | 云 NLB/ALB |
|---|---|---|---|---|
| 形态 | 硬件 / 虚拟化 / 云版 | 软件 | 内核模块 | 托管服务 |
| L4 转发 | ✅ 高性能 | ✅ stream | ✅ 极高 | ✅ |
| L7 HTTP | ✅ | ✅ 成熟 | ❌ | ✅ |
| 运维界面 | GUI + iControl API | 配置文件 | 命令行 | 控制台 |
| 典型场景 | 企业核心入口、合规 | 通用反代、Ingress | 超大规模 L4 | 云上默认 |
开发日常接触的「反向代理」多是 Nginx;F5 更偏 基础设施 / 网络团队 在边界做的统一转发与策略下发。
iRule 示例(理解用)
根据 URI 前缀选择不同 Pool(语法为 TCL 风格,仅示意):
when HTTP_REQUEST {
if { [HTTP::uri] starts_with "/api/" } {
pool api-pool
} elseif { [HTTP::uri] starts_with "/admin/" } {
pool admin-pool
} else {
pool web-pool
}
}生产变更需走变更窗口;逻辑复杂时可改用 Local Traffic Policy 降低脚本维护成本。
运维与可观测
- 配置同步:主备设备 ConfigSync,避免单点。
- HA:Active/Standby 或 Active/Active(视版本与许可)。
- 日志:/request、AVR、HSL 等可将访问日志送到 SIEM。
- API:iControl REST,可与 Ansible/Terraform 集成(F5 云版、BIG-IP Next 方向更偏 API 驱动)。
与 Prometheus / Grafana 集成时,通常通过 exporter 或 SNMP 拉取 VS/Pool 连接数、成员状态等指标。
和「网络转发」的关系(小结)
| 层级 | F5 做什么 |
|---|---|
| 网络层 | VIP 漂移、路由、VLAN/Trunk(与交换机协同) |
| 传输层 | TCP/UDP 连接转发、NAT/SNAT |
| 应用层 | HTTP 路由、TLS、Cookie 持久化、Header 改写 |
因此用户说「和网络转发有关」是准确的:BIG-IP 的核心就是 在正确的时间把连接 / 请求转到正确的后端,并附带高可用、安全与性能策略。
延伸阅读
- 流量入口层 — CDN → WAF → L4 → L7 → Ingress 全链路
- Nginx — 软件反代与负载均衡
- Istio — 集群内东西向流量治理
- 代理 — 正向 / 反向代理概念
- Spring Cloud 负载均衡 — 应用侧客户端 LB(与入口 LB 不同层)