负载均衡

来源

负载均衡会随机排列 A、AAAA 和 MX 记录的顺序。

描述

负载均衡会通过随机排列响应中的 A、AAAA 和 MX 记录的顺序来充当循环 DNS 负载均衡器。

请参阅 Wikipedia 有关此设置的优缺点。它会注意在任何地址记录之前对任何 CNAME 进行排序,因为一些存根解析器实现(如 glibc)对此特别在意。

语法

loadbalance [round_robin | weighted WEIGHTFILE] {
			reload DURATION
}
  • round_robin 策略会随机排列 A、AAAA 和 MX 记录的顺序,应用均匀概率分布。这是默认负载均衡策略。

  • weighted 策略会向 IP 分配权重值,以控制特定 IP 返回为响应中的第一个(顶部)A/AAAA 记录的相对可能性。请注意,它不会改组响应中的所有记录,它只关注响应中返回的第一个 A/AAAA 记录。

  • WEIGHTFILE 是包含分配给各种域名 IP 的权重值的文件。如果路径是相对的,则将预先在其前面添加 root 插件的路径。下面在权重文件部分中对格式进行了说明。

  • 重新加载 WEIGHTFILE 并更新权重分配(如果文件中存在更改)的时间间隔 DURATION。默认值为 30s0s 值表示不扫描更改和重新加载。

权重文件

通用权重文件语法

# Comment lines are ignored

domain-name1
ip11 weight11
ip12 weight12
ip13 weight13

domain-name2
ip21 weight21
ip22 weight22
# ... etc.

其中 ipXYdomain-nameX 的 IP 地址,weightXY 是与该 IP 关联的权重值。权重值在 [1,255] 范围内。

weighted 策略会选择结果列表中的一个地址记录并将其移至列表的顶部(第一个)位置。随机选择会考虑分配给权重文件中的地址的权重值。如果结果列表中的一个地址在权重文件中未关联任何权重值,那么在执行选择时,将为其使用默认权重值“1”。

示例

对来自 Google 公共 DNS 的返回响应进行负载均衡

. {
    loadbalance round_robin
    forward . 8.8.8.8 8.8.4.4
}

针对 file 插件提供的答复,使用 weighted 策略进行负载平衡。针对 IP 100.64.1.1100.64.1.2100.64.1.3,我们分别分配权重值 312。这些 IP 是 ./db.example.com 区域文件中定义的域名 www.example.com 的 A 记录中的地址。100.64.1.1100.64.1.2100.64.1.3 位于首部 (首个) A 记录中的答复数量之间的比例应该收敛为 3 : 1 : 2。(例如,与使用 100.64.1.2 位于首部 A 记录中的答复相比,使用 100.64.1.3 位于首部 A 记录中的答复应多一倍)。Corefile

example.com {
        file ./db.example.com {
                reload 10s
        }
        loadbalance weighted ./db.example.com.weights {
                    reload 10s
        }
}

权重文件 ./db.example.com.weights

www.example.com
100.64.1.1 3
100.64.1.2 1
100.64.1.3 2