DNS轮循介绍

一、DNS使用分析

1、作用

DNS轮循是指将相同的域名解析到不同的IP,以达到负载均衡的目的。

 

2、优点&缺点

 

优点:

  • 零成本:只是在DNS服务器上绑定几个A记录,域名注册商一般都免费提供解析服务;
  • 部署简单:就是在网络拓扑进行设备扩增,然后在DNS服务器上添加记录。
  • 统一入口,可以使用一个域名提供服务接入。

 

缺点:

  1. 负载算法简单,只支持简单轮巡。

应对办法: 如想使用最小连接数等算法,可以将DNS指向HA负载均衡通过HA来负载。

     2.不支持高可靠性,如果后端某服务器宕机,DNS仍然会把DNS请求分发到这个机器上,导致不能响应。

应对办法:使用KEEPAPLIVE将DNS请求分发到VIP上,当宕机发生时,VIP发生飘移,仍可使用。

 

 

二、DNS配置

  1. 安装

基于centos or redhat 使用yum安装bind

yum install bind.x86_64

 

安装后会主要文件

/usr/sbin/named    可执行域名解析进程
/etc/named.conf    主配置文件
/var/named         默认配置的运行路径,域名配置文件。
2.配置
/etc/named.conf
options {
listen-on port 53 { 192.168.1.86; };//配置监控IP,使用53端口
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file           "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
//rrset-order 支持三个参数:fixed, random, cyclic 。
 //fix 会将多个A记录按配置文件的顺序固定给出
 //random 会随机给出
 //cyclic 会循环给出rrset-order { order cyclic ; };
 
//允许所有IP查询,可以配置限定IP段
allow-query     { any; };
//是否递归查询 默认YES
//递归:客户端只发一次请求,要求对方给出最终结果。
//迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的//其它名称服务器列表,
//客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
//如果是yes,并且一个DNS询问要求递归,那么服务器将会做所有能够回答查询请求的工作。如果recursion是off的,并且服务器不知道答案,它将会返回一个推荐(referral)响应。
recursion no;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "test.com" IN {//配置域名的区域
type master;
//指定具体域 名配置文件
file "test.com.zone";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
              /var/named/test.com.zone
 
$TTL 1D
@       IN SOA  ns.test.com. xx.test.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.test.com.
 
ns      A       192.168.1.86
www    CNAME    master
master  A       192.168.1.86
master  A       192.168.1.87
master  A       192.168.1.88
 
 
3. 启动&停止
由yum安装的bind 已经自动加入系统启动脚本,可直接使用系统命令启停。
 
Centos7
/bin/systemctl start named.service
/bin/systemctl stop named.service
 
Centos6
service  named start
service  named stop

三、典型使用场景

 1、访问过程

  1. 客户机访问DNS查询域名,域名服务器轮巡返回HA中一个VIP地址。
  2. 客户机访问VIP。VIP通过keepalive软件产生,通过 arrp协议通讯。
  3. 请求通过 VIP HA 分发到实列服务器。

 

四、常见问题

1、DNS日志通过rsyslog输出,需要注意输出大小,如果量大会占满根目录。

2、DNS请求分发到的HA,可以通过KEEPALIVE 做出VIP,客户机连接VIP,当有HA宕机时,另一台HA会接管,实现高可用目的。

3、DNS 前端也可以做负载,分担DNS解析压力。 或者在客户机中配置多个DNS地址,需要配置顺序。