设为首页 收藏本站
查看: 1536|回复: 0

[经验分享] keepalived中vrrp_script,track_script,notify的使用方法

[复制链接]

尚未签到

发表于 2018-12-29 11:15:45 | 显示全部楼层 |阅读模式
  可以在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"
}



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657191-1-1.html 上篇帖子: CentOS6.4 LVS+keepalived高可用负载均衡服务配置 下篇帖子: keepalived+LVS LVS集群节点 NFS+rsync+inotify+keepalived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表