amazon-web-services - AWS 替代 DNS 故障转移?

标签 amazon-web-services high-availability failover amazon-elb amazon-route53

我最近开始阅读和使用 AWS。我对可以使用该平台实现的不同高可用性架构特别感兴趣。具体来说,我正在寻找一个可靠的穷人解决方案,可以使用 实现。最少金额 的服务器。

到目前为止,我对主要 HA 问题的解决方案感到满意:负载平衡、冗余、自动恢复、可扩展性......

我唯一的症结是 故障转移 解决方案。

使用 ELB 可能看起来很棒,但 ELB 实际上在幕后使用 DNS 平衡。见 Is AWS's Elastic Load Balancer a single point of failure? .同样来自 Netflix 博客文章:Lessons Netflix Learned from the AWS Outage

This is because the ELB is a two tier load balancing scheme. The first tier consists of basic DNS based round robin load balancing. This gets a client to an ELB endpoint in the cloud that is in one of the zones that your ELB is configured to use.



现在,我了解到 DNS 故障转移并不是一个理想的解决方案,正如其他人指出的那样,主要是因为不可预测的 DNS 缓存。参见例如:Why is DNS failover not recommended? .

除了 ELB,在我看来,大多数 AWS HA 架构都依赖于使用路由 53 的 DNS 故障转移。

最后, float IP/弹性IP(EIP)策略出现在极少数文章中,例如Leveraging Multiple IP Addresses for Virtual IP Address Fail-over我很难弄清楚这是否是生产系统的可行解决方案。此外,我遇到的所有示例都使用一组主动-被动实例实现了这一点。为每个主动者都拥有一个被动者来实现这一目标似乎是一种浪费。

有鉴于此,我想问您什么是执行故障转移的更快更可靠的方法?

更具体地说,请讨论如何执行故障转移 不使用 DNS 对于以下 2 个设置:
  • 2 个双活 EC2 实例位于单独的 AZ 中。主动-主动,因为这是一个预算设置,如果我们负担不起一个实例闲置。
  • 1 个 ELB 和区域 A 中的 2 个 EC2 实例,1 个 ELB 和区域 B 中的 2 个 EC2 实例。同样,这两个区域都处于事件状态并为流量提供服务。您如何处理从 1 个 ELB 到另一个 ELB 的故障转移?
  • 最佳答案

    如果你是好奇的类型,就像我一样,通过玩它你会更好地理解 ELB。

    在 2 个可用区中配置的“1”ELB 计费为 1,但部署为 2。分配了 2 个 IP 地址,每个平衡器一个,自动创建 2 个 A 记录,每个记录一个,TTL 非常短。

    这 2 个平衡器中的每一个都会将流量转发到同一可用区中的实例,或者您可以启用跨可用区负载均衡(如果每个可用区中只有 1 个服务器实例,则应该启用)。

    这些 IP 地址不会经常更改,尽管 ELB 会像其他任何事情一样失败是有道理的,但我可能有 30 个,而且我手上从未有过一个死掉的地址,大概是因为 ELB 基础设施将替换一个死掉的实例并改变DNS 无需您的干预。

    对于 2 个区域,除了在某种程度上使用 DNS 之外,您别无选择。来自 Route 53 的基于延迟的路由可以在正常操作中将人们发送到最近的站点,并在整个区域发生中断(由 Route 53 运行状况检查检测到)的情况下将所有流量路由到另一个站点,但这有点当整个区域不可用时,更有可能遇到 DNS 缓存问题。

    当然,使用弹性 IP 的单个区域中的部分主动/被动困境可以通过两个应用程序服务器上的 HAProxy 轻松解决。它是一个类似于 ELB 的 http 请求路由器和负载均衡器,但具有更广泛的功能集。代码非常紧凑,您可以在应用服务器上运行它,而 CPU 消耗可以忽略不计。然后,具有 EIP 的实例将平衡其本地应用程序服务器和对等方之间的流量。跨区域,ELB 背后的 HAProxy 可以将流量转发到远程区域的伙伴,如果本地区域已启动,但无论出于何种原因应用程序无法为来自本地区域的请求提供服务。 (我已经使用这样的设置来提高外部服务的可用性,当本地区域的直接 Internet 路径不起作用时,将请求退回到远程 AWS 区域。)

    关于amazon-web-services - AWS 替代 DNS 故障转移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983909/

    相关文章:

    javascript - 重新启动 EC2 实例后,AWS S3 存储桶未重新安装

    amazon-web-services - 如何删除AWS EC2实例?它不断地再次回来

    mysql - 如何在 Amazon RDS 数据库上获取 phpmyadmin 访问权限

    kubernetes - 工作节点与主节点的关系?

    php - 将 predis 故障转移到 redis 从站的最佳方法是什么?

    asp.net - 如何使用 ASP.Net 集群上传文件夹?

    swift - XCode Swift AWS S3 上传不工作

    nosql - 可靠性:主/从模式是注定的吗?

    Hadoop HA active NN 不断崩溃,自动故障转移不起作用

    java - 手动 GC 调用的用例?