自动缩放无法正确创建实例
Posted
技术标签:
【中文标题】自动缩放无法正确创建实例【英文标题】:Autoscaling does not properly create instances 【发布时间】:2016-09-21 13:21:28 【问题描述】:我在尝试使用自动缩放策略和组启动实例时收到此错误。
Cancelled: Launching a new EC2 instance: i-50dd31cc. Status Reason: Only EC2-Classic instances may be linked.
我正在使用以下命令来创建自动缩放启动配置和自动缩放组。
aws autoscaling create-launch-configuration --launch-configuration-name my-lc --image-id ami-12345678 --instance-type c4.large --classic-link-vpc-id vpc-1345622 --user-data file:///Users/path/Desktop/myscript.sh --classic-link-vpc-security-groups sg-sad34353 --spot-price "0.5"
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --launch-configuration-name my-lc --availability-zones "us-east-1a" "us-east-1e" --max-size 10 --min-size 1 --desired-capacity 10 --vpc-zone-identifier 'subnet-asd3r322,subnet-asdasd12'
然后我根据 SQS 中的消息数量创建 Cloudwatch 警报。一切似乎都很好,实例运行正常。但问题是它们始终处于“待定”状态。然后在整整半小时后,它们就会因上述错误而关闭。
如何仅链接经典 EC2 实例?
我还有一个与“所需”实例相关的问题。我的最小计数是 1,最大是 10,期望是 10。所以当我启动组并且 SQS 中没有消息时,所需容量会自动下降到 1。但是当有 1000 条消息甚至超过一半时一个小时,所需容量没有增加。仍然只有一个实例在运行。为什么?
【问题讨论】:
【参考方案1】:这里有 2 个问题,所以我会尽力回答这两个问题。
启动配置:您似乎正在尝试创建启动配置以将实例启动到链接到 VPC 的 EC2 Classic。您在启动配置中定义的是启动一个 c4.large(仅限 VPC 类型的实例),并启用了到 VPC 的经典链接。您需要选择与 EC2 Classic 兼容的实例类型。
AutoScaling 组:您正尝试从启用了经典链接的启动配置启动一个实例(这意味着您希望将其启动到 EC2 Classic,但您提供了一个 VPC(子网 ID)来启动它。您不应提供 VPC 子网 ID 来启动它。
单独的命令没有错误,因此您没有收到任何错误,但它们不兼容在启动时一起使用。
CloudWatch:我建议解决第一个问题,并就您的 CloudWatch 警报不起作用提出一个单独的问题,但我怀疑您没有将警报链接到自动缩放组。有关更多信息,请参阅此网址:http://docs.aws.amazon.com/autoscaling/latest/userguide/as-scale-based-on-demand.html
【讨论】:
因此,如果我启动“c3”而不是“c4”,并且如果我不提供子网 ID,这是否是朝着正确方向迈出的一步? 好吧,在你回答之前,我使用“c3.large”而不是“c4.large”并且没有提供子网 ID:它工作。实例创建成功。但是如果我想使用“c4.large”实例怎么办。我将如何使用它们? 您不能在 EC2 Classic 中使用 c4 实例:see the limitations in the documentation。如果要使用 c4,则需要将这些实例直接迁移到 VPC 中,而不是使用 classic-link。我还是建议这样做,因为将来出现的任何新实例类型都将不适用于 EC2 Classic。亚马逊正试图让人们远离使用 EC2 Classic,事实上,今天创建的新账户甚至无法访问 EC2 Classic,只有 VPC。 如何迁移?有什么教程吗?使用 Amazon CLI。 This section of the documentation may help。这取决于您的环境有多复杂,可能就像将所有 EC2 实例重新启动到 VPC 一样简单。该链接涵盖了使用经典链接的增量迁移,我建议尽可能避免这样做。它有一些你已经经历过的问题。以上是关于自动缩放无法正确创建实例的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 cloudformation 创建具有自动缩放功能的 AWS EMR
如果自动扩缩功能无法创建新实例,App Engine 请求会发生啥情况?