情景:
我想添加一个简单的运行状况检查,Web服务器仍然会响应,因此如果docker容器出现故障,自动扩展组可以替换该实例。
据我所知,只有ELB支持自定义健康检查。由于我不需要ELB,我想知道使用cron作业在EC2实例中运行运行状况检查是否有意义。如果Web服务器没有响应(本地),它可以设置健康状态,如下所示:
DataTable table = your datatable;
table.Columns[0].ColumnName = "Foo";
我认为它应该可行,但看起来有点复杂。 是否有更好的方法来实施自定义运行状况检查(不使用ELB)?
答案 0 :(得分:7)
2017年,AWS没有直接支持,只有用于设置EC2实例运行状况的API。因此,问题中描述的技术是推荐的方式:
autoscaling set-instance-health
API将结果传达给自动缩放组AWS documentation on custom health checks:
如果您有自定义运行状况检查,则可以将运行状况检查中的信息发送到Auto Scaling,以便Auto Scaling可以使用此信息。例如,如果确定实例未按预期运行,则可以将实例的运行状况设置为“不健康”。下次Auto Scaling对实例执行运行状况检查时,它将确定该实例运行状况不佳,然后启动替换实例。
使用以下set-instance-health命令将指定实例的运行状况设置为Unhealthy:
aws autoscaling set-instance-health --instance-id i-123abc45d –-health-status Unhealthy