wang3140 发表于 2007-08-20 10:19

dns轮询压力不均的问题

最近一直对DNS轮询有一个疑问,我在一个域名下挂了十多个IP,实现简单的负载均衡功能,但明显发现这种轮询不是很均匀,有一台服务器上的压力始终很高,其他的比较接近,但将此台压力高的从dns列表上去掉后,列表中的下一台压力又会高起来,此时再把先前那一台加回dns列表,压力就又转回到第一台上去了。已经排除了攻击的可能。这个问题一直困扰了我很久,不知是bind的bug还是我设置ttl或是其他什么的原因,不知有没有高人对这方面有所研究的?bind-9.2.4-2

阿骁 发表于 2007-08-20 11:01

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 会循环给出

不知到这个参数对你是否有帮助。

阿骁 发表于 2007-08-20 11:43

如果要真正实现 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/

wang3140 发表于 2007-08-20 14:20

楼上好人啊!解说的很详细,我倒没注意到还可以这样设置,我试试先,看有什么变化否。

奇怪,冒似我在使用的版本不支持rrset-order选项啊,写到option中后会报错啊

[ 本帖最后由 wang3140 于 2007-8-20 14:28 编辑 ]

阿骁 发表于 2007-08-20 15:13

你的 bind 版本是多少啊?

wang3140 发表于 2007-08-20 16:33

bind-9.2.4-2

阿骁 发表于 2007-08-20 17:35

你是不是哪里写错了? 我测了一下 9.2.4 的版本,可以的噢。

wang3140 发表于 2007-08-20 18:25

看我的设置和抱错信息

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
                                                         [确定]

阿骁 发表于 2007-08-20 20:13

你用 named -v 看看是什么版本。

wang3140 发表于 2007-08-21 09:03

BIND 9.2.4
页: [1] 2 3
查看完整版本: dns轮询压力不均的问题