F5 VIP 上线全流程:Pool / VS / Profile 三板斧(附实操 CheckList)
上篇我们理清了 F5 的整体框架这篇直接上手实操。学完这篇你就能独立完成一个 HTTPS VIP 从零到上线的全流程。三个核心概念一句话组件一句话类比Virtual Server (VS)对外暴露的 VIP:Port所有流量的入口公司的前台大门Pool后端服务器的集合决定流量转发给谁坐在工位上的员工Profile协议处理模板决定流量怎么处理接待流程登记录入 → 访客卡 → 引导它们的关系VS 绑定 Pool Profile来一个请求就按 Profile 规定的流程处理然后转发给 Pool 里的某个 Member。准备工作先确认六个问题动手前先问清楚这六个问题少一个都可能让上线失败确认项说明示例VIP 地址从地址池申请确认不冲突10.0.0.100端口4 层TCP/UDP还是 7 层HTTP/HTTPS443协议TCP / HTTP / HTTPSHTTPS后端地址列表IP:Port确认后端存活10.0.0.10:80,10.0.0.11:80是否需要 SSL证书是否已上传 F5RSA 还是 ECC通配符还是单域名所属 Partition和业务线的隔离一致/Common/production-app第一步上传证书仅 HTTPS 需要# tmsh 导入证书和密钥 tmsh install sys crypto cert myapp.crt from-local-file /shared/tmp/your.crt tmsh install sys crypto key myapp.key from-local-file /shared/tmp/your.key tmsh install sys crypto ca-bundle myapp-ca.crt from-local-file /shared/tmp/ca.crt也可在 GUI → System → File Management → SSL Certificate List → Import 上传。验证证书已上传tmsh list sys crypto cert myapp.crt # 应看到有效期、Subject、Issuer 等信息第二步创建健康检查 MonitorMonitor 决定了一个后端 Member 是活的还是死的。选型规则业务类型 推荐的 Monitor ──────────────────────────────── TCP 端口服务 tcp只检查端口是否 Listen HTTP 页面 http检查 HTTP 200 HTTPS 页面 https走 TLS 检查创建 HTTP Monitor最常用tmsh create ltm monitor http myapp-monitor \ interval 10 \ timeout 31 \ time-until-up 0 \ send GET /health HTTP/1.1\r\nHost: myapp.local\r\nConnection: close\r\n\r\n \ recv 200 OK参数说明——这里是新手最容易踩坑的地方参数 推荐值 说明 ────────────────────────────────────────── interval 5~30 每次探测间隔秒 timeout interval×31 F5 官方公式超时 间隔 × 3 1 time-until-up 0~60 启动后等几秒再标记 up防止刚重启误判 send 请求内容 写 GET /healthTCP 不用写 recv 期望响应 响应包含此字符串才算 up重要规则timeout必须大于interval否则 F5 会报错。F5 推荐公式timeout interval × 3 1第三步创建 Node节点这一步是新手最容易忽略的步骤但理解 Node 和 Member 的区别是理解 F5 对象模型的关键。Node vs Member —— 核心区别概念Node节点Member成员定义一台物理/虚拟机的 IP 地址是 F5 中的独立资源Node 端口的组合属于某个 Pool粒度IP 级别如10.0.0.10IP:Port 级别如10.0.0.10:80创建时机可提前创建也可在 Pool 创建时自动创建创建 Pool 时指定独立性是独立的对象不依赖 Pool 存在依赖于 Pool离开 Pool 无意义共享关系一个 Node 可以被多个 Pool 引用一个 Member 只能属于一个 Pool用一个类比帮助理解Node → 一栋楼固定地址 Member → 这栋楼里的一个房间地址 门牌号 Pool → 你在这个小区里的所有房产列表 ​ 10.0.0.10 ── 一个 Node一栋楼 ├─ 10.0.0.10:80 ── 一个 Member属于 Pool A └─ 10.0.0.10:443 ── 另一个 Member属于 Pool B同一个 Node关键理解Node 是底层 IP 资源Member 是Node 端口 所属 Pool的逻辑组合。一个 Node 可以有多个不同端口的 Member分属不同的 Pool在 GUI 中看到 Node 的状态是全局的Member 的状态只代表该端口在该 Pool 中的状态提前创建 Node推荐——让对象模型更清晰tmsh create ltm node 10.0.0.10 address 10.0.0.10 tmsh create ltm node 10.0.0.11 address 10.0.0.11也可以不预先创建在下一步创建 Pool 时 F5 会自动创建对应 Node详见第四步的两种方式。验证 Node 已注册tmsh show ltm node # 应列出所有已注册的 Node 及其状态第四步创建 Pool服务器池两种创建方式方式一引用已创建的 Node推荐tmsh create ltm pool myapp-pool \ load-balancing-mode least-connections-member \ monitor myapp-monitor \ members add { \ 10.0.0.10:80 { address 10.0.0.10 } \ 10.0.0.11:80 { address 10.0.0.11 } \ }方式二一步到位Node 自动创建tmsh create ltm pool myapp-pool \ load-balancing-mode least-connections-member \ monitor myapp-monitor \ members add { \ 10.0.0.10:80 {} \ 10.0.0.11:80 {} \ } # 如果 Node 10.0.0.10 和 10.0.0.11 还不存在F5 会自动创建两种方式的区别方式一先创建 Node方式二自动创建 Node明确性Node 先独立存在对象间关系一目了然Node 随 Pool 自动产生不直观复用性同一个 Node 可被多个 Pool 引用提前注册即可自动创建的 Node 也可被后续 Pool 引用推荐场景生产环境、长期维护快速测试、临时创建生产环境推荐方式一。提前创建 Node 能让你在 F5 上看到清晰的 IP 资源视图便于后面做全局排障和统计。负载均衡算法选哪个算法使用场景round-robin后端配置一致通用场景least-connections-member长连接 / WebSocket推荐ratio-member后端性能不均按权重分fastest后端分布在各地选响应最快的新手黄金法则后端配置一样用 round-robin长连接业务用 least-connections-member。验证 Pool 状态tmsh show ltm pool myapp-pool # 重点看 # Status: available → 绿色正常 # Active Member Count: 2 → 有 2 个 Member 在线注意新建 Pool 后前几秒 Member 是红色unknown的。等一个 Monitor 周期后自动变绿up或变红down。不要一上来就以为配错了。第五步创建 Profile一个 HTTPS VS 通常需要这 4 个 Profile5.1 TCP Profiletmsh create ltm profile tcp myapp-tcp \ idle-timeout 300 \ keep-alive-interval 10 \ reset-on-timeout enabled \ time-wait-recycle enabled \ nagle disabled5.2 HTTP Profiletmsh create ltm profile http myapp-http \ xforwarded-for enabled \ reset-on-timeout disabledxforwarded-for enabled会插入X-Forwarded-For头让后端知道客户端真实 IP。强烈建议打开。5.3 OneConnect Profile连接复用tmsh create ltm profile oneconnect myapp-oneconnect \ idle-timeout-override 60 \ max-age 60 \ max-reuse 0 \ source-prefix-length 32OneConnect 让多个客户端复用和后端之间的 TCP 连接减少三次握手开销。HTTP 业务强烈推荐打开。5.4 SSL Client Profile证书卸载tmsh create ltm profile client-ssl myapp-clientssl \ cert myapp.crt \ key myapp.key \ chain myapp-ca.crt \ ciphers DEFAULT:!SSLv3:!TLSv1 \ options { dont-insert-empty-fragments }这个 Profile 负责接收客户端 HTTPS、解密成明文然后转发给后端后端走 HTTP不用算加密。第六步创建 Virtual Server前面的所有东西最终都绑在这里tmsh create ltm virtual myapp-vip-443 \ destination 10.0.0.100:443 \ ip-protocol tcp \ mask 255.255.255.255 \ profiles add { \ myapp-tcp { context all } \ myapp-http { context all } \ myapp-clientssl { context clientside } \ myapp-oneconnect { context serverside } \ } \ pool myapp-pool \ source-address-translation { type automap } \ source 0.0.0.0/0 \ vlans-enabled \ vlans add { /Common/internal }注意这里没配 serverssl 的 SSL Profile因为我们做的是 SSL 卸载 —— F5 解密后端走明文 HTTP。创建后必检查# 状态检查 tmsh show ltm virtual myapp-vip-443 # Status: Green / Available 才对 ​ # 看绑了哪些 Profiles tmsh list ltm virtual myapp-vip-443 profiles ​ # 看指向哪个 Pool tmsh list ltm virtual myapp-vip-443 pool ​ # 看 VLAN 限制 tmsh list ltm virtual myapp-vip-443 vlans第七步验证——5 项测试7.1 连通性测试nc -zv 10.0.0.100 443 # 应输出 Connection succeeded!7.2 HTTPS 证书测试openssl s_client -connect 10.0.0.100:443 -servername 10.0.0.100 -showcerts # 重点关注 # Certificate chain → 链是否完整 # Verify return code: 0 (ok)7.3 HTTP 请求测试curl -k -I https://10.0.0.100/ # 应返回 200 OK ​ # 检查 F5 插入的请求头 curl -k -v https://10.0.0.100/ 21 | grep -i x-forwarded-for7.4 负载均衡效果for i in {1..5}; do echo Request $i: curl -k -s -o /dev/null -w HTTP %{http_code} | Time: %{time_total}s\n https://10.0.0.100/ done7.5 故障切换# 禁用一个 Member观察流量是否切换到另一个 tmsh modify ltm pool myapp-pool members modify { 10.0.0.10:80 { session user-disabled } } ​ # 再次请求应该还能正常返回流量走另一个 Member curl -k -s https://10.0.0.100/ ​ # 恢复 tmsh modify ltm pool myapp-pool members modify { 10.0.0.10:80 { session user-enabled } }第九步保存配置F5 不会自动保存配置改完必须手动保存。tmsh save sys config重大变更前建议备份全量配置tmsh save sys ucs /shared/tmp/backup-$(date %Y%m%d).ucs九步 Checklist 速查□ 前置确认VIP/端口/协议/后端/SSL/Partition 六问 □ 上传证书HTTPS 业务 □ 创建 Monitorinterval × 3 1 timeout □ 创建 Node理解 Node ≠ Member □ 创建 Pool选 LB 算法 Members Monitor □ 创建 ProfileTCP HTTP OneConnect SSL □ 创建 VS绑定 Pool Profiles SNAT VLAN □ 五步验证连通 证书 请求 负载 故障切换 □ 保存配置F5 不会自动保存新手高频踩坑汇总症状原因解决VS 状态 available 但连不上SNAT 没开 / VLAN 没配对snat automap检查vlansMember 一直红色 downMonitor 配置不对 / 后端没开机调send字符串检查后端服务TCP 能连但请求卡住超时SNAT 没开后端回包找不到路source-address-translation { type automap }HTTPS 握手失败证书名拼错 / Key 和证书不匹配tmsh list sys crypto检查请求返回 502某个 Member 已挂但 Monitor 没踢掉调小interval加速检测请求很慢OneConnect 没开TCP 不断重建加上 OneConnect Profile配了半天流量不进来没保存tmsh save sys config小结这篇是 F5 学习系列的第二篇也是最核心的一篇。掌握 Pool / VS / Profile 这三板斧你就能独立完成一个 HTTPS VIP 从创建到上线的全流程。这篇提到的其他模块——Monitor、SSL Profile、iRules、监控指标——后续会一篇一篇展开欢迎持续关注。相关阅读[F5 BIG-IP 学习路线一张图理清核心技术与架构关系]上一篇F5 健康检查 Monitor 深入篇下一篇敬请期待

相关新闻