集群 F5 Big-IP 设备;可能吗?

集群 F5 Big-IP 设备;可能吗?

我开发了一个 Web 应用程序。它将在由五台 IIS 服务器组成的服务器群上运行。一旦与服务器群中的一台服务器建立会话,该会话中的其他 HTTP 请求将在会话的剩余时间内定向到同一台服务器,这一点至关重要。

今天我发现了 F5 的网站,并了解到了“粘性会话”。由于我的大多数用户都是移动用户(例如 iPhone),因此他们的 IP 地址可能会在单个会话中发生变化。这意味着源 IP 不能用于识别唯一会话。白皮书建议 F5 LTM 设备为此提供解决方案,允许我使用 HTTP 请求本身的内容 [或 cookie] 来确定会话身份。

到目前为止一切顺利。但后来我开始思考……F5 设备是单点故障。此外,如果我大幅增加容量并想添加更多 F5 设备怎么办?设置一个集群是有意义的。但尽管我尽我所能谷歌搜索,我还是找不到一份白皮书来描述集群如何“在幕后”运作的基本概念。

考虑一下……假设我购买了两台 F5 设备。它们在我的网络的外部(面向 Internet)接口上共享一个公共“虚拟”IP。HTTP 连接进入,并且两台设备以某种方式确定 F5 #1 应该应答呼叫。F5 #1 现在有一个内存映射,该映射将该会话的身份 [例如通过 cookie] 关联到内部 Web 服务器 #4。两分钟后,同一个客户在同一会话中启动了一个新的 HTTP 连接。目标“虚拟”IP 相同,但他的源 IP 地址已更改。我怎么能保证 F5#1 而不是 F5#2 会接收该连接呢?如果前者接收到它,我们就没问题了,因为它有一个内存映射来识别会话。但如果后者接收到它,它就不会知道该会话与 Web 服务器 #4 相关联。

两台 F5 设备是否以某种方式相互共享信息以实现此目的?或者我描述的配置不是一种实用/常见的方法?

抱歉,我是新手,这些问题对我来说都是很新的。

答案1

大多数 F5 都是 HA 对,因此它们会集群化。一旦一个 F5 发生故障,IP 就会由对中的另一个 F5 接管,因此不会出现停机时间。对于您的问题,每个 IP 一次只分配给一个 F5,并且不是真正在两个 F5 上都处于活动/活动状态。

这是您的解决方案,现在您应该问的下一个问题是,如果托管两个 F5 的整个站点都瘫痪了会发生什么?(然后研究全局负载平衡)。

答案2

我不相信您真的可以“集群”两个 F5 内容交换机,尽管我相信他们正在开发该功能,但我可能错了。集群负载平衡器是一项巨大的工程挑战 - 它们如何在第 4 层或第 7 层共享信息,它们如何在第 2 层或第 3 层进行通信,以及如何在不影响性能的情况下启用集群和信息共享,因为负载平衡器必须以线速运行。

想想过去的防火墙,基于代理的防火墙始终是独立节点,因为它们在第 7 层执行了太多操作,并且基本上不可能在不影响性能的情况下跨节点共享这些信息,而状态数据包过滤器只需传输第 4 层信息,即使这也是一项开销。负载平衡器通常会部署其大部分配置,就像您的 VIP 一样,充当端点,因此整个 TCP 会话都会被重写,负载平衡器将成为服务器的客户端(即,实际上有两个流,这就是实际客户端无法直接执行到后端服务器的 http 流水线的原因之一)。

使用 HA,您无法实现所需的扩展,因此您必须扩展负载均衡器来处理负载等。供应商喜欢这种扩展,因为它通常(并非总是如此,因为有时您可以通过许可证升级启用额外的 CPU)意味着新的、更大的盒子 HA 确实提供了弹性和可靠性,但显然如此。使用 HA,您通常具有命令传播、配置同步和某些会话交换元素(可以在一定程度上进行配置,因为这可能会导致负载)。

您可以通过对负载均衡器进行负载平衡(即 LB -> LB -> Web Farm)来实现扩展,但这并不是很好,可能会引入延迟,成本(非常)高,并且您的基础设施还有另一个故障点,尽管我见过它成功实施。

您可以使用 VRRP 之类的东西,它几乎类似于准集群。在此实现中,您可以在 Web 场前面设置两组 HA 负载平衡器对,分别称为 HA1 和 HA2。使用 VRRP,您可以创建两个 VIP,一个在 HA1(vip1)上工作,另一个在 HA2(vip2)上工作,因为 VRRP 优先级配置较高。vip1 和 vip2 都可以通过 VRRP 故障转移到另一对 HA,可以自动(基于监视器等)或通过降低 VRRP 优先级手动进行。

大多数供应商都有关于上述配置的知识库文章。我相信有一家供应商的产品中确实有集群功能,不过我建议你去谷歌搜索一下。

所有负载均衡器都具有各种形式的持久性,您可以将其应用于后端服务器关联。目前流行的形式是 cookie 和哈希(基于 4 元组和一两个其他内容)。当负载均衡器像在您的场景中一样充当端点时,一旦 TCP 连接完全建立,它将创建一个协议控制缓冲区,其中包含有关连接的信息(本质上是 4 元组和其他几个内容)。有两个这样的缓冲区,一个代表连接的每一侧,这个缓冲区驻留在负载均衡器的内存中,直到会话结束,然后清除它们以释放内存以供再次使用。

答案3

Citrix NetScaler 似乎是最先进的负载平衡解决方案,尤其是在集群领域。您无需安装 HA 对,只需使用两个盒子集群即可。然后,当您想要扩展时,只需向集群添加更多盒子即可。它们还可以集群在 VM 中运行的负载平衡器。

答案4

在 F5 平台上,您基本上有两个选项,具体取决于您配置的 VIP 类型。在第 4 层 VIP(实际上是 NAT)上,您可以配置连接镜像,这样 TCP 会话就不会在 HA 事件期间中断。对于第 7 层 VIP,这是不可能的 - 有太多状态无法实时“备份”到备用服务器 - 但您可以镜像 cookie 持久性记录,这将确保在 HA 故障转移后,当客户端重新连接时,它将被重定向到相同的后端服务器。

我没有第一手资料,但我相信 Netscaler 具有类似的功能。

也就是说,完全依赖这种持久性的方案将会出现问题,特别是如果您的后端服务器定期进出 VIP 轮换。我鼓励您研究建立一个共享缓存(memcached 非常适合这种情况),您的服务器池中的任何成员都可以查询以验证传入请求的 cookie。这比您想象的要容易 :)

相关内容