5月29日 22:48

DNS 负载均衡怎么实现?有哪些方案?

DNS 负载均衡就是同一域名返回多个 IP,客户端随机选一个访问。三种方案:轮询(Round Robin)——权威服务器按顺序返回不同 IP,简单但无法感知服务器负载;加权 DNS——不同 IP 返回不同比例,权重控制流量分配;GeoDNS——根据客户端 IP 所在地区返回最近的服务器 IP,CDN 核心技术。局限:无法做健康检查、受 TTL 缓存影响切换慢、客户端可能缓存某个 IP 不轮询。

追问

DNS 负载均衡和 Nginx 负载均衡有什么区别?

DNS 在域名解析层分配 IP,客户端直连服务器——无中间层延迟但无法精细控制。Nginx 在应用层代理——可做健康检查、会话保持、权重动态调整,但增加一跳延迟。生产环境常组合:DNS 做全局负载(多机房),Nginx 做单机房内负载。

TTL 设多少合适?

负载均衡场景一般 60-300 秒。故障切换时临时改 TTL 为 30 秒。注意运营商 DNS 可能强制延长最低 TTL。

如何实现 DNS 健康检查?

DNS 本身不做健康检查。需要外部系统:监控服务检测后端可用性,故障时调用 DNS API 删除该 IP 记录。Route53/Cloudflare DNS 都有内置健康检查+自动故障切换。

GeoDNS 的原理?

权威服务器根据请求来源 IP 判断地理位置(用 GeoIP 数据库),返回该地区最近的服务器 IP。实际用 Anycast + EDNS Client Subnet(ECS)传递客户端子网信息。

DNS 负载均衡能做灰度发布吗?

能但粗糙——给新版本分配 5% 的 IP 权重逐步提升。粒度太粗且受 TTL 缓存影响。精细灰度用 Istio/Nginx 按请求头/cookie 路由。

标签:DNS