2017-06-13 77 views
0

我有一个自动缩放组,EC2实现custom health。 有时候,运行状况检查失败,实例被终止并被替换。如何调试自定义运行状况检查失败的EC2实例

运行状况检查本身是作为在实例上运行的shell脚本实现的。如果检测到问题,它会通过AWS API通知自动缩放组:

aws autoscaling set-instance-health --instance-id $instance --health-status Unhealthy 

的问题是唯一的,我没有什么检查失败的信息,通知旁边:

原因:在2017-06-13T09:11:47Z一个实例因服务于用户健康检查而停止服务

什么是建议调试这类问题的方法。有没有办法让AWS只停止实例而不终止它们,因此可以检查它们的磁盘状态?


(首先我想到了“启用终止保护”,但是从我的理解这不会有所作为,在这里。自动缩放组仍然会终止情况下,当通过一个失败的定制健康检查被要求关机。 )

+0

您的情况是使用ELB健康检查的Auto Scaling组吗? –

+0

@JohnRotenstein不,这是一项自定义健康检查。我有一个本地脚本运行,当它检测到有什么问题时,会通过AWS API(“aws autoscaling set-instance-health”)通知自动调整组。 –

+0

@JohnRotenstein我会更新我的问题,所以现在这个信息是覆盖。 –

回答

2

使用set-instance-health命令告诉Auto Scaling实例不健康,需要更换。 Auto Scaling会终止不健康的实例并启动一个新的实例来替换它。

如果你希望在一个不健康的实例进行取证分析,从自动缩放组与aws autoscaling detach-instances command删除:

从指定的自动缩放组中的一个或多个实例。在实例分离后,您可以使用独立于Auto Scaling组进行管理。

如果您未指定减少所需容量的选项,则Auto Scaling将启动实例到替换分离的实例。

如果在Auto Scaling组中附加了经典负载平衡器,则会从负载平衡器注销实例。如果有目标组连接到Auto Scaling组,则会从目标组中注销实例。

因此,不要致电set-instance-health,请致电detach-instances(并可选择将其替换)。然后您可以调试实例。如果您希望将其发回服务,请使用aws autoscaling attach-instances

相关问题