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

AWS Network Load Balancer Tomcat节点自动故障转移失效问题排查

问题定位

当前NLB未自动切换流量的核心问题集中在健康检查配置错误与逻辑适配性不足:

  1. 健康检查端口配置无效:配置中的Port: traffic是错误值,NLB无法通过这个配置定位到Tomcat的服务端口,导致健康检查无法准确检测Tomcat服务状态。
  2. TCP健康检查的局限性:仅用TCP协议做健康检查,只能验证端口是否处于监听状态,若Tomcat进程异常但端口未释放(如进程僵死),NLB会误判实例健康;且停止Tomcat后,端口可能未立即关闭,导致健康检查未触发状态变更。
  3. 健康检查时间窗口过长:当前Interval:30秒 + Unhealthy Threshold:2,意味着至少需要60秒才会将实例标记为不健康,这段时间内流量仍会发往故障节点;同时Timeout:10秒超过了检测间隔的1/2,容易引发健康检查超时误判。
修正配置方案
  • 修正健康检查端口:将Port的值修改为Tomcat实际监听的服务端口(例如默认HTTP端口8080,HTTPS端口8443),确保健康检查直接针对Tomcat服务端口。
  • 优化健康检查协议(推荐):将健康检查Protocol从TCP改为HTTP/HTTPS,并配置健康检查路径(如/或专门的/health接口),这样可以验证Tomcat是否能正常处理请求,而非仅检测端口是否开放。
  • 调整健康检查时间参数:
    • Interval改为10秒(缩短检测频率)
    • Timeout改为5秒(不超过检测间隔的1/2,避免误判)
    • 保留Unhealthy Threshold:2(2次失败即标记不健康,总检测时间20秒,快速触发流量切换)
  • 确认流量分发策略:检查目标组的流量策略,确保未启用会话粘性(若开启粘性会话,流量会绑定到故障节点直到会话过期,无法自动切换),推荐使用轮询(Round Robin)或最少未完成请求(Least Outstanding Requests)策略。
验证步骤

修改配置后,停止第一台Tomcat服务,等待20-30秒后刷新浏览器,验证流量是否切换至第二台节点;同时可在AWS控制台的目标组页面查看实例健康状态,确认故障实例已被标记为不健康。

内容的提问来源于stack exchange,提问作者Tina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:46:10