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

Mis*_*sky 9 amazon high-availability amazon-ec2

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

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

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

谢谢.

Tom*_*Tom 15

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

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

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

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


Uni*_*One 6

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

对于RDS,很清楚应用程序是什么-它是您选择的数据库服务器。基本上,AWS可以使用默认设置来设置RDS的HA实例,而无需您进行大量输入。

但是,对于您的应用程序,您需要向AWS提供更多详细信息。做这件事有很多种方法:

  • 使用不同可用性区域中的一堆EC2实例创建ELB
  • 创建一个具有自动缩放组的ELB ,它将引导您逐步创建AMI启动配置;在这种模式下,您甚至可以告诉ASG使用ELB健康检查来确定EC2实例何时不再健康
  • 您没有提到您的应用程序是什么,但是您可能想参与CodeDeploy来告诉AWS如何将最新代码部署到新启动的EC2实例中;CodeDeploy与ELB和ASG协同工作
  • 您可以在Elastic Beanstalk中一起定义它们,而不必分别定义上述组件。这是您必须自己做出的决定-您是否想通过自己定义各个组件来提高灵活性,是否应该简化事情并使用EB?
  • 最后,如果您使用Docker,并且可以对您的应用程序或同一应用程序的不同组件进行Docker化,则AWS通过多容器 docker支持EB

无论您选择哪种方法,AWS CloudFormation模板都是将所有内容捆绑在一起并定义堆栈的好方法。这样的优势之一是,每当需要在堆栈中进行更改时,都将更改CloudFormation模板,应用更改,并让AWS找出依赖关系是什么,更新它们的顺序以及方式。