为什么 AWS ELB EC2 实例在被调度程序停止后会重新启动?

Why AWS ELB EC2 instance gets reinitiated after being stopped by a scheduler?

我正在尝试进行成本优化,通过在不使用时停止 EC2 和 RDS 实例来降低使用 AWS 资源的成本。

我设法使用 AWS CloudFormation 服务创建了一个调度程序,实例正在根据调度程序配置停止,但问题是在实例停止后,AWS 启动了另一个。

如果有办法控制或更改此行为,请提出建议。

此致。

不能通过停止来停止 Elastic Beanstalk (EB) 中的 个实例,因为它们 运行 在 AutoScaling Group 中。因此,一旦您停止实例,ASG 将启动一个替代实例,这是预期的。

停止自动伸缩组中实例的正确方法是detach them first, or best to set min and desired capacity to 0。最后一个选项将终止实例,但这是在不需要时降低 ASG 中 运行 个实例成本的最简单策略。

但由于您正在终止实例,您也可以终止整个 EB 环境,并在需要时启动新的环境。如果您使用 CloudFormation,这应该很容易。

我认为@Marcin 的回答就是您所需要的,但是如果您正在考虑 to stop an instance in ASG 那么也许这可以帮助您 :-

  1. 备用状态 :- ASG 不会对处于备用状态的实例执行健康检查。
  2. 分离它 :-一旦实例被分离,独立管理它们,如果实例被分离,则按数量减少 ASG 的所需容量,否则 asg 将启动新实例来替换我们分离的那些。
  3. 停止健康检查过程 :- 当 asg 标记实例不健康时,它会终止并启动新的一次。如果您不想更换实例,请暂停整个 ASG 的健康检查过程

感谢@Marcin 和@Jatin 的回答。

Notes:

  • 分离 EC2 实例而不设置所需容量和 最小容量为 0 无济于事,因为 ASG 将推出新的 实例.
  • 如果您将 Desired capacity 和 Minimum capacity 设置为 0 instance 自动终止。
  • 分离 EC2 并将所需容量和最小容量设置为 0(如果允许) 将导致您的 ELB 环境和您的严重健康状况 将无法重新启动您的应用程序或重建环境,直到 您将 Desired capacity 和 Minimum capacity 设置为 1 并执行 重新处理。
  • 如果达到所需容量和最小容量,则无法将 EC2 置于待机状态 设置为 0.

My approach to solving the problem:

  1. 在 [Auto] 中将所需容量设置为 1,将最小容量设置为 0 缩放组][1] 详情.
  2. 向下滚动到 Advanced configurations 并将 Terminate 添加到 Suspended processes.
  3. 转到 Auto Scaling 组的 Automatic Scaling 选项卡,首先选择 策略,然后单击 Actions 菜单中的 edit。在里面 Take the action 字段,选择 set to 而不是 remove 然后单击更新。
  4. 转到您需要安排的 EC2 实例并添加 调度程序 tag 到它。

如果您的项目在一个实例上运行并且您需要进行成本优化,则之前的方法将帮助您安排 ELB EC2 实例的[停止和启动]。 如果您使用多个EC2实例,您需要调整之前的配置。