gpt4 book ai didi

amazon-web-services - 如何在不使用ELB的情况下为EC2实例实现自定义运行状况检查?

转载 作者:行者123 更新时间:2023-12-04 17:31:25 26 4
gpt4 key购买 nike

设想:

  • 我正在自动缩放组后面运行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)?

    最佳答案

    在2017年,AWS没有直接支持,只有API可以设置EC2实例的运行状况。因此,在问题中描述的技术是推荐的方法:

  • 实现自定义运行状况检查(可以是Shell脚本或您选择的任何内容)并定期运行(通过cron或您选择的任何内容)
  • 使用autoscaling set-instance-health API将结果传达给自动缩放组

  • AWS documentation on custom health checks:

    If you have custom health checks, you can send the information from your health checks to Auto Scaling so that Auto Scaling can use this information. For example, if you determine that an instance is not functioning as expected, you can set the health status of the instance to Unhealthy. The next time that Auto Scaling performs a health check on the instance, it will determine that the instance is unhealthy and then launch a replacement instance.

    Use the following set-instance-health command to set the health state of the specified instance to Unhealthy:

    aws autoscaling set-instance-health --instance-id i-123abc45d –-health-status Unhealthy

    关于amazon-web-services - 如何在不使用ELB的情况下为EC2实例实现自定义运行状况检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43975456/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com