zoukankan      html  css  js  c++  java
  • keepalived中vrrp_script,track_script,notify的使用方法

    keepalived中vrrp_script,track_script,notify的使用方法
    转自:https://blog.51cto.com/liuzhengwei521/1929589
    可以在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" }
    改行去放羊
  • 相关阅读:
    6-1
    5-9
    5-8
    5-7
    5-6
    实验4-1:掌握Android应用调试方法、添加新界面
    实验3:理解Activity 的生命周期
    R.java常见问题解决方案
    配置Android模拟器
    第02周实验: 变量、算术运算和数据类型
  • 原文地址:https://www.cnblogs.com/musen/p/11101676.html
Copyright © 2011-2022 走看看