14.3.5 配置DNS负载均衡功能
随着网络的规模越来越大,用户数急剧增加,网络服务器的负担也变得越来越重,一台服务器要同时应付成千上万用户的并发访问,必然会导致服务器过度繁忙,响应时间过长的结果。DNS负载均衡的优点是简单易行,而且实现代价小。它在DNS服务器中为同一个域名配置多个IP地址(即为一个主机名设置多条A资源记录),在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的计算机上去,从而达到负载均衡的目的。下面是一个实现邮件服务器负载平衡的配置片段(在区域数据文件中)。
IN MX 10 mail.example.com.
IN MX 10 mail1.example.com.
IN MX 10 mail2.example.com.
...
mail IN A 192.168.0.4
mail1 IN A 192.168.0.5
mail2 IN A 192.168.0.6
在以上配置中,mail、mail1和mail2均是example.com.域中的邮件服务器,而且优先级都是10。当客户端(通常是SMTP软件)查询邮件服务器IP地址时,Bind将根据rrset-order语句定义的次序把配置中设定的3条A记录都发送给客户端,客户端可以使用自己规定的算法从3条记录中挑选一条。rrset-order语句是主配置文件中options主语句的一条子语句,可以定义固定、随机和轮询的次序。下面的配置是另一种实现邮件服务器负载平衡的方法。
IN MX 10 mail.example.com.
...
mail IN A 192.168.0.4
IN A 192.168.0.5
IN A 192.168.0.6
在以上配置中,mail.example.com对应了3个IP地址,此时,具体选择哪一条A记录,也是由rrset-order语句决定。另外,在反向解析文件中,这3个IP都要对应mail主机,以免有些邮件服务器为了反垃圾邮件进行反向查询时出现问题。
除了邮件服务器以下,其他的服务也可以采用类似的配置实现负载均衡。例如,要使用3台内容相同的FTP服务器共同承担客户机的访问,它们的IP地址分别是10.10.1.7、10.10.1.10和10.10.1.13。可以根据14.2.3小节所提供的一套配置文件,在named.wzvtc.cn区域数据文件中输入以下内容来达到目的。
ftp IN A 10.10.1.7
ftp IN A 10.10.1.10
ftp IN A 10.10.1.13
此时,为了解析客户端对ftp.wzvtc.cn的域名查询,DNS服务器会轮询这3条A资源记录,以rrset-order子语句设定的顺序响应用户的解析请求,实现了将客户机的访问分担到每个FTP服务器上的负载均衡功能。测试结果如图14-11所示,可以看到,3次查询ftp.wzvtc.cn域名,得到的IP地址次序是不一样的。
图14-11 负载均衡测试结果
%注意:以上的Bind配置只是为其他服务器的负载平衡提供了条件。当具体使用时,还需要多台服务器之间采取同步等措施才能真正实现。