如何找出 AWS ELB 认为我的服务失败的原因?

如何找出 AWS ELB 认为我的服务失败的原因?

我有一项在两个目标群体中注册的服务:albwwwalb

目标alb组针对的是内部请求,wwwalb目标组针对的是外部请求。

当我部署服务时,它会正常启动并开始接受请求。查看访问日志,我可以看到和都在alb探测wwwalb服务。由于服务在 3 个区域中运行,因此我看到每个区域有 3 个请求,总共 6 个。

 - - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
 - - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -

尽管如此,该服务最终还是被撤下,因为目标群体认为该服务不健康。事实上,它似乎从来没有认为该服务是健康的。

在此处输入图片描述

用于检查目标组的 API 调用告诉我以下内容:

{
    "TargetHealthDescriptions": [
        {
            "Target": {
                "Id": "10.1.143.94",
                "Port": 8182,
                "AvailabilityZone": "eu-north-1b"
            },
            "HealthCheckPort": "8182",
            "TargetHealth": {
                "State": "unhealthy",
                "Reason": "Target.FailedHealthChecks",
                "Description": "Health checks failed"
            }
        }
    ]
}

我已经研究目标组指标、负载均衡器配置一段时间了 - 但我就是找不到任何可以解释这种行为的设置信息。健康检查设置对我来说似乎也很好:

在此处输入图片描述

我最近刚刚添加了wwwalb,所以我认为将此服务放在两个目标组中会导致这种情况。不过,AWS 支持并解释了将服务放在两个目标组中。

有没有办法从 AWS 获取有关导致此问题的真正原因的更多详细信息?有没有办法调查 AWS 认为服务失败的原因?

答案1

我通常会将不健康阈值设置为高于健康阈值。例如,间隔 10 秒内成功呼叫 2 次是健康的,间隔 10 秒内不成功呼叫 6 次是不健康的。

话虽如此,这应该没关系,您的设置应该可以正常工作。当目标注册时,会出现“初始”状态。在此期间,AWS 正在尝试验证健康检查,并且只有在健康检查成功的情况下才会切换到健康状态。

完成注册过程并开始健康检查可能需要几分钟。

您确定您的应用程序没有成功响应,然后失败了很长时间,以至于再次变得不健康吗?还是它真的花了太长时间启动并且从未脱离“初始”状态?

相关内容