slb上配置了udp的健康检查,当后台udp服务没有启动,slb健康检查仍然有效,后台抓包,发现后台服务会返回,“09:37:34.384485 IP 172.16.1.45 > 100.109.153.130: ICMP 172.16.1.45 udp port 4500 unreachable, length 95”报文,根据slb udp健康检查的定义,这种场景,健康检查应该显示这台服务异常,但是并没有,这是什么问题?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云的负载均衡SLB在进行UDP健康检查时,主要依赖于服务端对健康检查请求的响应来判断后端ECS实例的健康状态。根据您的描述,当后台UDP服务未启动时,收到了ICMP Port Unreachable的消息,这表明数据包已经到达了目标服务器,但是由于指定的端口(在这个例子中是4500)没有服务监听,所以系统返回了一个“Port Unreachable”的错误。
理论上,阿里云SLB在设计上应该能够识别这种响应,并据此判断后端服务器上的UDP服务不健康。但您提到的情况中,SLB并未将此情况标记为异常,可能的原因有以下几点:
健康检查配置问题:请检查SLB的健康检查配置,确保探测端口、超时时间、间隔时间以及不健康阈值和健康阈值设置得当。特别是要确认探测端口是否正确配置为4500,且健康检查的响应匹配规则是否设置得能够识别这种“Port Unreachable”的响应作为不健康的状态。
SLB系统处理逻辑:尽管较为罕见,但也不排除特定情况下SLB对于某些类型的ICMP响应处理存在特殊逻辑或延迟,导致未能即时更新健康检查状态。可以尝试联系阿里云技术支持确认是否有已知的问题或特殊处理逻辑。
网络配置或策略影响:检查是否有网络安全组规则或其他网络配置阻止了SLB健康检查的正确执行,或者是否有网络策略使得ICMP不可达消息不能正常反馈给SLB进行状态判断。
SLB版本或功能限制:确认使用的SLB实例类型及版本,有时候不同版本的SLB可能存在不同的行为或限制。
解决建议: - 重新审视并验证SLB的健康检查配置。 - 尝试调整健康检查参数,如增加探测次数、调整超时时间等,看是否能触发正确的健康状态变更。 - 如果问题持续,建议直接联系阿里云客服或提交工单,提供具体的SLB实例ID、健康检查配置详情及遇到问题的时间点,以便技术团队进一步排查。