首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚马逊网络服务在CloudWatch标准度量问题上的自动缩放

亚马逊网络服务在CloudWatch标准度量问题上的自动缩放
EN

Stack Overflow用户
提问于 2020-12-04 21:58:58
回答 1查看 511关注 0票数 0

在我的aws账户中,我有一个针对我的SQS用户的ASG设置。最小容量为3,最大容量为8,销毁策略设置为默认。它有两个简单的伸缩策略,附加到监控SQS队列大小的云监控告警上。

这是云手表警报ApproximateNumberOfMessagesVisible >= 10 for 1 consecutive periods of 300 seconds for the metric dimensions的阈值。

当云监控告警状态在300秒后为“报警”时,ASG会添加1个实例,直到达到最大容量。同样,当云监控警报状态在300秒后为"ok“时,ASG将删除1个实例,直到达到最小容量。

ASG似乎可以毫无问题地扩展到最大容量。然而,我遇到的问题发生在ASG缩减规模的时候。当警报状态从“alarm”返回到"ok“时,ASG似乎只是随机选择一个实例关闭。如果要关闭的实例当前正在处理SQS消息,则这是一个问题。

例如,如果我的SQS队列有20条可见消息,那么我的ASG将扩展到8条。一旦可见消息小于或等于10,ASG将开始终止我的ASG中的实例。但是,它可能会选择一个正在处理SQS消息的实例。如果是这样,那么SQS消息就会进入我的DLQ。

以前有没有人遇到过这个问题?

有没有办法将ASG配置为监控SQS长度,并仅销毁已完成消息处理的实例?也许当SQS是"ok“并且实例的CPU较低时?或者,我是否应该在我的云手表闹钟中将阈值设置为2?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-05 03:05:26

你的应用需要明确地告诉asg一个实例当前不能被杀死。查看Instance scale-in protection的文档。

在开始处理消息之前,您需要执行以下操作:

aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --protected-from-scale-in

然后处理来自自动缩放组my-asg中的受保护实例i-5f2e8a0d的消息。最后,当您使用以下命令完成处理后,关闭实例保护:

aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --no-protected-from-scale-in

一旦机器受到保护,ASG将无法终止它。关闭保护后,实例可以终止,自动伸缩将继续按预期进行扩展。如果所有实例都是受保护的,自动伸缩不会终止任何实例(所以要小心,你总是关闭实例保护,否则你可能会被完全放大)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65144916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档