目标类型为ALB的目标组健康检查失败问题求助
针对你遇到的NLB目标组(目标为ALB)健康检查持续失败的问题,结合你提供的线索,给出以下具体排查和解决步骤:
修正NLB健康检查的协议类型
NLB对ALB目标的默认健康检查是TCP层探测,但ALB的监听器是HTTP/HTTPS协议,这种不匹配会导致ALB返回400错误(就是你日志里看到的无方法、空内容的请求)。需要把NLB目标组的健康检查协议改为HTTP或HTTPS,同时指定ALB能正常响应的路径(比如/health)和对应端口,确保探测请求符合ALB的协议要求。精准配置ALB安全组的入站规则
NLB的健康检查请求来自其所在子网的私有IP段,而非随机公网IP。你之前允许"所有流量"的配置可能没覆盖到正确的来源段。找到NLB所属子网的CIDR,在ALB的安全组中添加入站规则,允许该CIDR访问ALB的监听端口(比如443),确保健康检查流量能正常到达ALB。调整ALB监听器规则的匹配逻辑
如果NLB用HTTP做健康检查,请求的Host头是ALB的内部DNS名称(而非公网域名),你的固定响应规则可能没匹配这个Host。建议添加一条优先级最高的监听器规则:匹配所有HTTP方法、任意Host、路径为健康检查路径的请求,直接返回200响应,确保健康检查请求被正确拦截并返回成功状态。开启NLB目标组健康检查日志获取详细错误
默认的"健康检查失败"提示没有具体信息,开启目标组的健康检查日志后,可在CloudWatch中查看具体失败原因(比如连接超时、响应码非200、SSL握手失败等)。操作路径:EC2控制台→目标组→对应组→监控标签→开启健康检查日志,随后去CloudWatch日志组查看具体条目。验证ALB的内部可达性
从NLB所在子网的EC2实例(若有),直接curl ALB的私有地址和端口,测试是否能返回200响应。比如执行:curl https://internal-alb-xxxx.elb.region.amazonaws.com/health -k(HTTPS场景且证书为自签时加-k)。如果无法访问,说明子网路由、ALB安全组或ALB本身存在问题。
内容的提问来源于stack exchange,提问作者Martin Petrovaj

