目前,我有多个实例在 AWS 自动缩放组下运行,该组轮询来自 AWS SQS 的消息。我的实例需要在开始处理传入消息之前与另一个实例建立连接。
有时会发生我的一个实例无法建立连接,我想在这里添加一个健康检查来监控连接状态并以此终止实例。我认为默认的 EC2 运行状况检查无法解决这种情况。
有什么方法可以添加运行状况检查来处理上述情况。
目前,我有多个实例在 AWS 自动缩放组下运行,该组轮询来自 AWS SQS 的消息。我的实例需要在开始处理传入消息之前与另一个实例建立连接。
有时会发生我的一个实例无法建立连接,我想在这里添加一个健康检查来监控连接状态并以此终止实例。我认为默认的 EC2 运行状况检查无法解决这种情况。
有什么方法可以添加运行状况检查来处理上述情况。
您确实需要对此进行某种自定义运行状况检查,因为任何内置指标(如 CPU 使用率、网络输入/输出)在这里都不起作用。
一个想法是让这些实例使用每几分钟运行一次的 cron 作业进行引导,并检查连接是否已启动并正在运行。如果不是,该实例可以使用 CLI 或 SDK 将自己设置为运行状况不佳。
这是一段 bash 代码示例,它获取运行代码的实例的实例 ID,然后将自身标记为不健康。这将触发 ASG 替换它。
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`"
aws autoscaling set-instance-health --instance-id $EC2_INSTANCE_ID --health-status Unhealthy
资源: