描述
负载均衡会通过随机排列响应中的 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。默认值为30s
。0s
值表示不扫描更改和重新加载。
权重文件
通用权重文件语法
# Comment lines are ignored
domain-name1
ip11 weight11
ip12 weight12
ip13 weight13
domain-name2
ip21 weight21
ip22 weight22
# ... etc.
其中 ipXY
是 domain-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.1
、100.64.1.2
和 100.64.1.3
,我们分别分配权重值 3
、1
和 2
。这些 IP 是 ./db.example.com
区域文件中定义的域名 www.example.com
的 A 记录中的地址。100.64.1.1
、100.64.1.2
或 100.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