多a记录是dns负载均衡最简单方式,通过同主机名同类型的多个a记录实现轮询分发,但需注意记录数限制、ttl设置、权重概率性及udp响应长度等关键细节。

多A记录就是最常用的DNS负载均衡
直接在域名解析后台添加多个同主机名、同记录类型的 A 记录,就是实现基础负载均衡最简单有效的方式。DNS服务器收到查询请求时,会轮询返回这些IP,客户端拿到哪个就连哪个——不需要改代码、不依赖中间件,天然适配所有HTTP/HTTPS流量。
- 必须保证记录的
主机记录(如www或@)、记录类型(如A)、线路类型(如默认)完全一致,否则不会触发轮询 - 不同云厂商对单次响应返回的记录数有限制:比如腾讯云 DNSPod 限制
A记录最多返回 20 条;超过后权威服务器会随机截断,导致部分节点永远“看不见” - TTL 值别设太高(建议
300或600),否则故障切换慢;但也不能太低(如60),可能引发LDNS频繁重查,增加解析延迟
权重分配不是“百分比”,而是概率抽样
所谓“权重 70:30”,并不是每次10次请求里固定分7次和3次,而是权威DNS服务器按权重做加权随机选择——实际流量分布会有波动,尤其在请求数少或缓存未穿透时偏差明显。
- 权重值范围是
0–100,但0表示该记录不参与解析(相当于下线),不是“极低概率” - 如果某台服务器性能是其他两台之和,设成
50:25:25比2:1:1更稳妥,避免因整数除法或内部归一化导致精度丢失 - 注意:CNAME 记录支持权重的前提是已开通对应增值服务(如腾讯云需单独购买“智能CNAME”),普通免费版只支持A/AAAA记录权重
别忽略UDP响应长度限制,否则轮询失效
DNS 默认走 UDP 协议,而 RFC 规定单个 UDP 响应不能超过 512 字节(不含IP/UDP头)。一旦你配置了 25 条 A 记录,权威服务器很可能只返回前20条——剩下的5台永远收不到流量,你以为的“均衡”其实早就不均了。
- 用
dig www.example.com A +short多次执行,观察返回IP是否轮动、是否始终只有部分IP出现 - 若发现返回IP数量不稳定,优先检查记录总数是否超限,而不是怀疑权重配置错误
- 真要支撑大量节点,得考虑分线路(如电信/联通/移动)、分地域(如北京/上海/深圳)做子域名分流,或者上 Anycast + BGP 负载方案,DNS 层不适合硬扛百节点
本地测试常误判,得绕过缓存看真实效果
你在本机 ping 或浏览器访问,看到的IP很可能是本地DNS(LDNS)缓存的结果,不是权威DNS当前返回的——这会让你误以为权重没生效、轮询没起作用。
- 用
dig @8.8.8.8 www.example.com A直连 Google 公共DNS,跳过本地运营商缓存 - 或用
nslookup -debug www.example.com 114.114.114.114查看完整响应链与TTL剩余时间 - 修改权重后,等至少一个TTL周期再验证;若TTL设为600秒(10分钟),就别刚点完“确认”就刷新页面看结果










