如何实现Route53对两个目标的大致均匀流量路由?为何全走GCP?
Route53权重路由异常原因及均匀流量配置方案
为何全流量流向GCP负载均衡?
- EDNS0客户端子网(ECS)影响:Route53默认启用ECS功能,会根据发起DNS查询的客户端IP(墨尔本)判断地理位置,优先返回物理距离更近的记录。GCP LB位于墨尔本,AWS ALB在悉尼,即使权重相同,Route53会倾向于返回更近的GCP IP,导致所有流量走GCP。
- 客户端DNS缓存:首次解析得到GCP IP后,本地DNS缓存会留存该记录,在缓存有效期内不会重新发起解析,看起来所有请求都走GCP。只有当GCP记录被标记为不可用(健康检查失败),Route53才会返回AWS的别名记录。
- 权重路由的生效逻辑:Weighted策略的流量分配是基于DNS查询请求的分配,而非实际业务请求数。如果本地DNS服务器(比如用户ISP的DNS)对同一域名的查询做了缓存聚合,会导致大量请求复用同一个解析结果,放大单一记录的流量占比。
如何实现大致均匀的流量路由?
- 关闭EDNS0客户端子网功能:在Route53托管区域的域名记录设置中,针对这两条A记录禁用ECS(编辑记录时,找到"EDNS0 Client Subnet"选项并关闭),让Route53严格按照权重(均为200)分配DNS查询结果。
- 调整健康检查与TTL设置:
- 将两条记录的TTL值设为较短时间(比如60秒),减少DNS缓存的影响,让客户端更快获取新的解析结果。
- 确保两条记录都配置了正确的健康检查:AWS ALB的别名记录可以直接用Route53的健康检查(检查ALB的健康状态),GCP LB的A记录需要配置HTTP/HTTPS健康检查,确保Route53能准确判断目标可用性。
- 验证DNS分配效果:使用
dig或nslookup多次查询域名,查看返回结果是否在两条记录间交替出现。例如:
直接向Route53的权威DNS查询,绕过本地ISP缓存,验证权重分配是否生效。dig your-domain.com @ns-xxx.awsdns-xx.org
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

