EC2 Amazon 高可用性始终开启

Posted

技术标签:

【中文标题】EC2 Amazon 高可用性始终开启【英文标题】:EC2 Amazon High Availability Always On 【发布时间】:2016-08-11 03:02:21 【问题描述】:

我在 AWS EC2 中使用 Web 和数据库实例,我想让它们具有高可用性,这样如果一台服务器发生故障(主服务器),那么另一台服务器会打开(辅助服务器)。

我找到了很多关于 RDS 高可用性的信息,但没有找到关于不是 RDS 的 EC2 实例的信息。

    能否为我提供一些链接,以获得如何操作的良好指南? 能否请您简单地告诉我,为了实现高可用性,我应该执行哪些流程?

谢谢。

【问题讨论】:

【参考方案1】:

使用 EC2 实现 HA 有多种可能性:

创建一个最小容量=1 和最大容量=1 的自动缩放组。因此,每当您的实例失败时,自动缩放组将创建一个新的。自动扩缩组是免费提供的,因此这不是一个糟糕的解决方案,具体取决于您的 SLA。 使用 ec2 auto-recovery 功能,创建一个 cloudwatch 警报,如果失败将替换您的实例。 创建两个 EC2 实例并使用 Route 53 DNS 故障转移来解析为健康的实例 最后但同样重要的是:最好的解决方案肯定是跨多个可用区创建多个实例,并使用弹性负载均衡器来分配流量。这样,即使一个实例失败,您也已经有了其他可用的实例。 AWS 推荐此解决方案,因为他们在 AZ 中的实例具有 99.95% 的 SLA。通过放置多个可用区,您可以获得 100% 的可用性

编辑:添加信息为什么 EC2 没有这样的本机功能。

与 RDS 相比,EC2 没有原生 HA 功能,因为当 RDS 更多的是 PaaS 时,EC2 是纯 IaaS。因此,对于 RDS,当您选择 HA 时,它实际上会在另一个可用区域中生成一个从数据库并复制您的主数据库。每当主数据库发生故障时,您都会自动将 DNS 故障转移到从数据库,该数据库被选为主数据库,并且正在创建一个新的从数据库。

【讨论】:

“他们在 AZ 中的实例的 SLA 为 99.95%”- 引用的数字(现在更新为 99.99%)适用于 区域,而不是 AZ。因此,必须使用多可用区部署来获得该级别的可用性。 aws.amazon.com/ec2/sla【参考方案2】:

您应该问的问题是 - 我如何在 AWS 上使我的应用程序 HA,而不是如何使 EC2 HA。简短的回答是,您必须首先告诉 AWS 您如何定义和部署您的应用程序。

对于 RDS,应用程序是什么非常清楚 - 它是您选择的数据库服务器。在最基本的情况下,AWS 可以使用默认设置设置 RDS 的 HA 实例,而无需您提供太多输入。

但是,对于您的应用程序,您需要向 AWS 提供更多详细信息。有几种方法可以做到这一点:

创建一个ELB,其中包含不同可用区中的一组 EC2 实例 创建一个带有auto-scaling group 的ELB,这将引导您创建AMI 和launch configuration;在这种模式下,您甚至可以告诉 ASG 使用 ELB 健康检查来确定 EC2 实例何时不再健康 您没有提及您的应用程序是什么,但您可能希望CodeDeploy 参与,告诉 AWS 如何将最新代码部署到新启动的 EC2 实例; CodeDeploy 与 ELB 和 ASG 配合使用效果很好 您可以在Elastic Beanstalk 中将它们一起定义,而不是单独定义上述组件;这是您必须自己做出的决定 - 您是否希望通过自己定义各个组件来获得更大的灵活性,是否应该简化事情并使用 EB? 最后,如果您使用 Docker 并且可以对您的应用程序或同一应用程序的不同组件进行 docker 化,AWS 支持 EB 与 multi-container docker

无论您决定采用哪种方式,AWS CloudFormation 模板都是将所有内容联系在一起并定义您的堆栈的好方法。这样做的一个好处是,当您需要对堆栈进行更改时,您将更改 CloudFormation 模板、应用更改并让 AWS 确定依赖项是什么、更新它们的顺序以及更新方式。

【讨论】:

【参考方案3】:

如何使用 Elastic Beanstalk(有关官方文档,请参阅 here)?

本质上它在使用详细配置here时使用了许多AWS服务。

其主要目的是更轻松地创建多组环境来运行您的应用,同时监控应用的运行状况和负载,并启动实例来分配负载。

但是,可以将您的环境配置为单个实例(请参阅Environment Types 部分下的主要文档)。这意味着您可以利用运行状况监控,而 AWS 将负责可用性。

更具体地回答您的问题: 1) 官方 AWS 文档非常详细,应该可以帮助您入门。有几个视频资源解释了基本设置

2) 您可以组合不同区域的多个 EBS 实例,以使您的服务器靠近您的流量。

【讨论】:

以上是关于EC2 Amazon 高可用性始终开启的主要内容,如果未能解决你的问题,请参考以下文章

aws ec2 keepalived 的高可用构建

redis高可用架构

Powershell AWS 自动化管理 (11) - 创建一个高可用的WordPress博客(中)

YARN开启高可用

Hbase开启高可用

Hbase开启高可用