配置语法:
配置虚拟路由器:
vrrp_instance <STRING> {
....
}
专用参数:
state MASTER|BACKUP:当前节点在此虚拟路由器上的初始状态;只能有一个是MASTER,余下的都应该为BACKUP;
interface IFACE_NAME:绑定为当前虚拟路由器使用的物理接口;
virtual_router_id VRID:当前虚拟路由器的惟一标识,范围是0-255;
priority 100:当前主机在此虚拟路径器中的优先级;范围1-254;
advert_int 1:vrrp通告的时间间隔;
authentication {
auth_type AH|PASS
auth_pass <PASSWORD>
}
virtual_ipaddress {
<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
track_interface {
eth0
eth1
...
}
配置要监控的网络接口,一旦接口出现故障,则转为FAULT状态;
nopreempt:定义工作模式为非抢占模式;
preempt_delay 300:抢占式模式下,节点上线后触发新选举操作的延迟时长;
定义通知脚本:
notify_master <STRING>|<QUOTED-STRING>:当前节点成为主节点时触发的脚本
notify_backup <STRING>|<QUOTED-STRING>:当前节点转为备节点时触发的脚本;
notify_fault <STRING>|<QUOTED-STRING>:当前节点转为“失败”状态时触发的脚本;
notify <STRING>|<QUOTED-STRING>:通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知;
理论描述
目的:
借助脚本实现 高可用服务(nginx/http/haproxy)
也就是说在服务不可用时,vip偏移至备用节点。而不是之前实现的主机down掉之后vip偏移至备用节点。
环境:
95 96主机。keepalived 服务stop
脚本例子:
1:rpm –ql keepalived
此文件内有脚本的例子,以及如何调用
/usr/share/doc/keepalived-1.2.13/samples/keepalived.conf.vrrp.localcheck
2:cat /usr/share/doc/keepalived-1.2.13/samples/keepalived.conf.vrrp.localcheck
3:脚本简述
1:在配置文件中定义脚本
vrrp_script chk_sshd {
script "killall -0 sshd" # cheaper than pidof
interval 2 # check every 2 seconds
weight -4 # default prio: -4 if KO
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}
调用脚本 使用 vrrp_script 关键词
脚本名 chk_sshd
脚本内容分为两块
1 script "killall -0 sshd"
表示 此段代码 返回0值,部分功能不变
返回非0值。要执行一些关键指令
killall -0 sshd :测试 是否可以杀掉 sshd进程。能杀掉返回0值,表示sshd服务正常运行。返回其他值,表示sshd服务没有运行正常。
2:weight -4 测试失败权重-4
fall 2 检测失败2次,才减去权重
rise -2 检查两次成功,ok
2:在配置文件中调用脚本
在 vrrp_instance中
使用track_script {
chk_haproxy weight 2
chk_http_port
chk_https_port
chk_smtp_port
}
此种模式调用脚本
二:nginx 服务 高可用
1:先定义脚本,再调用脚本
95 96主机同时更改配置文件
编辑keepalived.conf文件
1)增加脚本
2)调用脚本
1)编辑脚本
vim /etc/keepalived.conf
vrrp_script chk_nginx{
script "[[ -f /etc/keepalived/down ]] && exit 1 ||exit 0 "
interval 1
weight -10
fall 2
rise 1
}
script "[[ -f /etc/keepalived/down ]] && echo 1 ||echo 0 "
down文件存在 返回1
down文件不存在 返回0
依靠down文件存在与否 来降低/保持 主节点的权重
2)调用脚本
track_script {
chk_nginx
}
使用 track_script 关键词 调用脚本
2:测试
在95主机上 touch /etc/keepalived/down文件
vip偏移至96主机
3:编辑 nginx配置文件
95 96主机
vim /etc/nginx/nginx.conf
server 中增加
location / {
proxy_pass http://websrvs;
}
server上增加
upstream websrvs {
server 172.16.253.97:80;
server 172.16.253.98:80;
}
此段主要实现 nginx的 服务调度至后端服务器
4:测试web主页访问