盛廣偉
摘要:本文根據我校的網絡情況和提高公網用戶訪問我校官網的需求,從高可用負載集群的配置、BIND9視圖及DNS主從配置、高可用負載均衡測試三個方面介紹了高可用智能主從DNS系統在我校的應用。
關鍵詞:高可用;Bind視圖;DNS;LVS;Keepalived
中圖分類號:TP393.18 文獻標識碼:A 文章編號:1007-9416(2017)07-0111-03
本文采用開源的LVS和KEEPALIVED以及BIND9中的VIEW技術,構建了我校的公網高可用智能主從域名解析系統。經過對我校的官網域名智能解析后,解決了不同運營商的用戶訪問我校的官網速度慢的問題,網站訪問速度明顯得到提高。以下為服務器及地址規(guī)劃清單。如表1所示。
1 高可用負載集群的配置
主、備負載均衡器Keepalived的主要配置。主負載均衡器關鍵配置,從負載均衡器參考照如下配置按說明做相應的變更即可。
[root@lvs131 ~]#vi /etc/keepalived/keepalived.conf
# 定義VRRP實例
vrrp_instance VI_1 {
state MASTER#從負載均衡服務器上將MASTER改為BACKUP
interface eth1
lvs_sync_daemon_inteface eth1
virtual_router_id 51
priority 100# 從負載均衡服務器上將100改為90
advert_int 2
authentication {
auth_type PASS #啟用認證
auth_pass 111111 #認證密碼
}
virtual_ipaddress { 192.168.27.101 } #虛擬VIP地址
}
#定義虛擬服務器
virtual_server 192.168.27.101 53 {
delay_loop 6 #定義Realserver監(jiān)測間隔時間
lb_algo rr#定義負載調度算法
lb_kind DR#定義LVS的工作模式
persistence_timeout 60 #定義會話保持時間
protocol UDP #指定轉發(fā)協議
real_server 192.168.27.134 53 { #定義真實服務器IP地址及端口
weight 100 #權重值,數值越大優(yōu)先級越高
TCP_CHECK {
connect_timeout 10#連接超時時間
nb_get_retry 3 #重試次數
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的關鍵配置
2.1 主DNS的關鍵配置
[root@ns134 master]# vi /usr/local/named/master/named.conf
#為每個視圖生成認證KEY,且從DNS視圖KEY與主DNS視圖KEY保持一致,以便在同步域名記錄時,每個視圖域名記錄互不影響。
key "cernet" { algorithm hmac-md5; secret "0CT/AnClV1e2WAiRWAs+WA==";};
key "any"{ algorithm hmac-md5; secret "qe+/SsR8J3+r2h6nXximTQ==";};
#定義教育網、其他任意公網地址位置及對應的文件
include "master/ip/cernet_acl.conf";
include "master/ip/cnc_acl.conf";
#定義教育網視圖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";
};
#定義其他任意公網地址視圖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)建教育網公網地址
[root@ns134 master]# vi ip/cernet_acl.conf
acl "CERNET" {1.51.0.0/16;1.184.0.0/15;……};
2.2.1 定義教育網區(qū)域文件
主DNS教育網區(qū)域文件配置。聯通、任意區(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服務器同步區(qū)域文件記錄
file "master/zones/master.cernet.xdsisu.edu.cn";
};
從DNS教育網區(qū)域文件配置。聯通、任意區(qū)域文件與下面配置一樣,如下:
[root@ns135 slaves]# vi /usr/local/named/slaves/zones/cernet.def
zone "xdsisu.edu.cn"{
type slave;
masters {192.168.27.134;}; #指定主DNS服務器
file "slaves/zones/slaves.cernet.xdsisu.edu.cn";
};
2.2.2 配置主DNS服務器各運營商區(qū)域A記錄
(1)配置教育網區(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服務器上對arp_ignore和arp_announce參數進行配置,禁止響應對VIP地址的ARP請求。另外為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 高可用負載及公網域名解析測試
3.1 負載均衡器高可用測試
關閉主負載均衡器的Keepalived,查看備用負載均衡器的日志記錄。
[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
通過上面的日志可以看出,在關閉主負載均衡器上的Keepalived時,備用負載均衡器自動進入主負載均衡器的角色,狀態(tài)也由原來的BACKUP變?yōu)榱薓ASTER狀態(tài),虛擬VIP 192.168.27.101也漂移到備用負載均衡器上。
重新啟動主負載均衡器的Keepalived,觀察備用負載均衡器日志。
[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.
上面日志可以看出,啟用主負載均衡器上的Keepalived后,由于備用負載均衡器收到優(yōu)先級比自己更高的負載均衡器,于是自動進入BACKUP狀態(tài)并釋放掉虛擬VIP。
通過以上的測試可知,在主負載均衡器發(fā)生故障時,備用負載均衡器能夠在很短的時間便可自動接管,承擔起主負載均衡器調度轉發(fā)作用,進而保證了業(yè)務系統正常運行的高可用性、高可靠性。
3.2 Realserver高可用的測試
打開主負載均衡器的日志,關閉、啟動從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ā)DNS解析的請求。從DNS恢復正常后,主負載均衡器又自動將其添加到集群中,使其繼續(xù)為用戶提供正常的域名解析服務。
3.3 域名的解析測試
打開一起測網站www.17ce.com,該網站可以看到監(jiān)測點名稱、不同監(jiān)測點域名解析花費時間、解析返回的公網地址。切到Dns欄輸入我校的官網地址www.xdsisu.edu.cn,通過檢測可以詳細看到不同監(jiān)測點返回的我校官網不同的公網地址。
4 結語
使用多臺Realserver做DNS的集群,存在不同視圖域名記錄同步的問題,本系統中將每個視圖生成一個密鑰,DNS主從同步時保證了只同步本視圖內域名記錄,而不會對其他視圖造成影響。實際使用中,不管是某臺負載均衡器出現問題,還是集群中的某臺DNS服務器發(fā)生故障,我校域名的解析都可以正常運行,真正地實現了高可用、高可靠、負載均衡的目的。
參考文獻
[1]高俊峰.高性能Linux服務器構建實戰(zhàn):運維監(jiān)控、性能調優(yōu)與集群應用.北京:機械工業(yè)出版社[M],2011,(5)25-36.
[2]劉敏娜,張繼濤.基于LVS+KEEPALIVED 的高可用負載均衡研究與應用.《自動化技術與應用》[J],2014,(11)33.
[3]石幫榮,智能DNS和線路跟隨解析技術在多出口高校校園網中的應用.《桂林師范高等??茖W校學報》[J],2014(4)86-88.endprint