使用 Azure 内部负载均衡器和 BIG-IP 的实际注意事项
2020-04-14 15:23:58
本文于1 个月前更新,原帖发布于 2019 年 11 月 19 日,作者:Michael OLeary
背景
最近,我遇到一个场景,做了一些测试,觉得值得在此分享一下。一位用户告诉我他想将
BIG-IP 放入 Azure,但是他有一些要求:
2. 他不想使用外部负载均衡器。他部署了面向互联网的防火墙,该防火墙可以将入站流量代理到 BIG-IP,因此无需将BIG-IP暴露给互联网。他只需要内部负载均衡器。
3. 他不希望自己的流量进行源地址转换。他希望应用服务器能看到真实的客户端 IP。
4. 他希望不要在故障转移时自动更新 Azure 路由。
5. 他希望以双活模式运行其 BIG-IP 对,但也要支持主备模式。
备注:部署 BIG-IP 时为何要使用
Azure 负载均衡器?这不就像在一个负载均衡器前面再放一个负载均衡器吗?在本例中,我们将 ALB 用作基本的 3/4 层流量分类器,简单地将流量发送到多个
BIG-IP 设备,并在发生 VM 级别故障时提供故障转移。但是,当我们需要高级应用服务(TLS 处理、身份验证、高级运行状况监视、复杂的负载均衡方法等)时,我们希望流量经过
BIG-IP。
分析
首先,我整理了一个快速演示,以便轻松地向他展示如何在 ALB 后端部署
BIG-IP。我在演示中使用了一个外部(面向互联网)ALB 和一个内部 ALB。此演示使用的是 F5 提供的官方模板,但额外部署了一个应用服务器并为 BIG-IP 配置了一个路由和 AS3 声明。如果不是因为他只需要内部负载均衡器,此设置已经可满足他的要求:
约束条件
但此用例需要的是不面向互联网的负载均衡器。此时,我们遇到了两个问题:
2. 仅使用 1 个内部负载均衡器时,“如果入站规则跨所有端口和协议进行负载均衡,则应只部署一条规则。”由于我们希望所有端口都至少有 1 条规则(用于来自服务器的出站流量),因此我们也不能为应用单独的负载均衡规则。这样做将会显示上面引号中的错误消息。
备选解决方案
我们有几个备选方案。有一种方法可以同时满足他的全部要求,但较为复杂。接下来我将讨论三个选项以及它们是如何满足要求的。每个选项都将
BIG-IP 放在一个内部 ALB 的后面:
1. BIG-IP 会将流量源地址转到 Web 服务器,并发送 XFF 标头。默认路由可以是防火墙,因此来自服务器的流量(如补丁更新)仍可以到达互联网。可以是双活或主备模式,但必须进行源地址转换。
2. 或者,不要对流量进行源地址转换,这样 Web 服务器会看到真实的源 IP。您将需要 UDR(用户自定义路由)来指向主动 BIG-IP 上的默认路由以及所有客户端子网。故障转移时,您将需要自动更新此 UDR(通过 F5 自动更新)。但这种办法只适用于主备模式。
3. 高级:使用双网卡 BIG-IP(1 个网卡用于管理,1 个网卡用于数据平面)。部署仅具有 1 条负载均衡规则且设置“高可用性”端口(所有端口)的单个内部 Azure 负载均衡器,将 “F5 对”放置在其后面。然后,我们将服务器子网的默认路由指向 Azure 负载均衡器,后者将由 F5 上的 VIP 0.0.0.0/0 提供服务。由于这仅允许您在 Azure 负载均衡器上使用 1 条负载均衡规则,因此请在 Azure 负载均衡规则上启用DSR。指定一个“外部子网范围”,该范围不在VNET中,而只可以存在于 BIG-IP上。创建一个该范围的路由,并将下一个跳转指向唯一负载均衡规则下的前端 IP。最终,让您的防火墙将流量发送到外部范围内的 F5 实际 VIP(而不是前端 IP),最终流量将转发到 Azure 负载均衡器和 F5。
在这种情况下,我个人建议使用选项 B 中的架构。原因如下:
- 这也许是最简单的设置。主备场景很常见,方便企业中大多数员工理解。
- 使用此设置,出站服务器生成的流量仍会经过 BIG-IP,因此可以得到有效管理和保护。
- 不需要进行源地址转换。有时,发送 XFF 标头不是很好理解,也不是非 HTTP 应用的一个选项。
- UDR 可通过 F5(或客户工具,如果需要)轻松实现自动更新
尽管选项 C 从技术上可以满足要求,但我不建议使用,因为该选项复杂难懂。“外部”IP 范围不是技术术语,而是变通方案。所有流量都必须在 BIG-IP 上使用相同的网卡。无论如何,Azure 中的路由更新应自动进行,任何拥有云基础设施的企业都了解自动化的价值。
结语
如果您的使用需求决定您应采取非默认部署架构,那么您可以采用多种方法来部署
BIG-IP。综合考虑应用服务、操作支持性和高可用性等要素,我便能够为给定场景选择最佳架构。
感谢阅读,如果您有任何疑问,请与我联系。
发布评论 加入社群
相关文章
回复评论
发布评论