跨 AZ 的 AWS DNS 解析

AWS DNS resolution across AZs

设置如下: http 请求从连接到客户端 VPN (NAT) 的客户端传输, 到 Route53 中的私有托管区域,其中 A 记录解析为网络 LB DNS 名称 通过其 AWS DNS 名称将流量转发到 EKS 节点。

EKS 部署在可能的 3 个可用区中的 2 个可用区中 - 根据分配给它们的子网 CIDR 范围,我们称它们为 1,2 和 3。

出现的问题是这个(根据wireshark)

如果 TCP 请求首先发送到 1 和 3,站点将不会解析。

同时,如果通过 Public 托管区域和面向 LB 的 Internet 请求站点,无论 AZ 是什么,站点都可以毫无问题地解析。

对于我的生活,我无法弄清楚为什么会发生这种循环式行为,但更重要的是,为什么该站点不能从另一个可用区解析?

我试过的 仅使用 2 个 AZ 重新创建 LB - 这只会将站点加载时间减少一半,并不能解决问题。

检查安全组 - 一旦进入 VPN,一切都可以在私有子网上访问。

已检查路由 - 存在从 VPN 端点到所有 3 个 AZ 子网的路由。

根据https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html,内部负载均衡器不支持环回或发夹,AWS 建议使用面向 Internet 的 LB,它不会放弃私有 IP 和 A 记录不会通过 public IP 解析。 其次,他们建议通过 IP 而不是实例 ID 注册目标,这对我不起作用,因为 EKS 节点的私有 IP 将来会随着 EKS 升级而改变。

根据评论。

此问题是由 cross-zone 负载平衡禁用引起的。 默认关闭

启用跨区域平衡是解决问题的方法。