DNS BIND之DNS负载
DNS负载均衡的优点是简单易行,而且实现代价小。它在DNS服务器中为同一个域名配置多个IP地址(即为一个主机名设置多条A资源记录),在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的计算机上去,从而达到负载均衡的目的。
下面是一个实现web服务器负载平衡的配置片段(在区域数据文件中)。
www.antcloud.com IN A 20.20.3.1
IN A 20.20.3.2
IN A 20.20.3.3
在以上配置中,当客户端查询www服务器IP地址时,Bind将根据rrset-order语句定义的次序把配置中设定的3条A记录都发送给客户端,客户端可以使用自己规定的算法从3条记录中挑选一条。rrset-order语句是主配置文件中options主语句的一条子语句,可以定义固定、随机和轮询的次序,Bind9默认返回的顺序是随机。
合法的排序值是:
fixed:记录以它们在域文件中的顺序
random:记录以随机顺序被返回
cyclic:记录以环顺序被返回
例如:
rrset-order {
class IN type A name "www.antcloud.com" order random;
order cyclic;
};
将会使得任何处于IN类中的A类记录的响应以随机顺序返回,IN 类以"host.example.com"为后缀。其他的记录以循环记录被返回。如果多重rrset-order语句出现,它们并不组合在一起,只适用于最后一个条。但是rrset-order语句不被BIND9支持,BIND9目前只支持"random-cyclic"排序,服务器随机选择RRset集中的开始点,有顺序返回在那个点开始的记录。
可以通过配置全局配置
dns 轮询配置options来实现轮询。
options {
rrset-order { order cyclic; };
.....
};
fixed在默认编译的时候是关闭的,需要在编译的时候打开:
Allow 'fixed' rrset-order (--enable-fixed-rrset)
./configure --enable-largefile --enable-threads --disable-openssl-version-check --enable-fixed-rrset --prefix=/home/slim/bind9.9.7 --with-libtool
注意:rrset-order为全局配置,该配置在Bind中会配置在每一个view中。每个域名请求都要遍历该规则列表,配置该配置会影响到Bind的解析性能。
- 点赞
- 收藏
- 关注作者
评论(0)