Amazon web services 从可用性区域中断中自动恢复?

Amazon web services 从可用性区域中断中自动恢复?,amazon-web-services,amazon-ec2,autoscaling,Amazon Web Services,Amazon Ec2,Autoscaling,如果可用性区域在Amazon Web Services/EC2中发生中断,是否有任何工具或技术可用于在不同的可用性区域中自动创建新实例 我想我了解如何在发生可用区(AZ)停机时进行自动故障切换,但是如何从停机中进行自动恢复(在新AZ中创建新实例)?可能吗 示例场景: 我们有一个三实例集群 ELB round robins向集群发送通信量 我们可以丢失集群中的任何一个实例,但不能丢失集群中的两个实例,并且仍然可以完全正常工作 由于(3),每个实例位于不同的AZ中。叫他们AZs A,B和C 配置EL

如果可用性区域在Amazon Web Services/EC2中发生中断,是否有任何工具或技术可用于在不同的可用性区域中自动创建新实例

我想我了解如何在发生可用区(AZ)停机时进行自动故障切换,但是如何从停机中进行自动恢复(在新AZ中创建新实例)?可能吗

示例场景:
  • 我们有一个三实例集群
  • ELB round robins向集群发送通信量
  • 我们可以丢失集群中的任何一个实例,但不能丢失集群中的两个实例,并且仍然可以完全正常工作
  • 由于(3),每个实例位于不同的AZ中。叫他们AZs A,B和C
  • 配置ELB健康检查,以便ELB可以确保每个实例都健康
  • 假设一个实例由于AZ A中的AZ停机而丢失
  • 此时,ELB将看到丢失的实例不再响应运行状况检查,并将停止将流量路由到该实例。所有请求都将转到剩余的两个正常实例。故障转移成功

    恢复是我不清楚的地方。是否有办法自动(即无需人工干预)替换新AZ(如AZ D)中丢失的实例?这将避免发生停机(A)的AZ,并且不使用已经有实例的AZ(AZs B和C)

    自动缩放组? 自动缩放组似乎是一个很有希望的开始,但我不知道他们是否能够正确处理这个用例

    问题: 在自动缩放组中,似乎没有办法指定应在新AZ中创建替换死/不健康实例的新实例(例如,在AZ D中创建,而不是在AZ a中创建)。这是真的吗? 在自动校准组中,似乎没有办法告诉ELB移除失败的AZ并自动添加新AZ。是这样吗

    这些是自动缩放组的真正缺点,还是我遗漏了什么

    如果无法使用自动缩放组完成此操作,是否有其他工具可以自动为我完成此操作

    2011年,FourSquare、Reddit和其他公司陷入了依赖单一可用性区域()的困境。从那时起,工具似乎已经取得了长足的进步。我对缺乏自动化恢复解决方案感到惊讶。每家公司是否只是推出自己的解决方案和/或手动执行恢复?或者他们只是在掷骰子,希望它不会再发生

    更新: @Steffen Opel,谢谢你的支持。自动缩放组看起来更好,但我认为它们与ELB一起使用时仍然存在问题

    假设我创建一个自动缩放组,最小、最大和所需设置为3,分布在4个AZ上。自动缩放将在3个不同的AZ中创建1个实例,第4个AZ保留为空。如何配置ELB?如果它转发给所有4个AZ,那就不起作用了,因为一个AZ总是没有实例,而ELB仍然会将流量路由到它。这将导致当流量流向空的AZ时返回HTTP 503s。我过去也有过这种经历


    这似乎需要手动更新ELB的AZs,使其只运行实例。每次自动缩放导致AZ的不同组合时,都需要这样做。是这样,还是我遗漏了什么?

    解决这个问题的方法有很多。在不知道“集群”是什么以及新节点如何活动的情况下,可能会向主节点注册、加载数据等以引导。例如,在hadoop上,一个新的从属节点需要向为其内容提供服务的namenode注册。但忽略这一点。只关注新节点的启动

    您可以将cli工具用于windows或linux实例。我从两个操作系统中的开发盒和两个操作系统的服务器上启动它们。以下是linux的链接,例如:

    它们由许多命令组成,您可以在dos或linux shell上执行这些命令,以执行诸如启动实例或终止实例之类的操作。它们需要配置环境变量,如aws凭据和java路径。下面是在AvailZone=us-east-1d中创建实例的输入和输出示例

    示例命令: ec2请求点实例ami-52009e3b-P0.02-ZUS-east-1d--key DrewKP3--groupLinux--instance type m1.medium-n1--type一次性

    样本输出: SPOTINSTANCEREQUEST sir-0fd0dc32 0.020000一次性Linux/UNIX open 2013-05-01T09:22:18-0400 ami-52009e3b m1.medium DrewKP3 Linux us-east-1d监控已禁用

    请注意,我是一个便宜的wad,使用2美分的Spot实例,因此您将使用标准实例而不是Spot。但我还是要创建数百台服务器

    好的,你有一个数据库。为了便于讨论,假设您有AWS RDS mysql,一个微实例以多可用区模式运行,每小时额外收费半美分。那就是每天72美分。它包含一个表,称之为zonepref(AZ,preference)。比如

    美国西部-1b,1

    美国西部-1c,2

    美国西部-2b,3

    美国东部1d,4

    eu-west-1b,5

    ap-东南-1a,6

    你明白了。区域偏好

    RDS中还有另一个类似于“活动节点”的表,其中包含IP addr、实例id、zone、lastcontact、status(string、string、string、datetime、char)列。假设它包含以下活动节点信息:

    ‘10.70.132.101’、‘i-2c55bb41’、‘美国东部1d’、‘2013-05-01 11:18:09’、‘A’

    ‘10.70.132.102’、‘i-2c66bb42’、‘us-west-1b’、‘2013-05-01 11:14:34’、‘A’

    ‘10.70.132.103’、‘i-2c77bb43’、‘us-west-2b’、‘2013-05-01 11:17:17’、‘A’

    “A”=活着并且健康,“G”=快死了,“D”=死了

    现在,您的节点在启动时建立了一个cron作业或运行一个服务,让我们将其称为您喜欢的任何语言的服务器