如何实现应用服务器高可用双活?

如何实现应用服务器高可用双活?

我需要以接近 0 停机时间的方式设置我的应用程序。我的一个数据中心在 TX,另一个在 Vegas。现在,如果我位于 TX 的服务器(被认为是 PR)发生故障,则所有流量都将转移到 Vegas 服务器,在我的情况下,该服务器是 DR(灾难恢复)。

如果我们使用 HAProxy 或 NginX 等软件负载均衡器,并使用 Keepalived(检查 DR 站点负载均衡器和 PR 站点负载均衡器之间的心跳),我们将最终使用主动-被动负载平衡设置来克服故障转移。在这里,我们的应用程序将处于主动-主动模式。

在此处输入图片描述

如上图所示,所有传入流量都将到达负载均衡器的虚拟 IP(主动 PR 负载均衡器和被动 DR 负载均衡器,它们之间启用心跳)。如果 PR 站点负载均衡器处于活动状态,则它将负载路由到 PR 站点门户应用程序实例以及 DR 站点门户实例(因为两个站点都处于活动状态),此时 DR 站点负载均衡器将处于空闲状态并不断监控主动负载均衡器的性能。如果 PR 站点发生故障,则 DR 站点将变为活动状态并自动指向 DR 站点门户应用程序实例。

但我听说,使用 Keepalived 设置的主动-被动负载均衡器的问题在于,它在 LAN 中可以工作,但在 WAN 设置中无法工作。在我们的例子中,主动 PR 负载均衡器将位于 TX,而被动 DR 负载均衡器将位于 Vegas。

那么,要通过故障转移设置实现 HA,我该如何使用软件负载均衡器?

答案1

您将无法做到这一点。它之所以能在同一个 LAN 中工作,是因为两者之间有共享的 IP。您需要进行复杂的 BPG 路由并拥有自己的 IP 空间。

你试图把事情弄得太复杂了。最好让事情尽可能简单,快速失败,不用担心零停机时间。

您应该使用 DNS 服务来管理流量。您有一个 DNS 服务,例如来自 AWS 或来自 dyn.com 的 route53,设置了健康检查。因此,他们总是通过健康检查检查两个站点,以确保它们正常运行。它会将所有流量发送到主站点。一旦主站点的健康检查失败,它将开始为故障转移站点提供 DNS 响应。

这也不是一件容易的事,因为您必须保持故障转移站点处于活动状态,直到您可以验证主站点与故障转移完全同步。

答案2

可以使用 Nginx Plus 及其健康检查模块。在其后面有一个地址池,就像代理/负载平衡器一样,它会检查它们是否处于活动状态并应将最终用户路由到。您还可以使用 AWS 或 Azure 提供的某些 DNS API,例如与 Keepalived 配合使用 - 因此在发生故障转移时,它会将 DNS 记录更新到新的 LB 服务器。

相关内容