我们有2个自动缩放组(一个用于点播,另一个用于点实例),它们都被设置为静态数量的实例(最小,最大,所需的都是相同的 – 在我们的例子中是5)。 按需组中的实例保持运行,但现场组中的实例由于系统运行状况检查而经常终止。 在EC2pipe理控制台的Scaling History选项卡中为已终止的实例显示的消息是例如:
“在2014-05-07T18:06:45Z,一个实例因系统健康检查而停止服务。”
我不知道为什么我们的现场实例没有通过健康检查。 我们的出价很高,我不认为应该由于现货价格(基于现货定价历史)而终止这种情况。 我已经调整了实例启动的AZ,我也没有看到区别。 当我检查最近终止的实例的系统日志时,我没有看到任何可疑消息。 我们对两个组都使用私有/自定义AMI,但是当我切换到更通用的AMI(alestic.com上列出的“Ubuntu 12.04 LTS Precise EBS boot”映像 – ami-5db4a934)时,我看到了相同的行为。 再次,我们的按需实例保持运行,不会失败健康检查。 我们正在使用“EC2”健康检查types。
以下是我们用来通过AWS CLI创build启动configuration的命令:
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"
有没有人知道这可能是什么,或者我们如何可以更好地了解为什么现场实例失败的健康检查?
我们的出价很高,我不认为这些情况应该由于现货价格而被终止(基于现货定价历史)
现货价格争用不是由AWS终止Amazon EC2竞价型实例的唯一可能原因,另一个值得注意的是容量争用:
us-east-1遇到的情况比以往任何时候都要频繁,尤其是在最近一个月内,新的m3 / c3 / i3实例types系列(随着时间的推移容量的增加可以理解)。 您可以在AWSpipe理控制台中手动validation现场请求终止的实际原因,也可以通过AWS CLI的describe-spot-instance-requestsvalidation实际原因。 对于高级现货实例使用情况,我build议您开始使用出价状态代码跟踪竞价请求,并将这些与实例terminal相关联,以获得最佳运营洞察力。 有关更多详细信息,请参阅竞价 请求的生命周期和现货出价状态代码参考 ,具体说明以下由AWS自动终止的原因:
instance-terminated-by-price
现货价格涨幅高于出价。 如果您的要求是持续性出价,则stream程或生命周期将重新开始,您的出价将再次进行待审核。
instance-terminated-no-capacity
实例不再有Spot容量可用。
instance-terminated-capacity-oversubscribed
您的实例已终止,因为出价价格等于或高于您的出价的竞价请求数已超过此存储池中的可用容量。 这意味着您的实例被中断,即使现货价格可能没有变化,因为您的出价是在现货价格。
instance-terminated-launch-group-constraint
发射组中的一个实例被终止,所以发射组约束不再被满足。
“在2014-05-07T18:06:45Z,一个实例因系统健康检查而停止服务。”
这个误导消息只是当Amazon EC2竞价型实例由于现货价格争夺而终止时报告的消息,例如,请参阅AWS团队对Auto Scaling消息和竞价型实例终止的响应:
你是正确的,实例因现货定价被终止。
该实例正好在健康检查之前终止,因此它已closures,因为它仍然与AS组关联。
虽然它逃避了我为什么AWS没有设法在Auto Scaling和Amazon EC2之间实现更好的整合,但在这方面,考虑到这两个服务实际上是相互独立的,所以如果“外部”市场后端终止一个EC2实例,它将从Auto Scaling的angular度简单地变成“不健康” – 这是在获取有关由Auto Scaling启动的实例的信息中logging的:
- 原因:在2012-06-01T00:47:51Z,一个实例因为系统运行状况检查而停止服务。 说明:终止EC2实例:i-88ce28f1
Auto Scaling通过监视Auto Scaling组中实例的运行状况来维护所需的实例数量。 当Auto Scaling收到实例不健康或终止的通知时,Auto Scaling会启动另一个实例来代替不健康的实例。 […]
注意
Auto Scaling提供了实例终止的原因,这不是缩放活动的结果。 这包括由于现货价格超出其出价而被终止的实例 。 [强调我的]
没关系 – 这是我们的问题(一个错误的后台处理杀死现场实例)。 尴尬!