什么"期望的实例#34;需要吗? AWS Amazon Web Services AutoScaling组

时间:2014-11-12 08:30:42

标签: amazon-web-services amazon-ec2 autoscaling

我在亚马逊AWS上遇到了一个奇怪的情况。我不明白所需的实例编号用于什么? 我有一个自动缩放组,其中包含已配置的向上扩展和缩小操作。

我有一个自定义PHP文件,可以根据一些外部因素运行向上扩展向下扩展。我想知道在必要的实例中我必须编写哪个数字,以免影响我的自动缩放操作。

例如:

  1. 我想要2
  2. 我有两个正在运行的实例
  3. 我运行缩小操作
  4. 实例是1
  5. 自动调节组会自动启动另一个实例,因此我的缩小功能无效,因为我结束了2次运行
  6. 我该怎么办?

    非常感谢!

5 个答案:

答案 0 :(得分:22)

ASG将始终尝试维持所需容量。如果您向上或向下扩展,并且新实例数与所需容量不同,则ASG将添加或删除实例以返回到所需容量。

如果您使用扩展策略并且满足策略条件,则ASG将更改所需容量以匹配扩展策略的结果。例如,您具有2的期望容量,以及如果CPU利用率超过阈值则要扩展的策略。

如果该政策得到满足,那么所需容量将增加到3,依此类推。

因此,手动按比例放大和缩小将导致ASG将实例数恢复到所需容量。

如果要手动向上和向下缩放,可以将Max和Min设置为较宽的值,并在其中移动Desired Capacity。

所以你可以做Max = 10,Min = 1,Desired = 3。然后,您可以通过更改所需容量来扩大或缩小。 (这就是我们使用Auto Scaling的方式,我想我之前为什么给你一个错误的答案。)

如果要终止实例并同时更改所需容量,CLI可以执行此操作。

更常见地参见Terminate instance in ASG和CLI ASG文档。

答案 1 :(得分:3)

我认为所需的值意味着在特定时间手动设置多个实例。我认为,99%的时间,你让你想要的==最小值,并让你的ASG政策进行扩展。

答案 2 :(得分:2)

这些答案都很好,但是我想再补充一种情况。

假设您正在进行蓝色/绿色部署,并且流量繁忙。您的最小值为1,因为50%的时间中您只有1个实例。但是,如果说您正在执行CI / CD,则部署将全天候进行。开发人员可以在实例扩展到10的大型扩展事件的中间将代码推入生产环境。现在,如果您使用terraform之类的工具来部署自动扩展组等,则会将自动扩展组重置为1,您将面临服务中断的风险。

由于这个原因,在部署期间,我们有一个terraform覆盖值,我们可以在调用时以编程方式将其替换为terraform。在调用terraform之前,我们使用aws cli来确定自动缩放已将实例缩放到的当前所需容量,然后将该值传递给terraform,以便新的自动缩放组具有与上一个相同数量的主机。

答案 3 :(得分:1)

对于使用Terraform进行的蓝色/绿色部署,您可以考虑最初使用的最大期望值为10。部署后,您可以跟进并将Terraform中的desired_capacity值重新设置为某个值,并让为ASG设置的任何触发条件使其自然缩小。 (请记住,“ desired_capacity”是“应该”位于ASG中的实例的目标,其中“ min_size”是ASG中允许的最小值)

https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html

resource "aws_autoscaling_group" "example" {
  availability_zones = 
  ["${data.aws_availability_zones.available.names}"]
  max_size = 20
  min_size = 2
  desired_capacity = 10
  launch_configuration = "${aws_launch_configuration.example.name}"
}

答案 4 :(得分:-1)

您已将所需设置为2.您的自动缩放组(asg)可以扩展到所需容量以上但不能缩放到它之下。通过指定所需容量,您可以将asg绑定到无论如何都能保持此容量。如果您的实例少于您的实例所需的容量,您的asg将扩大规模,但不会缩小到低于所需的容量。 例如,您所需的容量为5,并且您正在运行10个实例。在此阶段,asg可以缩小到5但不低于它。