自从我们将集群项目从 Google 转移到 AWS 以来,这种情况已经发生了几次。
我们有一个 EFS 卷,它安装在 Beanstalk 项目中的负载平衡集群上。
我将进行一些设置,要么将一个大的 ZIP 文件上传到该 EFS 卷(通过负载平衡集群上的实例),要么从集群实例上的 ssh 会话中解压缩一个,然后我会突然发现实例从我下面撕下来,发现集群已经培育了两个(或更多)新实例,并且正在关闭我正在访问的那个。
这里发生了什么?实例都是“t2-micro”实例;它们是否不足以承受持续负载,并且已耗尽突发容量?有没有人见过这样的事情?
所以你在我假设
t2.micro
的Auto Scaling Group (ASG) 中得到了这个?并且此 ASG 配置为根据平均 CPU 负载向上/向下扩展?
您通过一些大型 ZIP 文件操作使其过载,用完CPU Credits,CloudWatch 注意到平均 CPU 负载超过阈值并启动一个新实例。正如预期的那样。
这会降低平均 CPU 负载,并且 ASG 会终止运行时间最长的实例(您正在处理的实例)。也如预期。
我猜你的放大/缩小阈值彼此太接近(也许你在负载 > 60% 时放大,当负载 < 50% 时缩小) - 配置更大的差距,例如 60% / 30%) .
不要超载 T2/T3、使用T2/T3 Unlimited或使用不使用 CPU 积分并提供一致性能的其他实例类型(如 M4、M5 或 C5)。
将 ASG 中的实例视为不可变的- 您永远不需要登录 ASG 中的实例,它们的所有配置都应通过 Launch Config 脚本自动完成。因为你永远不知道它们何时开始或停止。
希望有帮助:)