Keepalived配置文件说明
Keepalived 配置文件说明
! Configuration File for keepalived
#全局定义模块
global_defs {
notification_email { #报警邮件
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc #通知邮件从哪个地址发出
smtp_server 127.0.0.1 #通知邮件的smtp地址
smtp_connect_timeout 30 #连接smtp服务器的超时时间
router_id LVS_DEVEL #LVS负载均衡器标识(在一个网络内,它应该是唯一的)(#标识本节点的字条串,故障发生时,邮件通知会用到)
}
vrrp_script chk_haproxy {
script "/usr/local/chk_haproxy.sh" #在这里添加脚本链接
#script "killall -0 haproxy"
interval 3 #脚本执行间隔
fall 2 #检测到失败的最大次数(也就是说如果请求失败两次,就认为此节点资源发生故障,将进行切换操作。)
rise 1 #标示如果请求一次成功,就认为此节点资源恢复正常。
#weight -2 #脚本结果导致的优先级变更
}
#VRRP定义块
vrrp_instance VI_1 {
state MASTER #可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER
interface ens33 #对外提供服务的网络接口,用来发VRRP包
#lvs_sync_daemon_inteface eth0 #设置lvs监听的接口 lvs_sync_daemon_inteface。负载均衡器之间的监控接口,类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在DR模式中,lvs_sync_daemon_inteface 与服务接口interface 使用同一个网络接口。
virtual_router_id 51 #取值在0-255之间,用来区分多个instance的VRRP组播, 同一网段中该值不能重复,并且同一个vrrp实例使用唯一的标识
priority 150 #用来选举master的,要成为master,那么这个选项的值最好高于其他机器50个点,该项取值范围是1-255(在此范围之外会被识别成默认值100)
advert_int 1 #发VRRP包的时间间隔,即多久进行一次master选举,可以认为是健康查检时间间隔,单位为秒
nopreempt //不抢占,即允许一个 priority 比较低的节点作为 master,即使有 priority 更高的节点启动
authentication {
auth_type PASS #认证类型有PASS和AH(IPSEC),通常使用的类型为PASS,同一vrrp实例MASTER与BACKUP 使用相同的密码才能正常通信
auth_pass 1111
}
track_script {
chk_haproxy #添加脚本执行
}
virtual_ipaddress { #可以有多个VIP地址,每个地址占一行,不需要指定子网掩码,必须与RealServer上设定的VIP相一致
192.168.199.199/24 dev ens33 label ens33:0
}
notify_master "/etc/keepalived/master.sh "
notify_backup "/etc/keepalived/backup.sh "
notify_fault "/etc/keepalived/fault.sh "
}
virtual_server 192.168.199.199 80 { #虚拟服务器Virtual_Server,定义RealServer对应的VIP及服务端口
delay_loop 6 #健康检查时间间隔(单位秒)
lb_algo rr #负载均衡调度算法,互联网应用常使用wlc或者rr.
lb_kind DR #负载均衡转发规则NAT/DR/TUN
nat_mask 255.255.255.0
#persistence_timeout 50 #会话保持时间(单位秒)
protocol TCP #转发协议protocol.一般有TCP和UDP两种
#sorry_server #当所有RealServer宕机时,sorry server顶替
real_server 192.168.199.202 80 { #RealServer的IP和端口号(真实服务器)
weight 1 #设置权重
notify_down /etc/keepalived/bin/nginx.sh //检测到 realserver 的 nginx 服务 down 后执行的
脚本
TCP_CHECK {
connect_timeout 3 #超时时长
nb_get_retry 3 #重试次数
delay_before_retry 3 #下次重试的时间延迟
connect_port 80 #健康检查端口
}
}
}
# vrrp_script区域主要用来做健康检查的,当时检查失败时会将vrrp_instance的priority减少相应的值。
/usr/local/chk_haproxy.sh脚本配置
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/bin/nohup /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid & #haproxy 启动命令
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
notify调用的相关脚本:
/etc/keepalived/master.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-haproxy-state.log
echo "[Master]" >> $LOGFILE
date >> $LOGFILE
/etc/keepalived/backup.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-haproxy-state.log
echo "[Backup]" >> $LOGFILE
date >> $LOGFILE
/etc/keepalived/fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-haproxy-state.log
echo "[Fault]" >> $LOGFILE
date >> $LOGFILE
# 同步vrrp组vrrp_sync_group。作用:确定失败切换(FailOver)包含的路由实例个数。即在有2个负载均衡器的场景,一旦某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪些?
实例组group。至少包含一个vrrp实例。
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。