Linux下DNS主从同步搭建
我们的环境中只有一台DNS服务器,当他宕机了,那么客户端解析就会遇到问题,这个怎么办了,大家会说在大家一台一样配置的DNS服务器不就完了,对确实如此,这样确实就解决DNS服务器宕机,客户端无法解析的问题I,但是有个问题,不知道想过没有,这两台服务器的dns解析数据怎么更新,两台中的一台宕机,不会影响客户端un的解析了,这就用到了主从同步,当然还有别的工具(heartbeat、keeplived),
主从同步原理就是,从服务器部写入数据,只同步主服务器的数据,
并且当主服务器宕机之后能替代主服务器替客户端做解析任务,所有的数据更新都是在主服务器上更新,更新完成后,通过主服务器告知从服务器我数据更新了, 你也赶紧的更新一下,或者通过从服务器每隔一段时间向主服务器反馈、检测是否主服务器数据更新,如果有更新从服务器就下载下来,下面的图中描述了主从同步过程:
top
#架构环境如上面的图,试验中没有搭建web服务器,所有的web服务器都是使用主DNS服务器ip,这个不影响试验效果
以下配置主服务器和从服务器配置操作一样
#配置yum源
http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@localhost ~]#mv CentOS6-Base-163.repo /etc/yum.repos.d/
[root@localhost ~]#mv /etc/yum.repos.d/CentOS-Base.repo .
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
#安装ntpdate同步时间(关键,导致解析和从服务器同步出现异常)
[root@localhost ~]# yum install ntpdate
[root@localhost ~]# ntpdate time.windows.com
#关闭防火墙和SELINUX(实际生产根据请款那个)
[root@localhost ~]# /etc/init.d/iptables stop && setenforce 0
top
#安装DNS服务器软件
安装bind参考上节
《Linux搭建DNS服务Linux客户端和Windows xp端解析验证器》
top
#修改主服务器配置文件
[root@localhost ~]# vi /etc/named.conf
options {
//此处省略,配置都是跟上节配置一样//
allow-transfer { 192.168.11.137; }; #改为从服务器ip不然无进行DNS解析记录同步
//此处省略,配置都是跟上节配置一样//
#从服务器配置
[root@localhost ~]# vi /etc/named.conf
options {
//此处省略,配置都是跟上节配置一样//
#正向解析文件区域配置
zone "fly.org" IN { #这个是zone的名称,也是我们要发布的域名
type slave; #修改服务类型为salve
file "slaves/fly.org.zone"; #建议写成当前域名的名称
masters { 192.168.11.138; }; #增加主服务器ip
};
#反向解析文件区域
zone "11.168.192.in-addr.arpa" IN {
type slave; # 修改服务类型为salve
file "slaves/138.11.168.192-fly.org.zone"; #建议写成这样的
masters { 192.168.11.138; }; #增加主服务器ip
};
//此处省略,配置都是跟上节配置一样//
保存更改,重启DNS服务,记住每次修改DNS服务配置都要重启DNS服务,包括当主服务器更新DNS解析记录也要重启服务(只需要重启主服务器DNS服务)
#查看从服务器/var/named/slaves/目录下是否同步区域解析文件
[root@localhost ~]# ls /var/named/slaves/
138.11.168.192-fly.org.zone fly.org.zone
top
#添加正向解析记录guo.fly.org IN A 192.168.11.135
[root@localhost named]# vi fly.org.zone
$TTL 60 #这里写成60为了更快生效
@ IN SOA @ fly.org. (
1 ; serial #每次更新区域文件必须增加id数一般是时间加修改次数
60 ; refresh #刷新时间这里为了快
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS fly.org.
@ IN NS slave.fly.org.
fly.org. IN A 192.168.11.138
slave.fly.org. IN A 192.168.11.137
@ IN MX 10 mail.fly.org.
mail.fly.org. IN A 192.168.11.122
limin.fly.org. IN CNAME fly.org.
www IN A 192.168.11.132
ftp IN A 192.168.11.133
bbs IN A 192.168.11.134
guo IN A 192.168.11.135
#添加反向解析记录
[root@localhost named]# vi 138.11.168.192-fly.org.zone
$TTL 60
@ IN SOA @ fly.org. (
1 ; serial#每次更新区域文件必须增加id数一般是时间加修改次数
60 ; refresh刷新时间这里为了快
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS fly.org.
@ IN NS slave.fly.org.
138 IN PTR fly.org.
137 IN PTR slave.fly.org.
@ IN MX 10 mail.fly.org.
122 IN PTR mail.fly.org.
132 IN PTR www.fly.org.
133 IN PTR ftp.fly.org.
134 IN PTR bbs.fly.org.
135 IN PTR guo.fly.org.
#然后重启主服务器DNS服务
[root@localhost named]# /etc/init.d/named restart
Stopping named: [ OK ]
Starting named: [ OK ]
#查看从服务器正向解析是否获得更新
[root@localhost slaves]# cat fly.org.zone
$ORIGIN .
$TTL 60 ; 1 minute
fly.org IN SOA fly.org. fly.org. (
1 ; serial
60 ; refresh (1 minute)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS fly.org.
NS slave.fly.org.
A 192.168.11.138
MX 10 mail.fly.org.
$ORIGIN fly.org.
bbs A 192.168.11.134
ftp A 192.168.11.133
guo A 192.168.11.135
limin CNAME fly.org.
mail A 192.168.11.122
slave A 192.168.11.137
www A 192.168.11.13
#查看从服务器反向解析是否成功
[root@localhost slaves]# cat 138.11.168.192-fly.org.zone
$ORIGIN .
$TTL 60 ; 1 minute
11.168.192.in-addr.arpa IN SOA 11.168.192.in-addr.arpa. fly.org. (
1 ; serial
60 ; refresh (1 minute)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS fly.org.
NS slave.fly.org.
MX 10 mail.fly.org.
$ORIGIN 11.168.192.in-addr.arpa.
122 PTR mail.fly.org.
132 PTR www.fly.org.
133 PTR ftp.fly.org.
134 PTR bbs.fly.org.
135 PTR guo.fly.org.
137 PTR slave.fly.org.
138 PTR fly.org.
中间同步可能遇到的问题,当主服务器更新DNS数据重启服务,按照设定的时间最慢一分钟就会更新,咱们是内网时间环境也就2、3秒中的时间,在实验中一般超过5秒没有更新就重新一下从服务器的DNS服务,当然这个是试验环境,主要是为了理解主从同步原理,可以忽略这些问题,但是在生产中,不行,生产环境中他是rdcbind服务只需重新加载区域文件更新就行,这个以后在做
top
#linux端验证,这里我们使用主DNS服务器验证
添加DNS记录(主从DNS记录)
[root@localhost slaves]# vi /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.11.138 #主DNS服务器地址
nameserver 192.168.11.137 #从DNS服务器地址
nameserver 192.168.11.2
#当主从同时在线时我们使用nslookup 解析 guo.fly.org
[root@localhost slaves]# nslookup guo.fly.org
Server: 192.168.11.138 #此时DNS为主服务器
Address: 192.168.11.138#53 #地址为主服务器地址端口53
Name: guo.fly.org #解析的域名
Address: 192.168.11.135 #域名服务器ip
[root@localhost slaves]#
Windows xp客户端解析
添加主备DNS
ok,Windows xp解析正常,DNS服务器的域名都可以解析到,至于linux为什么没有,这个可能跟他是DNS服务器有关吧,这里等会在测试。
#然后我们宕掉主服务器的DNS服务,看看linux和Windows xp客户端解析情况
[root@localhost named]# /etc/init.d/named stop
Stopping named: [ OK ]
[root@localhost named]#
#linux解析
[root@localhost slaves]# nslookup guo.fly.org
Server: 192.168.11.137 #从服务器ip
Address: 192.168.11.137#53 #从服务器地址ip
Name: guo.fly.org #解析域名
Address: 192.168.11.135 #域名服务器ip地址
[root@localhost slaves]#
Windows xp端
ok,成功解析到从服务器上,上面的报错不用管,那个是因为咱主DNS填写的主DNS服务器,现在主服务器宕机了,这个正常,DNS在解析时,第一个失败就到备DNS这个不会影响客户端解析
#备注一下:Windows的客户端主备切换时间是15分钟,这个严重影响咱们的试验,不能很快的解析备DNS,所以提供一个一个修改注册表的方法,(这个可以用在生产环境中哦)
打开注册表找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
在有边新建一个REG_DWORD(字符串),值设定为0,确定后,即可生效。
#备宕机就不做演示了,这个跟上面的一样
就上面linux解析不到DNS服务器的域名,咱们在开一台linux看看什么情况
唉,问题没有解决,是不是因为DNS服务器本地域名的关系了,那咱就在试试
修改下主备DNS服务器服务器名
修改完毕需要重启才生效哦, 其实临时的也行, 为了保证一次到位咋就给他reboot吧
ok,现在了,启动主服务器的DNS服务看看如何
启动完毕后,要注意关闭iptables和SELINUX哦,咋这里面没有在iptables中放行DNS的端口,所以要关闭哦
解析了下百度和QQ也是这个样子
他大爷的,还么有成功,到底杂回事了, 今天看来是没事搞了,泪留给明天搞吧,唉~~~~~
top