自动缩放无法正确创建实例

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

GKE 自动缩放无法缩放

如果自动扩缩功能无法创建新实例,App Engine 请求会发生啥情况?

CodeDeploy 未部署到新的自动缩放实例

AWS 使用 boto3 自动缩放创建 EMR 无法正常工作

Plotly 绘图无法在模态中自动缩放