盛廣偉
摘要:本文根據(jù)我校的網(wǎng)絡(luò)情況和提高公網(wǎng)用戶訪問(wèn)我校官網(wǎng)的需求,從高可用負(fù)載集群的配置、BIND9視圖及DNS主從配置、高可用負(fù)載均衡測(cè)試三個(gè)方面介紹了高可用智能主從DNS系統(tǒng)在我校的應(yīng)用。
關(guān)鍵詞:高可用;Bind視圖;DNS;LVS;Keepalived
中圖分類號(hào):TP393.18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)07-0111-03
本文采用開(kāi)源的LVS和KEEPALIVED以及BIND9中的VIEW技術(shù),構(gòu)建了我校的公網(wǎng)高可用智能主從域名解析系統(tǒng)。經(jīng)過(guò)對(duì)我校的官網(wǎng)域名智能解析后,解決了不同運(yùn)營(yíng)商的用戶訪問(wèn)我校的官網(wǎng)速度慢的問(wèn)題,網(wǎng)站訪問(wèn)速度明顯得到提高。以下為服務(wù)器及地址規(guī)劃清單。如表1所示。
1 高可用負(fù)載集群的配置
主、備負(fù)載均衡器Keepalived的主要配置。主負(fù)載均衡器關(guān)鍵配置,從負(fù)載均衡器參考照如下配置按說(shuō)明做相應(yīng)的變更即可。
[root@lvs131 ~]#vi /etc/keepalived/keepalived.conf
# 定義VRRP實(shí)例
vrrp_instance VI_1 {
state MASTER#從負(fù)載均衡服務(wù)器上將MASTER改為BACKUP
interface eth1
lvs_sync_daemon_inteface eth1
virtual_router_id 51
priority 100# 從負(fù)載均衡服務(wù)器上將100改為90
advert_int 2
authentication {
auth_type PASS #啟用認(rèn)證
auth_pass 111111 #認(rèn)證密碼
}
virtual_ipaddress { 192.168.27.101 } #虛擬VIP地址
}
#定義虛擬服務(wù)器
virtual_server 192.168.27.101 53 {
delay_loop 6 #定義Realserver監(jiān)測(cè)間隔時(shí)間
lb_algo rr#定義負(fù)載調(diào)度算法
lb_kind DR#定義LVS的工作模式
persistence_timeout 60 #定義會(huì)話保持時(shí)間
protocol UDP #指定轉(zhuǎn)發(fā)協(xié)議
real_server 192.168.27.134 53 { #定義真實(shí)服務(wù)器IP地址及端口
weight 100 #權(quán)重值,數(shù)值越大優(yōu)先級(jí)越高
TCP_CHECK {
connect_timeout 10#連接超時(shí)時(shí)間
nb_get_retry 3 #重試次數(shù)
delay_before_retry 3 #重試間隔
connect_port 53 #健康檢查端口
}
}
real_server 192.168.27.135 53 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 53
}
}
}
2 主、從DNS的關(guān)鍵配置
2.1 主DNS的關(guān)鍵配置
[root@ns134 master]# vi /usr/local/named/master/named.conf
#為每個(gè)視圖生成認(rèn)證KEY,且從DNS視圖KEY與主DNS視圖KEY保持一致,以便在同步域名記錄時(shí),每個(gè)視圖域名記錄互不影響。
key "cernet" { algorithm hmac-md5; secret "0CT/AnClV1e2WAiRWAs+WA==";};
key "any"{ algorithm hmac-md5; secret "qe+/SsR8J3+r2h6nXximTQ==";};
#定義教育網(wǎng)、其他任意公網(wǎng)地址位置及對(duì)應(yīng)的文件
include "master/ip/cernet_acl.conf";
include "master/ip/cnc_acl.conf";
#定義教育網(wǎng)視圖view_ cernet
view "view_cernet" {
match-clients { CERNET; key cernet; };
server 192.168.27.135 { keys cernet; };
zone "." {type hint;file "named.ca";};
include "master/zones/cernet.def";
};
#定義其他任意公網(wǎng)地址視圖view_any
view "view_any" {
match-clients { any; key any; };
server 192.168.27.135 { keys any; };
zone "." {type hint;file "named.ca";};endprint
include "master/zones/any.def";
};
2.2 創(chuàng)建教育網(wǎng)公網(wǎng)地址
[root@ns134 master]# vi ip/cernet_acl.conf
acl "CERNET" {1.51.0.0/16;1.184.0.0/15;……};
2.2.1 定義教育網(wǎng)區(qū)域文件
主DNS教育網(wǎng)區(qū)域文件配置。聯(lián)通、任意區(qū)域文件與下面配置一樣,如下:
[root@ns134 master]# vi /usr/local/named/master/zones/cernet.def
zone "xdsisu.edu.cn"{
type master;
allow-transfer {192.168.27.135;}; #允許從DNS服務(wù)器同步區(qū)域文件記錄
file "master/zones/master.cernet.xdsisu.edu.cn";
};
從DNS教育網(wǎng)區(qū)域文件配置。聯(lián)通、任意區(qū)域文件與下面配置一樣,如下:
[root@ns135 slaves]# vi /usr/local/named/slaves/zones/cernet.def
zone "xdsisu.edu.cn"{
type slave;
masters {192.168.27.134;}; #指定主DNS服務(wù)器
file "slaves/zones/slaves.cernet.xdsisu.edu.cn";
};
2.2.2 配置主DNS服務(wù)器各運(yùn)營(yíng)商區(qū)域A記錄
(1)配置教育網(wǎng)區(qū)域A記錄。
[root@ns134 zones]# vi master.cernet.xdsisu.edu.cn
www INA 59.78.72.3
(2)配置其它任意地址區(qū)域A記錄。
[root@ns134 zones]# vi master.any.xdsisu.edu.cn
www INA 222.69.159.3
(3)LVS的DR模式下需要在主、從DNS服務(wù)器上對(duì)arp_ignore和arp_announce參數(shù)進(jìn)行配置,禁止響應(yīng)對(duì)VIP地址的ARP請(qǐng)求。另外為lo:0接口配置VIP虛擬地址。
[root@ns134 master]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@ns134 master]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@ns134 master]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@ns134 master]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
[root@ns134 master]#/sbin/ifconfig lo:0 192.168.27.101 netmask 255.255.255.255 broadcast 192.168.27.101
[root@ns134 master]#/sbin/route add -host 192.168.27.101 dev lo:0
3 高可用負(fù)載及公網(wǎng)域名解析測(cè)試
3.1 負(fù)載均衡器高可用測(cè)試
關(guān)閉主負(fù)載均衡器的Keepalived,查看備用負(fù)載均衡器的日志記錄。
[root@lvs132 ~]# tail -f /var/log/messages
Jul 24 20:31:39 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Jul 24 20:31:41 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Jul 24 20:31:41 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Jul 24 20:31:41 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.168.27.101
Jul 24 20:31:41 lvs132 Keepalived_vrrp: Netlink reflector reports IP 10.0.0.2 added
Jul 24 20:31:41 lvs132 Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.2 added
Jul 24 20:31:41 lvs132 avahi-daemon[3998]: Registering new address record for 192.168.27.101 on eth1.
Jul 24 20:31:46 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.168.27.101endprint
通過(guò)上面的日志可以看出,在關(guān)閉主負(fù)載均衡器上的Keepalived時(shí),備用負(fù)載均衡器自動(dòng)進(jìn)入主負(fù)載均衡器的角色,狀態(tài)也由原來(lái)的BACKUP變?yōu)榱薓ASTER狀態(tài),虛擬VIP 192.168.27.101也漂移到備用負(fù)載均衡器上。
重新啟動(dòng)主負(fù)載均衡器的Keepalived,觀察備用負(fù)載均衡器日志。
[root@lvs132 ~]# tail -f /var/log/messages
Jul 24 20:39:19 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert
Jul 24 20:39:19 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Jul 24 20:39:19 lvs132 Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.
Jul 24 20:39:19 lvs132 Keepalived_vrrp: Netlink reflector reports IP 10.0.0.2 removed
Jul 24 20:39:19 lvs132 Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.2 removed
Jul 24 20:39:19 lvs132 avahi-daemon[3998]: Withdrawing address record for 192.168.27.101 on eth1.
上面日志可以看出,啟用主負(fù)載均衡器上的Keepalived后,由于備用負(fù)載均衡器收到優(yōu)先級(jí)比自己更高的負(fù)載均衡器,于是自動(dòng)進(jìn)入BACKUP狀態(tài)并釋放掉虛擬VIP。
通過(guò)以上的測(cè)試可知,在主負(fù)載均衡器發(fā)生故障時(shí),備用負(fù)載均衡器能夠在很短的時(shí)間便可自動(dòng)接管,承擔(dān)起主負(fù)載均衡器調(diào)度轉(zhuǎn)發(fā)作用,進(jìn)而保證了業(yè)務(wù)系統(tǒng)正常運(yùn)行的高可用性、高可靠性。
3.2 Realserver高可用的測(cè)試
打開(kāi)主負(fù)載均衡器的日志,關(guān)閉、啟動(dòng)從DNS,觀察日志記錄。
[root@lvs131 ~]# tail -f /var/log/messages
Jul 24 20:46:04 lvs131 Keepalived_healthcheckers: TCP connection to [192.168.27.135:53] failed ?。?!
Jul 24 20:46:04 lvs131 Keepalived_healthcheckers: Removing service [192.168.27.135:53] from VS [192.168.27.101:53]
Jul 24 20:59:34 lvs131 Keepalived_healthcheckers: TCP connection to [192.168.27.135:53] success.
Jul 24 20:59:34 lvs131 Keepalived_healthcheckers: Adding service [192.168.27.135:53] to VS [192.168.27.101:53]
以上日志可以看出,在從DNS發(fā)生故障后,主負(fù)載均衡器會(huì)自動(dòng)將其移除,隨即也停止向其轉(zhuǎn)發(fā)DNS解析的請(qǐng)求。從DNS恢復(fù)正常后,主負(fù)載均衡器又自動(dòng)將其添加到集群中,使其繼續(xù)為用戶提供正常的域名解析服務(wù)。
3.3 域名的解析測(cè)試
打開(kāi)一起測(cè)網(wǎng)站www.17ce.com,該網(wǎng)站可以看到監(jiān)測(cè)點(diǎn)名稱、不同監(jiān)測(cè)點(diǎn)域名解析花費(fèi)時(shí)間、解析返回的公網(wǎng)地址。切到Dns欄輸入我校的官網(wǎng)地址www.xdsisu.edu.cn,通過(guò)檢測(cè)可以詳細(xì)看到不同監(jiān)測(cè)點(diǎn)返回的我校官網(wǎng)不同的公網(wǎng)地址。
4 結(jié)語(yǔ)
使用多臺(tái)Realserver做DNS的集群,存在不同視圖域名記錄同步的問(wèn)題,本系統(tǒng)中將每個(gè)視圖生成一個(gè)密鑰,DNS主從同步時(shí)保證了只同步本視圖內(nèi)域名記錄,而不會(huì)對(duì)其他視圖造成影響。實(shí)際使用中,不管是某臺(tái)負(fù)載均衡器出現(xiàn)問(wèn)題,還是集群中的某臺(tái)DNS服務(wù)器發(fā)生故障,我校域名的解析都可以正常運(yùn)行,真正地實(shí)現(xiàn)了高可用、高可靠、負(fù)載均衡的目的。
參考文獻(xiàn)
[1]高俊峰.高性能Linux服務(wù)器構(gòu)建實(shí)戰(zhàn):運(yùn)維監(jiān)控、性能調(diào)優(yōu)與集群應(yīng)用.北京:機(jī)械工業(yè)出版社[M],2011,(5)25-36.
[2]劉敏娜,張繼濤.基于LVS+KEEPALIVED 的高可用負(fù)載均衡研究與應(yīng)用.《自動(dòng)化技術(shù)與應(yīng)用》[J],2014,(11)33.
[3]石幫榮,智能DNS和線路跟隨解析技術(shù)在多出口高校校園網(wǎng)中的應(yīng)用.《桂林師范高等??茖W(xué)校學(xué)報(bào)》[J],2014(4)86-88.endprint
數(shù)字技術(shù)與應(yīng)用2017年7期