智能DNS的两个核心功能——分线路解析和分权重解析——经常被放在同一张功能对比表里,导致不少人误以为它们是二选一的关系。实际上,它们回答的是两个完全不同的问题。分线路解析回答的是“这个用户应该去哪个机房”,分权重解析回答的是“同一个机房里,流量怎么分给几台机器”。把这两个问题混在一起思考,配置就会出错。
一个典型的错误配置场景:某业务在香港和新加坡各有一台服务器,运维人员希望香港机房承担 70% 的流量、新加坡承担 30%,于是直接在默认线路下给两个 IP 设置了 7:3 的权重。结果大陆用户被随机分到新加坡节点,延迟从 40ms 涨到 120ms,权重倒是按比例分配了,但“就近访问”这个更基础的需求被丢掉了。正确的做法是先分线路,再在每条线路内部用权重做负载均衡。
分线路解析:按来源“选路”
分线路解析的工作方式,是在 DNS 应答阶段识别查询请求的来源特征,返回预设的、与来源匹配的 IP 地址。判断依据通常是发起查询的 LocalDNS 的 IP 归属,包括运营商类型(电信、联通、移动、教育网等)和地理位置(省份、国家、大洲)。
它的核心价值是消除跨网绕路。一个电信用户如果被解析到联通机房的 IP,数据包需要在两个运营商骨干网之间穿行,延迟和丢包率都会显著高于同网访问。分线路解析让电信用户拿到电信 IP,联通用户拿到联通 IP,从 DNS 层面就把路径优化掉了。
配置层面,分线路解析依赖的是线路规则。以常见的云解析产品为例,需要为同一个主机记录创建多条 A 记录,每条记录绑定不同的“解析请求来源”。默认线路作为兜底必须存在,否则未被任何自定义线路命中的请求(比如一些小众运营商或海外用户)会得不到应答。自定义线路可以细到某个特定的 IP 段,但维护成本随线路数量线性增长,线路多了之后规则冲突和遗漏的概率也会上升。
分线路解析的局限性在于,它只能决定“去哪个机房”,不能决定“机房里用哪台机器”。如果一个线路对应的地址池里有多台服务器,没有权重配置的情况下,DNS 服务器可能返回全部记录让终端随机选,也可能按轮询顺序返回,结果就是流量分配不可控。
分权重解析:在同一线路内“分配”
分权重解析的前提条件很明确:同一个主机记录、同一条解析线路下,存在多条记录值。它不改变用户被分配到哪条线路,只在既定线路的地址池内部,按预设的比例决定每次查询返回哪个 IP。
权重值的取值范围通常是 0 到 100。设为 0 的记录不会被返回;如果全部设为 0,部分平台的行为是返回全部记录值,另一些平台则可能完全不返回,这一点需要在配置前确认清楚。权重比例是概率性的,不是精确的流量切分。设 3:1 不代表每四个请求恰好三个去 A、一个去 B,而是在大量查询中趋近于这个比例。TTL 越短,权重调整生效越快,但 DNS 查询量也会相应增加。
分权重解析的实际用途主要有三类。服务器性能不一致是最常见的:一台高配、一台低配,按 3:1 或 4:1 分配,让高配机器承担更多请求。灰度发布是另一类:新版本部署在权重为 1 的机器上,旧版本权重为 9,观察一段时间再把比例翻转。滚动维护时把某台机器的权重临时调为 0,流量自动切走,不需要改 DNS 记录本身。
这里有一个容易被忽略的细节:不同线路的权重是相互独立的。电信线路下设了 3:1,联通线路下可以设 1:1,两者互不影响。这意味着权重策略可以按线路差异化配置,而不是全局统一。
组合使用的正确姿势
分线路和分权重叠加,才是完整的流量调度。顺序是固定的:先命中线路,再在线路内按权重分配。
以典型场景为例:北京部署了两台服务器,A 的性能是 B 的三倍,希望北京电信用户只访问这两台,且流量按 3:1 分配。配置方式是:先创建“北京电信”线路,在该线路下添加两条 A 记录,分别指向 A 和 B 的 IP,权重设为 3 和 1。
这里需要回到开头那个错误配置。如果业务确实希望香港节点承担 70%、新加坡承担 30%,且不区分用户来源,那么直接用权重是可行的。但绝大多数多地域部署的初衷,恰恰是让不同来源的用户就近访问。在这种情况下,权重应该放在线路内部,而不是跨线路使用。香港线路下的权重用来分配香港机房里多台服务器的流量,新加坡线路下的权重用来分配新加坡机房内部的流量。跨地域的“流量比例”应该由业务架构决定(比如用户数据归属哪个区域),而不是由 DNS 权重来强行切分。
一个配置层面的注意事项
分权重解析对记录类型有限制。A、AAAA、CNAME 记录支持权重配置,MX、TXT、NS 等记录类型通常不支持。CNAME 记录的权重行为有一个特殊之处:部分平台在不开启权重时默认只返回其中一条 CNAME 记录,而非全部返回。如果业务依赖 CNAME 做多 CDN 厂商的流量分配,需要确认所选 DNS 平台的具体行为。
另外,权重配置的生效前提是解析记录处于“启用”状态。暂停或锁定的记录不参与权重计算。在做灰度切流时,把旧版本机器的权重调低而不是直接暂停,可以保留回滚能力;但如果旧机器已经故障,暂停记录比设权重为 0 更干净,因为权重 0 在某些平台上仍可能被部分 LocalDNS 缓存影响。
分线路解析和分权重解析如何选型?
如果业务只部署在一个机房、一台服务器上,分线路和分权重都用不上,一个默认 A 记录就够了。当服务器增加到两台以上、且在同一机房内,分权重解析是需要的;当用户分布在不同运营商或地域、且在不同机房部署了节点,分线路解析是前提。两者同时存在的场景,说明业务已经进入了多节点、多线路的架构阶段,DNS 层面的调度策略需要和实际的服务器分布、性能差异、发布流程一起考虑,而不是在控制台里随意填几个权重数字。
分线路解决的是“用户从哪来、该去哪”,分权重解决的是“到了之后、怎么分”。这两个问题的答案不应该互相替代。
推荐文章