EC2亚马逊高可用性始终开启

时间:2016-04-19 06:04:44

标签: amazon-ec2 amazon high-availability

我正在使用Web& AWS EC2中的数据库实例我想让它们具有高可用性,这样如果一台服务器出现故障(主服务器),则打开另一台服务器(辅助服务器)。

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

  1. 您能否提供一些链接,以获得有关如何做到这一点的良好指导?
  2. 请您告诉我,为了实现高可用性,我应该采取什么样的流程?
  3. 感谢。

3 个答案:

答案 0 :(得分:14)

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

  • 创建一个最小容量= 1且最大容量= 1的自动缩放组。因此,每当您的实例失败时,自动缩放组将创建一个新实例。自动扩展组是免费提供的,因此根据您的SLA,这不是一个糟糕的解决方案。
  • 通过创建云观察警报来使用ec2 auto-recovery功能,如果失败则会替换您的实例。
  • 创建两个EC2实例并使用Route 53 DNS故障转移解析为健康实例
  • 最后但并非最不重要:最好的解决方案肯定是跨多个可用区创建多个实例,并使用弹性负载均衡器来分配流量。这样,即使实例失败,您也可以使用其他实例。 AWS建议使用此解决方案,因为它们在AZ中的实例的SLA为99.95%。通过添加几个AZ,您可以获得100%的可用性

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

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

答案 1 :(得分:4)

您应该问的问题是 - 如何在AWS上创建应用程序HA,而不是如何制作EC2 HA。简而言之,您必须首先告诉AWS您如何定义和部署应用程序。

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

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

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

无论您决定哪种方式,AWS CloudFormation模板都是将所有内容组合在一起并定义堆栈的好方法。这样做的一个优点是,只要您需要对堆栈进行更改,您就可以更改CloudFormation模板,应用更改并让AWS确定依赖关系是什么,更新它们的顺序以及方式。

答案 2 :(得分:3)

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

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

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

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

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

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