Keepalived配置keepalived主要有三个模块:
分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
keepalived配置文件
keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server。
global_defs
文档后面会讲邮件报警这个的
vrrp_script
用来做健康检查的,当时检查失败时会将vrrp_instance的priority减少相应的值。同时告诉keepalived在什么情况下切换,所以可以有多个vrrp_script
vrrp_script check_nginx {
script "/usr/local/keepalived-1.3.4/nginx_check.sh"
interval 3
weight -2
}
script : 自己写的检测脚本。这里的脚本命令是nginx_check.sh
interval 3 : 每3s检测一次
weight -2 : 检测失败,则相应的vrrp_instance的优先级会减少2个点
script一般有两种写法: (这里在安装keepalived的时候,已经写好了)
1.通过脚本执行的返回结果,改变优先级,keepalived继续发送通告消息,backup比较优先级再决定
2.脚本里面检测到异常,直接关闭keepalived进程,backup机器接收不到advertisement会抢占IP ,我们采用的是第二种:
这里可以看一下我的nginx_check.sh
nxPidNum=`ps -C nginx --no-header |wc -l`
keepalivedPidNum=`ps -C keepalived --no-header |wc -l`
if [ $nxPidNum -eq 0 ];then
/usr/local/nginx-1.10.3/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
elif [$keepalivedPidNum -eq 0 ];then
service keepalived start
fi
elif [ $keepalivedPidNum -eq 0 ];then
service keepalived start
fi
提示:
1.优先级不会不断的提高或者降低
2.可以编写多个检测脚本并为每个检测脚本设置不同的weight(在配置中列出就行)
3.不管提高优先级还是降低优先级,最终优先级的范围是在[1,254],不会出现优先级小于等于0或者优先级大于等于255的情况
4.在MASTER节点的 vrrp_instance 中 配置 nopreempt ,当它异常恢复后,即使它 prio 更高也不会抢占,这样可以避免正常情况下做无谓的切换
vrrp_instance
vrrp_instance VI_1 {
state MASTER #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
interface eth0
virtual_router_id 30 #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的,同一组.
priority 200 #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。对于上面vrrp_script修改的优先级,就是这个
advert_int 1 #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
authentication {
auth_type PASS #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,\
auth_pass 1111 据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
}
track_script {
check_nginx
}在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
virtual_ipaddress { #虚拟ip地址,可以有多个地址,每个地址占一行,也就是咱们上图画的150的ip
192.168.23.150
}
}
默认配置中还有一些其他的,但是我们用不到,所以就不做阐述了