dns轮询压力不均的问题
最近一直对DNS轮询有一个疑问,我在一个域名下挂了十多个IP,实现简单的负载均衡功能,但明显发现这种轮询不是很均匀,有一台服务器上的压力始终很高,其他的比较接近,但将此台压力高的从dns列表上去掉后,列表中的下一台压力又会高起来,此时再把先前那一台加回dns列表,压力就又转回到第一台上去了。已经排除了攻击的可能。这个问题一直困扰了我很久,不知是bind的bug还是我设置ttl或是其他什么的原因,不知有没有高人对这方面有所研究的?bind-9.2.4-2 DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响;别的 DNS 服务器 Cache 的影响;windows 客户端也有一个 DNS Cache。这些都会影响 DNS 轮询的效果。因此 DNS 的轮询机制并不能做为一个 load balancing 的解决方案,只能作为一个 load distribution 方案。不过有一个参数你可以试试看是否能调整一下轮询的效果:
在 named.conf 中可以设置 bind 的 round-robin 的给出结果的顺序:
options {
rrset-order { order random; };
};
rrset-order 支持三个参数:fixed, random, cyclic 。
fix 会将多个A记录按配置文件的顺序固定给出
random 会随机给出
cyclic 会循环给出
不知到这个参数对你是否有帮助。 如果要真正实现 DNS load balancing ,ISC 推荐使用 lbnamed 程序来做。
你可以参考一下这篇文章:http://www.isc.org/index.pl?/sw/bind/docs/bind-load-bal.php
lbnamed 地址如下:http://www.stanford.edu/~riepel/lbnamed/ 楼上好人啊!解说的很详细,我倒没注意到还可以这样设置,我试试先,看有什么变化否。
奇怪,冒似我在使用的版本不支持rrset-order选项啊,写到option中后会报错啊
[ 本帖最后由 wang3140 于 2007-8-20 14:28 编辑 ] 你的 bind 版本是多少啊? bind-9.2.4-2 你是不是哪里写错了? 我测了一下 9.2.4 的版本,可以的噢。
看我的设置和抱错信息
options {directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
pid-file "/var/run/named/named.pid";
version "I do not know it";
recursion yes;
rrset-order { order random; };
};
# /etc/init.d/named restart
停止 named: [确定]
启动 named:/etc/named.conf:31: option 'rrset-order' is not implemented
[确定] 你用 named -v 看看是什么版本。 BIND 9.2.4