You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS NLB配置Tomcat主机时故障切换异常问题排查

AWS NLB配置Tomcat主机时故障切换异常问题排查

Hey Tina, sorry to hear you're stuck with this failover issue—let's break down the most likely causes and how to fix them:

  • 先检查目标组的健康检查配置
    这是NLB故障切换失效最常见的原因。你在NLB上用了TCP 443监听器,目标组可能默认用了TCP类型的健康检查,但TCP检查只会验证端口是否开放,不会确认Tomcat是否真的在正常提供服务。如果Tomcat停了之后,EC2上的端口被其他进程占用,或者Tomcat没有干净释放端口,NLB会误以为节点仍然健康。
    建议把健康检查类型改成HTTP或HTTPS(和你的Tomcat服务协议匹配),并指定一个有效的检查路径,比如根路径/或者专门的健康端点/health(如果有的话)。同时检查阈值设置:把“不健康阈值”设为1或2,这样Tomcat停止后,NLB能快速标记节点为异常。

  • 用全新连接测试(别复用浏览器旧会话)
    浏览器默认会保持TCP长连接(HTTP持久连接)。如果你停了Tomcat后只是刷新页面,浏览器可能还在复用之前和NLB建立的旧连接,而这个连接已经绑定到第一个节点——哪怕NLB已经标记该节点为不健康。
    试试完全关闭浏览器再重新打开,用隐私窗口访问,或者用命令curl -H "Connection: close" https://你的NLB域名强制建立新连接。如果这样能切换到第二个节点,那问题就是连接复用导致的,这是TCP协议的正常行为:NLB不会主动终止已建立的连接,只会把新连接路由到健康节点。

  • 在AWS控制台确认目标组的实际健康状态
    登录AWS EC2控制台,找到你的目标组,查看两个EC2实例的状态。如果停了Tomcat后第一个节点仍然显示“健康”,说明健康检查没检测到服务停止,回去调整健康检查配置即可。如果已经显示“不健康”,可以等30-60秒让NLB同步状态(通常会更快),再重试。也可以开启NLB访问日志,查看流量实际发到了哪个节点。

  • 排除安全组/防火墙问题
    虽然可能性较低(毕竟初始配置能正常访问),但要确认EC2的安全组允许NLB健康检查IP段访问Tomcat端口,同时检查EC2内部的防火墙(比如iptables)有没有在Tomcat停止后阻止健康检查请求。

希望其中某个方法能帮你解决故障切换的问题!

备注:内容来源于stack exchange,提问作者Tina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:04:52