zoukankan      html  css  js  c++  java
  • Redis 主从 keepalived高可用 实现 VIP 自动漂移

    Redis 多主写多从度 配置启动OK ;直接配 keepalived  相关配置;

    redis
    默认路径 :/usr/local/redis 
    
    keepalived 
    默认路径 :/etc/keepalived

    检测监控 redis_backup.sh,redis_check.sh,redis_fault.sh redis_master.sh,redis_stop.sh脚本默认 /etc/keepalived/script 

     实现VIP 地址检测漂移;VRRP 组播地址是必须要通信的 ;

    iptables 设置添加 需要开放的端口和地址
    224.0.0.18 是vrrp组播地址 ;
    iptables -A INPUT -d 224.0.0.18 -j ACCEPT

    Master - redis  主节点1  keepalived.conf  配置:

    global_defs {
       router_id redis1
    }
    vrrp_script chk_redis 
    { 
         script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379" 
         interval 2 
         timeout 2
         fall 3
    }
    
    vrrp_instance redis {
         state MASTER 
         interface bond0  
         virtual_router_id 100 
         priority  100       
         nopreempt # no seize,must add
         advert_int 1
             authentication {   #all node must same
             auth_type PASS
             auth_pass 1111
        }   
    
        virtual_ipaddress {  
                     1.2.3.4/24
        }
        track_script { 
             chk_redis 
        } 
    
         notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  1.2.3.1 6379"
         notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  1.2.3.1 6379"
         notify_fault /etc/keepalived/scripts/redis_fault.sh 
         notify_stop /etc/keepalived/scripts/redis_stop.sh 
    }

    Salve - redis  主节点2  keepalived.conf  配置:

     global_defs {
       router_id redis101
    }
    
    vrrp_script chk_redis 
    { 
         script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379" 
         interval 2
         timeout 2
         fall 3
    }
    
    vrrp_instance redis {
        state BACKUP   
        interface bond0 
        virtual_router_id 90 
        priority  100       
        advert_int 1
    authentication {   #all node must same
           auth_type PASS
           auth_pass 1111
        }
    
        virtual_ipaddress { 
        1.2.3.4/24
        }
    
        track_script { 
            chk_redis 
        } 
    
        notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1  1.2.3.2 6379"
        notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1  1.2.3.2 6379"
        notify_fault /etc/keepalived/scripts/redis_fault.sh 
        notify_stop /etc/keepalived/scripts/redis_stop.sh 
    }  

    VIP 检测 漂移

    redis 备份脚本:

    # redis_backup.sh
    
    #!/bin/bash 
    REDISCLI="/usr/local/redis/src/redis-cli -h $1 -p $3" 
    LOGFILE="/etc/keepalived/log/keepalived-redis-state.log" 
    echo "[backup]" >> $LOGFILE 
    date >> $LOGFILE 
    echo "Run SLAVEOF cmd ..." >> $LOGFILE 
    $REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1 
    # echo "Being slave...." >> $LOGFILE 2>&1 
    sleep 15 
    #delay 15 s wait data sync exchange role

     -----

    Redis 检测脚本 :

    # redis_check.sh
    
    #!/bin/bash 
    ALIVE=`/usr/local/redis/src/redis-cli -h $1 -p $2 PING` 
    LOGFILE="/etc/keepalived/log/keepalived-redis-check.log" 
    echo "[CHECK]" >> $LOGFILE
    date >> $LOGFILE
    
    if [ $ALIVE == "PONG" ]; then : 
       echo "Success: redis-cli -h $1 -p $2 PING $ALIVE" >> $LOGFILE 2>&1
       exit 0 
    else 
       echo "Failed:redis-cli -h $1 -p $2 PING $ALIVE " >> $LOGFILE 2>&1
       exit 1 
    fi 

      -----

     redis 故障判断脚本:

    # redis_fault.sh
    
    #!/bin/bash 
    LOGFILE=/etc/keepalived/log/keepalived-redis-state.log 
    echo "[fault]" >> $LOGFILE
    date >> $LOGFILE 

     -----

    redis 主节点检测脚本:

    # redis_master.sh
    
    #!/bin/bash 
    REDISCLI="/usr/local/redis/src/redis-cli -h $1 -p $3" 
    LOGFILE="/etc/keepalived/log/keepalived-redis-state.log" 
    echo "[master]" >> $LOGFILE 
    date >> $LOGFILE 
    echo "Being master...." >> $LOGFILE 2>&1  
    echo "Run MASTER cmd ..." >> $LOGFILE 2>&1
    $REDISCLI SLAVEOF $2 $3 >> $LOGFILE  
    sleep 10 
    #delay 10 s wait data async cancel sync
    
    echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
    $REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

      -----

    redis 检测停止脚本:

    # redis_stop.sh
    
    #!/bin/bash 
    LOGFILE=/etc/keepalived/log/keepalived-redis-state.log 
    echo "[stop]" >> $LOGFILE 
    date >> $LOGFILE 
  • 相关阅读:
    Leetcode 从前序与中序遍历序列构造二叉树
    python基础一 day6 序列操作集合
    python基础一 day6 文件操作
    python基础一 day5 集合
    python基础一 day5 复习
    python基础一 day5 知识点
    python基础一 day4 字典
    python基础一day4 元组
    python基础一 day3 列表
    python基础一 day2 字符串操作
  • 原文地址:https://www.cnblogs.com/sharesdk/p/8676356.html
Copyright © 2011-2022 走看看