跳转到内容
搜索文档

第三方负载均衡器

最后更新 查看 MarkdownAgent 设置

本指南说明在 Cloudflare 位于第三方负载均衡器之前时,如何排查常见问题。


当 Cloudflare 作为反向代理(橙云代理)位于 F5 BIG-IP 负载均衡器之前时,由于 Cloudflare 如何维护持久连接,你可能会遇到会话亲和性问题。

问题

F5 BIG-IP 负载均衡器通常在 TCP 连接开始时设置会话 cookie(如果不存在),然后会忽略同一 TCP 连接上后续 HTTP 请求中的所有 cookie。这会破坏会话亲和性,因为 Cloudflare 由于 HTTP keep-alive,会在同一 TCP 连接上发送多个 HTTP 会话。

症状包括:

  • 用户被登出或在身份验证流程中遇到问题。
  • 结账时购物车显示为空。
  • 其他依赖会话的不一致情况。

F5 会话 cookie 可以有任意名称,但通常遵循特定格式:

  • 未加密(可轻易解码以显示源站服务器 IP 和端口):

    BIGipCookie=16908480.16415.0000;path=/; Httponly; Secure
  • 已加密:

    BIGipCookie=TS019a202c=01625f1893a7d6e4b2c1a0f98e7d6c5b4a3f2e1d; path=/; Httponly; Secure

2. 测试此问题

你可以使用 curl 测试此问题。运行多个请求并检查会话 cookie 是否一致设置:

for i in {1..100}; do curl -sI https://example.com; done 2>&1 | grep "<COOKIE_NAME>" | wc -l

如果通过 Cloudflare 代理时计数明显少于 100,而直接连接到源站时等于 100,则说明你遇到了此问题。

解决方案:配置 F5 OneConnect 配置文件

建议的解决方案是在 F5 BIG-IP 负载均衡器上配置带有单主机(/32)掩码的 F5 OneConnect 配置文件。

OneConnect 如何帮助

  • 客户端不会通过 TCP 连接固定到后端服务器
  • HTTP 请求会单独进行负载均衡
  • 在同一 TCP 会话中会遵守包含不同持久性信息的不同 cookie
  • 会在每个 HTTP 响应中设置 cookie

重要注意事项

  1. 确认 OneConnect 与你的 TMOS(Traffic Management OS)版本兼容。
  2. 先在预发布或测试 Virtual IP (VIP) 上测试此配置,因为它会改变 F5 设备的行为方式。
  3. /32 掩码对于与 Cloudflare 正常配合至关重要。

相关资源

这篇文档对您有帮助吗?