我们有 2 个自动缩放组(一个用于按需实例,一个用于 Spot 实例),它们都设置为静态实例数(最小、最大和期望都相同 - 在我们的例子中为 5)。按需组中的实例保持运行,但由于系统健康检查,点组中的实例经常被终止。在 EC2 管理控制台的 Scaling History 选项卡中为终止的实例显示的消息是:
“在 2014-05-07T18:06:45Z,一个实例因系统健康检查而停止服务。”
我不知道为什么我们的 Spot 实例没有通过健康检查。我们的出价很高,我认为实例不应因现货价格而终止(基于现货定价历史)。我也调整了启动实例的可用区,我看不出有什么区别。当我检查最近终止的实例的系统日志时,我没有看到任何可疑消息。我们为两个组都使用了私有/自定义 AMI,但是当我切换到更通用的 AMI(alestic.com 上列出的“Ubuntu 12.04 LTS Precise EBS 启动”图像 - ami-5db4a934)时,我看到了相同的行为。同样,我们的按需实例保持运行并且不会失败健康检查。我们正在使用“EC2”健康检查类型。
这是我们用来通过 AWS CLI 创建启动配置的命令:
aws autoscaling create-launch-configuration \
--launch-configuration-name [name] \
--image-id ami-5db4a934 \
--key-name [our key] \
--security-groups [our SGs] \
--instance-type m3.xlarge \
--block-device-mappings '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 8 } } ]' \
--spot-price "1.00"
Run Code Online (Sandbox Code Playgroud)
有谁知道这可能是什么,或者我们如何更清楚地了解 Spot 实例未通过健康检查的原因?