keepalived中vrrp_script,track_script,notify的使用方法

网友投稿 576 2022-10-25


keepalived中vrrp_script,track_script,notify的使用方法

可以在keepalived.conf文件中定义的脚本,用以实现某个检测功能;

例:检测/etc/keepalived目录下down文件是否存在,如果存在则优先级减20,如果不存在表示正常

vrrp_script chk {

script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

interval 1

weight -20

注:这个脚本的作用是用于维护MASTER,使MASTER手动下线

如何调用上面定义的脚本呢?

在vrrp实例中(vrrp_instance VI_1)加上track_script用于追踪脚本

track_script {

chk

}

notify的用法:

notify_master:当当前节点成为master时,通知脚本执行任务(一般用于启动某服务,比如nginx,haproxy等)

notify_backup:当当前节点成为backup时,通知脚本执行任务(一般用于关闭某服务,比如nginx,haproxy等)

notify_fault:当当前节点出现故障,执行的任务;

例:当成为master时启动haproxy,当成为backup时关闭haproxy

notify_master "/etc/keepalived/start_haproxy.sh start"

notify_backup "/etc/keepalived/start_haproxy.sh stop"

一个完整的实例:

MASTER:初始priority为100

BACKUP:初始priority为90

模拟MASTER产生故障:

当检测到/etc/keepalived目录下有down文件时,priority减少20,变为80;低于BACKUP的priority;

此时MASTER变成BACKUP,同时执行notify_backup的脚本文件(关闭haproxy);

同时BACKUP变成MASTER,同时执行notify_master的脚本文件(启动haproxy);

模拟MASTER故障恢复:

当删除/etc/keepalived目录下的down文件时,原MASTER的优先级又变为100,高于原BACKUP的priority;

此时原MASTER由BACKUP又抢占成了MASTER,同时执行notify_master的脚本文件(启动haproxy);

同时原BACKUP由MASTER又变了BACKUP,同时执行notify_backup的脚本文件(关闭haproxy);

MASTER的配置:

global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from Alexandre.Cassen@firewall.loc    smtp_server 192.168.200.1    smtp_connect_timeout 30    router_id LVS_DEVEL } vrrp_script chk {    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"    interval 1    weight -20 } vrrp_instance VI_1 {     state MASTER     interface eth1     virtual_router_id 51     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         10.0.22.245     }     track_script {       chk     }     notify_master "/etc/keepalived/start_haproxy.sh start"     notify_backup "/etc/keepalived/start_haproxy.sh stop"

BACKUP的配置:

global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from Alexandre.Cassen@firewall.loc    smtp_server 192.168.200.1    smtp_connect_timeout 30    router_id LVS_DEVEL }   vrrp_instance VI_1 {     state BACKUP     interface eth0     virtual_router_id 51     priority 90     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {        10.0.22.245     }     notify_master "/etc/keepalived/start_haproxy.sh start"     notify_backup "/etc/keepalived/start_haproxy.sh stop"   }

start_haproxy.sh的脚本内容:

#!/bin/bash case "$1" in   start)     /etc/init.d/haproxy start   ;;   stop)     /etc/init.d/haproxy stop   ;;   restart)     /etc/init.d/haproxy stop     /etc/init.d/haproxy start   *)     echo "Usage:$0 start|stop|restart"   ;; esac

keepalived检测nginx,当nginx服务不正常时自动降级,当nginx恢复时自动升级:

check_nginx.sh脚本

#!/bin/bash nmap localhost -p 80 | grep "80/tcp open" if [ $? -ne 0 ];then         exit 10 fi

notify.sh脚本:

#!/bin/bash VIP=$2 sendmail (){         subject="${VIP}'s server keepalived state is translate"         content="`date +'%F %T'`: `hostname`'s state change to master"         echo $content | mail -s "$subject" zhengwei.liu@staples.cn } case "$1" in   master)         nmap localhost -p 80 | grep "80/tcp open"         if [ $? -ne 0 ];then                 /etc/init.d/nginx start         fi         sendmail   ;;   backup)         nginx_psr=`ps -C nginx --no-header | wc -l`         if [ $nginx_psr -ne 0 ];then                 /etc/init.d/nginx stop         fi   ;;   *)         echo "Usage:$0 master|backup VIP"   ;; esac

MASTER配置

! Configuration File for keepalived global_defs {     notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from Alexandre.Cassen@firewall.loc    smtp_server 192.168.200.1    smtp_connect_timeout 30    router_id https } vrrp_script chk_nginx {     script "/etc/keepalived/check_nginx.sh"     interval 1     weight -20 } vrrp_instance VI_1 {     state MASTER     interface eth0     virtual_router_id 54     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress { 172.16.8.19/25     }     track_script { chk_nginx     }     notify_master "/etc/keepalived/notify.sh master 172.16.8.19"     notify_backup "/etc/keepalived/notify.sh backup 172.16.8.19" }

BACKUP配置:

backup无需检测nginx是否正常,默认nginx是未启动的,当升级为MASTER时启动nginx,当降级为BACKUP时关闭

! Configuration File for keepalived global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from Alexandre.Cassen@firewall.loc    smtp_server 192.168.200.1    smtp_connect_timeout 30    router_id https } vrrp_instance VI_1 {     state BACKUP     interface eth0     virtual_router_id 54     priority 90     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress { 172.16.8.19/25     }     notify_master "/etc/keepalived/notify.sh master 172.16.8.19"     notify_backup "/etc/keepalived/notify.sh backup 172.16.8.19" }


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HTML中的超链接
下一篇:system v 共享内存区
相关文章

 发表评论

评论列表