keepalived 配置 dns 单点恢复
1.vim /etc/keepalived/keepalived.conf
vrrp_script chk_dns {
script "/usr/local/sbin/check_dns.sh" #在这里添加脚本链接,其中/usr/local/sbin/check_dns.sh 必须有执行的权限 chmod +x
interval 3 #脚本执行间隔
weight -10 # 修改权重
}
vrrp_instance VI_1 {
state BACKUP # 备用用 BACKUP
interface eth2 #用的是哪个网卡
virtual_router_id 88 #虚拟路由地址必须一样,才能配置成一个组
priority 100 # 备用用 90
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
nopreempt
authentication {
auth_type PASS #(密码形式)
auth_pass 1111
}
virtual_ipaddress {
192.168.32.88
}
track_script {
chk_dns #添加脚本执行
}
notify_master "/bin/bash -x /usr/local/sbin/modify_master.sh 2>&1 | tee /tmp/modimaster.txt"
notify_backup "/bin/bash -x /usr/local/sbin/modify_master.sh 2>&1 | tee /tmp/modibackup.txt"
}
virtual_server 192.168.32.88 53 {
delay_loop 6 #每隔6s 查询 realserver 状态
lb_algo rr #lvs 算法
lb_kind NAT #Direct Route
persistence_timeout 0 #会话保持时间,单位是秒(可以适当延长时间以保持session)
protocol TCP # 用 TCP协议检查 realserver 状态
real_server 192.168.32.85 53 {
weight 1
notify_down "/bin/sh -x /usr/local/sbin/keepalived.sh 2>&1 | tee /tmp/tmp.txt"
TCP_CHECK {
connect_timeout 10 #10s 无响应超时
nb_get_retry 3
delay_before_retry 3
connect_port 53
}
}
}
2.vim /usr/local/sbin/check_dns.sh
#!/bin/bash
ll=`ping -c 3 www.zjtest8.com`
if [ $? -eq 1 ]; then
service keepalived restart
/usr/bin/killall -9 named
/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf
exit 0
else
exit 1
fi
vim /usr/local/sbin/keepalived.sh
#!/bin/bash
service keepalived restart
killall -9 named
/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf
vim /usr/local/sbin/modify_master.sh
#!/bin/bash
killall -9 named
/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf
注:其中所有的脚本 如果没有 sh 必须要可执行 chmod +x