【发布时间】:2016-02-28 02:22:04
【问题描述】:
我有一个启动队列处理实例的自动缩放组。这些实例基于 Windows。通常我们只需要一个,但是当我们的 backlog 变得太大时,我希望能够自动启动更多来处理负载,以便我们的用户有良好的体验。目前,所需节点的数量是手动设置的,但我想在未来通过 cloudwatch 警报自动设置。
当请求一个新实例时,它会从 Chef 下载其配置并成功启动,我通过查看日志知道这一点,显示 Chef 运行成功。它加入其他实例并开始使用队列中的消息。但是,在启动 10 分钟后,由于心跳超时,实例“启动失败”而终止。然后它会尝试启动一个新实例并继续循环。
当实例启动时,它卡在“Pending:Wait”状态。与我的 Web 服务器自动缩放组不同,它永远不会离开此状态,直到稍后终止。这两个实例大致相同,只是它不运行 Web 服务器。
我尝试将运行状况检查宽限期和冷却期调整为 1500 秒,但实例总是在 10 分钟(有时是 11 分钟)内终止。我还尝试将“HealthCheck”和“AddToLoadBalancer”添加到挂起的进程列表中,但这似乎没有效果。
我还尝试过使用 Set-ASInstanceHealth 手动设置实例的运行状况(或 aws autoscaling set-instance-health 了解 CLI 版本的人)。这也没有效果。
我确实有一个由自动缩放组启动的实例,因此它在某一时刻能够启动实例。我认为问题出在心跳问题上,但我不明白是什么发送了它,我找不到任何关于此的文档。
我的猜测是,当实例完成启动并且其上的软件配置正确时,我需要在某处设置一个标志。与 ELB 关联的实例已经具备此功能,因为它们具有正常运行的 Web 服务器,但不侦听任何端口的实例需要额外的东西。这是我能看到的与其他自动缩放组之间的唯一区别。
【问题讨论】:
-
您的自动缩放实例是否正确处理 CloudWatch 运行状况检查?尝试在 10 分钟内测试相关检查。
-
什么是 CloudWatch 运行状况检查?请注意,这些实例不运行任何侦听任何端口的服务。 EC2 UI 中的两个运行状况检查通过。
-
看看下面的链接。我想 AWS 无法确定您的自动扩展实例是否已启动、运行和运行。 docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/…
标签: amazon-web-services autoscaling