【发布时间】:2017-10-14 00:00:33
【问题描述】:
场景:
- 我在自动扩展组后面运行 EC2 实例,但我没有使用 ELB。
- 在 EC2 实例内部,一个带有 Web 服务器的 docker 容器正在运行。
我想添加一个简单的健康检查,Web 服务器仍然响应,所以如果 docker 容器出现故障,自动伸缩组可以替换实例。
据我所知,只有 ELB 支持自定义健康检查。由于我不需要 ELB,我想知道使用 cron 作业在 EC2 实例内运行运行状况检查是否有意义。如果 Web 服务器没有响应(本地),它可以像这样设置健康状态:
export INSTANCE=$(curl http://169.254.169.254/latest/meta-data/instance-id)
export AWS_DEFAULT_REGION=$(curl http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}')
aws autoscaling set-instance-health --instance-id $INSTANCE --health-status Unhealthy
我认为,它应该可以工作,但它看起来有点复杂。 是否有更好的方法来实施自定义健康检查(不使用 ELB)?
【问题讨论】:
-
查看 AWS 文档,这似乎是推荐的方式。 -> docs.aws.amazon.com/autoscaling/latest/userguide/…
-
在您的 EC2 实例上运行 cron 的缺点是您的应用程序无法正确启动、崩溃等... EC2 实例通过实例运行状况检查的情况,但您的 Web服务器没有正确响应。出于这个原因,最好在其他地方运行,比如预定的 lambda 函数 (docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html) 下面是一个可以调整的简单示例:marcelog.github.io/articles/…
标签: amazon-web-services docker amazon-ec2 health-monitoring