我们拥有两台具有不同 IP 地址的服务器。我们使用一台服务器作为主服务器,主要运行 Nginx 来为 80 和 443 提供应用程序,第二台服务器作为备份,以防出现问题。然后是 AWS 负载均衡器,其目的是使用 AWS-CLI 尽快切换主服务器的 IP 地址 - 然后将此负载均衡器用作我们域的 CNAME。
我的问题是:如何在不使用价格过高的 AWS 负载均衡器的情况下实现同样的目标?有没有办法在不停机的情况下更改域的 A 记录?
我以为我会在另一台服务器上使用 Nginx 作为负载均衡器,因此我只有一个 IP 地址可以添加为 A 记录,然后直接在 Nginx 配置中更改主服务器的 IP 并重新加载 Nginx 配置。我不确定这是否是一个可靠的解决方案?
答案1
尽管设置和诊断可能很麻烦,但这正是 GSLB(全局服务器负载平衡)概念的设计目的。这就是 Amazon Route 53 之类的产品为您做的事情。
那里有大量不错的材料;我不会试图将其提炼成这个答案而让您感到困惑。
我没有使用过任何开源解决方案来管理 GSLB,但至少有Polaris-GSLB,看起来不错。您确实需要某种机制来在站点之间共享健康/指标数据,并在互联网规模和互联网延迟的情况下决定故障转移。据我所知,这往往是专有的。从个人经验来看,我确实知道您必须非常细心(即自动化或因沮丧而死)以确保一切都已设置好(没有缺少任何东西,双方都一致)。
但是,GSLB 是企业级解决方案。对于较小的网站,您可以只需使用各种 DNS 提供商 API 在检测到中断时进行更改即可。不过,您需要制作一个可以从不同位置进行测试的东西。然后,如果您的集体服务测试失败,您可以让它触发一个 webhook 来调整 DNS。那卷上有很多胶带。