AWS LB 访问间歇性超时排查

610次阅读
没有评论

共计 953 个字符,预计需要花费 3 分钟才能阅读完成。

更新日志

2024-04-17

在阿里云的NLB上,也遇到了类似问题。

解决方式类似:在后端服务器组中关闭 开启客户端地址保持

AWS LB 访问间歇性超时排查

故障表现

线上使用的位于旧 k8s 集群并没有实现从外部调用 apiserver 的高可用。这个集群有 3 个 master 节点。但是运维设施在调用时,只是访问其中一台 master 的 ip:6443​。如果这台 master 宕机,就需要修改调用的IP。这样会加大修复时长。

于是我在 华为云 和 AWS 上创建了 NLB 作为 apiserver 的访问入口。NLB 上创建 6443 监听器 ,将请求平均分发到三个 master 的 6443 端口。

但是我在使用 NLB IP:6443​ 访问 apiserver 时,华为云 一切正常,AWS 出现了间歇性的超时。

AWS LB 访问间歇性超时排查

排查思路

  1. 观察监控

    从 NLB 本身的监控和后端健康检查上来看,均没有异常。

  2. 控制变量,对比排查

    访问 NLB 时,其他方式均保持不变。只更换客户端,即换其他机器来访问 NLB。

    发现只有当在 master 上访问时会间歇性超时,在worker节点和其他无关机器上访问多次,均没有发生超时。

    • 结论:可能和master本身有关,尚不清楚原因。
  3. 循环测试

    写了个简单脚本,循环测试从三台 master 上访问NLB大约 100 次,每台master上观测到超时大约在 30 余次。即大约三分之一的概率超时。

    • 结论:到现在,已经有点模糊的猜测。三分之一概率这个太过于巧合,master 刚好也是三台。是不是当把某台 master 作为客户端,请求 NLB ,NLB 又把请求落到这台 master 上时,会出现故障?
  4. 剔除后端

    上面已经有猜测,于是我将 A master 从 NLB 的后端服务器组中移除,再分别在 A B C 三台 master上 执行循环测试访问LB。

    超时率 A:0% B:约50% C:约50%

    结论:很清晰了,验证了我的猜测,但是这是为什么?

  5. 查阅 AWS NLB 官方文档

    AWS NLB 文档

    ​​AWS LB 访问间歇性超时排查

    至此结论已经很明显,NLB 当开启客户端IP保留时,会导致 NAT 回环。

  6. 关闭 保留客户端IP

    检查 NLB 的配置,发现 保留客户端IP 是创建 NLB 的默认参数。遂关闭。关闭后再次测试,未复现超时情况。

结论

我目前做的海外业务不同于国内,国内是可以自行租赁IDC机房,基础设施统一,而海外没有这个条件,只能使用公有云。

而不同的公有云之间差异巨大,运维的心智成本比较高。

本文属于专题:公有云

引用链接

正文完
 
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2023-08-26发表,共计953字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(没有评论)