作者: 薄荷冰           Linux基础  |  网站架构  |  数据库  |  监控报警  |  shell系列  |  常用工具  |  常见问题


 

导航

 

 

[root@cache-redis-01~/]# cat  /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   notification_email {
      11270963592@qq.com
   }
   notification_email_from 18978038798@189.cn
   smtp_server smtp.189.cn
   smtp_connect_timeout 30
   router_id redis_service01
   vrrp_skip_check_adv_addr
   # vrrp_strict  # can not use ping 
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script chk_redis { 
    script /etc/keepalived/scripts/redis_check.sh   ###监控本地redis alive 
    interval 2                                        ###监控时间间隔(秒)
} 
vrrp_instance redis {
    state BACKUP
    interface eth0
    virtual_router_id 55
    priority 100
    nopreempt                                        ###不抢占MASTER
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_redis                       ###执行上面定义的chk_redis
     }
    virtual_ipaddress {
        172.16.1.63/24 dev eth0 label eth0:63
    }
    notify_master /etc/keepalived/scripts/redis_master.sh # 当此节点切换为master时执行的脚本
    notify_backup "/etc/keepalived/scripts/redis_backup.sh cache-redis-02" # 当此节点切换为
# backup时执行的脚本 notify_fault
/etc/keepalived/scripts/redis_fault.sh # 当此节点故障时(chk_keepalive中 # 脚本返回非0)执行的脚本 notify_stop /etc/keepalived/scripts/
redis_stop.sh # 当此节点keepalived服务stop时执行的脚本 }

 

[root@cache-redis-02~/]# cat /etc/keepalived/keepalived.conf    
! Configuration File for keepalived global_defs { notification_email { 11270963592@qq.com } notification_email_from 18978038798@189.cn smtp_server smtp.189.cn smtp_connect_timeout 30 router_id redis_service02 vrrp_skip_check_adv_addr # vrrp_strict # can not use ping vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_redis { script /etc/keepalived/scripts/redis_check.sh ###监控本地redis alive interval 2 ###监控时间间隔(秒) } vrrp_instance redis { state BACKUP interface eth0 virtual_router_id 55 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_redis ###执行上面定义的chk_redis } virtual_ipaddress { 172.16.1.63/24 dev eth0 label eth0:63 } notify_master /etc/keepalived/scripts/redis_master.sh # 当此节点切换为master时执行的脚本 notify_backup "/etc/keepalived/scripts/redis_backup.sh cache-redis-01" # 当此节点切换为
# backup时执行的脚本
notify_fault
/etc/keepalived/scripts/redis_fault.sh # 当此节点故障时(chk_keepalive中
# 脚本返回非0)执行的脚本
notify_stop
/etc/keepalived/scripts/
redis_stop.sh # 当此节点keepalived服务stop时执行的脚本 }

 

 跟从的脚本完全一样!!!                                                                                                    

mkdir -p /etc/keepalived/scripts

cat >/etc/keepalived/scripts/redis_master.sh<<-EOF
    #!/bin/bash
    PORT="\${1:-6380}"
    REDISCLI="/bin/redis-cli"
    LOGFILE="/var/log/keepalived-redis-state.log"
    sleep 10 #延迟10秒待数据被对方同步完成之后再切换主从角色
    echo -e "[keepalived master]\t\$(date +%F_%T)\nRun SLAVEOF NO ONE cmd ..." >>\${LOGFILE}
    \$REDISCLI -h \$(hostname) -p \${PORT} SLAVEOF NO ONE &>>\${LOGFILE}
EOF

cat >/etc/keepalived/scripts/redis_backup.sh<<-EOF
    #!/bin/bash
    REMOTE_HOSTNAME="\$1"
    PORT="\${2:-6380}"
    REDISCLI="/bin/redis-cli"
    LOGFILE="/var/log/keepalived-redis-state.log"
    sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色
    echo -e "[keepalived backup]\t\$(date +%F_%T)\nRun SLAVEOF \${REMOTE_HOSTNAME} \${PORT} ..." >>\${LOGFILE}
    \$REDISCLI -h \$(hostname) -p \${PORT} SLAVEOF \${REMOTE_HOSTNAME} \${PORT} &>>\${LOGFILE}
EOF

cat >/etc/keepalived/scripts/redis_check.sh<<-EOF
    #!/bin/bash
    PORT="\${1:-6380}"
    LOGFILE=/var/log/keepalived-redis-state.log
    ALIVE=\$(/bin/redis-cli -h \$(hostname) -p \${PORT} PING)
    if [ "\$ALIVE" == "PONG" ]; then
        exit 0
    else
        echo -e "[redis_check fault]\t\$(date +%F_%T)" >> \$LOGFILE
        exit 1
    fi
EOF

cat >/etc/keepalived/scripts/redis_fault.sh<<-EOF
    #!/bin/bash
    systemctl stop keepalived.service
EOF

cat >/etc/keepalived/scripts/redis_stop.sh<<-EOF
    #!/bin/bash
    LOGFILE=/var/log/keepalived-redis-state.log
    echo -e "[keepalived stop]\t\$(date +%F_%T)" >> \$LOGFILE
EOF

chmod +x /etc/keepalived/scripts/*.sh

posted on 2018-11-20 19:24  薄荷冰  阅读(336)  评论(0编辑  收藏  举报