• Redis高可用配置(Keepalived)


    主:172.16.0.104

    备:172.16.0.105

    VIP:172.16.0.107

    客户端直接连VIP,当master 104的redis挂掉后,105作为master。当104重启后,104作为105的slave。当105又挂掉之后,104作为master......

    1、安装redis并配置主从同步

         安装过程省略

        1.1 配置104的redis实例:/etc/redis/redis.conf

        requirepass 123456 #生产环境千万不要配置这么简单的密码

        masterauth 123456 #备库密码,这里没有配置slaveof却配置masterauth是因为主备切换时需要用到密码

        1.2 配置105的redis实例

        requirepass 123456 #生产环境千万不要配置这么简单的密码

        masterauth 123456 #主库密码

        slaveof 172.16.0.104 6379

    2、安装keepalived

       安装过程省略

    3、配置keepalived

      Master(104)实例:

      keepalived.conf    

    global_defs {
       router_id test
    }
    vrrp_script chk_redis 
    { 
         script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379 123456" 
         interval 2 
         timeout 2
         fall 3
    }
    vrrp_instance redis {
        state BACKUP # 主也配置为SLAVE
        interface eth0  
        virtual_router_id 51 
        priority  150       
        nopreempt # 不抢占,注意加上
        advert_int 1        
        authentication {   
            auth_type PASS   
            auth_pass 123456
        }
        virtual_ipaddress {  
        	172.16.0.107
        }
        track_script { 
             chk_redis 
        } 
        notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 6379 123456"
        notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 6379 123456 172.16.0.105 6379"
        notify_fault /etc/keepalived/scripts/redis_fault.sh 
        notify_stop /etc/keepalived/scripts/redis_stop.sh  
    }

    redis_master.sh 

     #!/bin/bash
      REDISCLI="redis-cli -h $1 -p $2 -a $3"
      LOGFILE="/var/log/keepalived-redis-state.log"
      echo "[master]" >> $LOGFILE
      date >> $LOGFILE
      echo "Being master...." >> $LOGFILE 2>&1
      echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
      $REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
    
    

    redis_backup.sh

     #!/bin/bash
      REDISCLI="redis-cli -h $1 -p $2 -a $3"
      LOGFILE="/var/log/keepalived-redis-state.log"
      echo "[backup]" >> $LOGFILE
      date >> $LOGFILE
      echo "Being slave...." >> $LOGFILE 2>&1
      echo "Run SLAVEOF cmd ..." >> $LOGFILE
      $REDISCLI SLAVEOF $4 $5 >> $LOGFILE  2>&1
    
    


    Slave(105)实例

    keepalived.conf
    global_defs {
        router_id redis
    }
    vrrp_script chk_redis {
        script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379 123456"   ###监控脚本
        interval 2                  ###监控时间
        timeout  2                                  ###超时时间
        fall     3                  ###重试次数
    }
    vrrp_instance redis {
      state BACKUP                  ###设置为MASTER
      interface eth0              ###监控网卡
      virtual_router_id 51
      priority 100              ###权重值
      nopreempt # 不抢占,注意加上
      advert_int 1
      authentication {
             auth_type PASS          ###加密
             auth_pass 123456        ###密码
      }
      track_script {
        chk_redis              ###执行上面定义的chk_redis
      }
      virtual_ipaddress {
           172.16.0.107            ###VIP
      }
       notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 6379 123456"
       notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 6379 123456 172.16.0.104 6379"
       notify_fault /etc/keepalived/scripts/redis_fault.sh
       notify_stop /etc/keepalived/scripts/redis_stop.sh
    }
    
    
    
     
    redis_master.sh
     #!/bin/bash
      REDISCLI="redis-cli -h $1 -p $2 -a $3"
      LOGFILE="/var/log/keepalived-redis-state.log"
      echo "[master]" >> $LOGFILE
      date >> $LOGFILE
      echo "Being master...." >> $LOGFILE 2>&1
      echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
      $REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1 
    
    
    

    redis_backup.sh

       

     #!/bin/bash
      REDISCLI="redis-cli -h $1 -p $2 -a $3"
      LOGFILE="/var/log/keepalived-redis-state.log"
      echo "[backup]" >> $LOGFILE
      date >> $LOGFILE
      echo "Being slave...." >> $LOGFILE 2>&1
      echo "Run SLAVEOF cmd ..." >> $LOGFILE
      $REDISCLI SLAVEOF $4 $5 >> $LOGFILE  2>&1
    
    

    公共配置

    redis_check.sh

    #!/bin/bash 
    ALIVE=`redis-cli -h $1 -p $2 -a $3 PING` 
    LOGFILE="/var/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_fault.sh

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

    redis_stop.sh

    #!/bin/bash 
    LOGFILE=/var/log/keepalived-redis-state.log 
    echo "[stop]" >> $LOGFILE 
    date >> $LOGFILE 
    
    

    启动keepalived:keepalived -D

    查看ip漂移情况:ip a

    配置要点:

    双BACKUP + nopreempt,优先级大的先启动作为master,当master挂掉后,slave被选中成为新的master。

    参考文章:http://www.cnblogs.com/lulu/archive/2013/04/14/3021261.html

    欢迎转载,转载请务必注明出处
  • 相关阅读:
    升/降压转换器 (Buck-boost)
    升压转换器 (Boost)
    降压转换器 (Buck)
    线性稳压器 (LDO)
    电源管理组件选择指南
    AC/DC 反激 (Flyback) 控制器
    SEPIC 单端初级电感转换器 稳压器 -- Zeta 转换器
    LT3759 宽输入电压范围升压 / 负输出 / SEPIC 控制器 可在输入电压低至 1.6V 的情况下工作
    LT1961 升压型稳压器造就了兼具升压和降压能力的扁平状SEPIC
    Level-shifting nixes need for dual power supply
  • 原文地址:https://www.cnblogs.com/mzsg/p/5593784.html
Copyright © 2020-2023  润新知