我在亚马逊AWS上遇到了一个奇怪的情况。我不明白所需的实例编号用于什么? 我有一个自动缩放组,其中包含已配置的向上扩展和缩小操作。
我有一个自定义PHP文件,可以根据一些外部因素运行向上扩展和向下扩展。我想知道在必要的实例中我必须编写哪个数字,以免影响我的自动缩放操作。
例如:
我该怎么办?
非常感谢!
答案 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但不低于它。