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。

keepalived配置文件简要说明_nginx

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

keepalived配置文件简要说明_配置文件_02

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

}

}

默认配置中还有一些其他的,但是我们用不到,所以就不做阐述了