我的redis+keepalived主从自动切换配置脚本

echo "192.168.0.246 redismaster" >> /etc/hosts
echo "192.168.0.249 redisslave" >> /etc/hosts


echo 1 > /proc/sys/vm/overcommit_memory 
echo 511 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled


$ wget http://download.redis.io/releases/redis-3.2.0.tar.gz
$ tar xzf redis-3.2.0.tar.gz
$ cd redis-3.2.0
$ make




cp redis-server redis-cli redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin


cp redis.conf /etc/


修改 /etc/redis.conf里面可以把  daemonize no 修改为daemonize yes




vi /etc/init.d/redis-server
==========================服务脚本
vi /etc/init.d/redis-server


#!/usr/bin/env bash


#


# redis start up the redis server daemon


#


# chkconfig: 345 99 99


# description: redis service in /etc/init.d/redis \


#            chkconfig --add redis or chkconfig --list redis \


#            service redis start  or  service redis stop


# processname: redis-server


# config: /etc/redis.conf


PATH=/usr/local/bin:/sbin:/usr/bin:/bin
 
REDISPORT=6379


EXEC=/usr/local/bin/redis-server


REDIS_CLI=/usr/local/bin/redis-cli


PIDFILE=/var/run/redis.pid


CONF="/etc/redis.conf"


#make sure some dir exist


if [ ! -d /var/lib/redis ] ;then


    mkdir -p /var/lib/redis


    mkdir -p /var/log/redis


fi
 


case "$1" in


    status)


        ps -A|grep redis


        ;;


    start)


        if [ -f $PIDFILE ]


        then


                echo "$PIDFILE exists, process is already running or crashed"


        else


                echo "Starting Redis server..."


                $EXEC $CONF


        fi


        if [ "$?"="0" ]


        then


              echo "Redis is running..."


        fi


        ;;


    stop)


        if [ ! -f $PIDFILE ]


        then


                echo "$PIDFILE does not exist, process is not running"


        else


                PID=$(cat $PIDFILE)


                echo "Stopping ..."


                $REDIS_CLI -p $REDISPORT SHUTDOWN


                while [ -x ${PIDFILE} ]


              do


                    echo "Waiting for Redis to shutdown ..."


                    sleep 1


                done


                echo "Redis stopped"


        fi


        ;;


  restart|force-reload)


        ${0} stop


        ${0} start


        ;;


  *)


    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2


        exit 1


esac


=======================================================@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
chmod +x /etc/init.d/redis-server
chkconfig --add redis-server
service redis-server restart


从机配置=========================================
从服务器,配置一样,只不过 修改/etc/redis.conf 中


slaveof <masterip> <masterport>修改为


slaveof 192.168.0.246 6379
===========================================================================================
分别keepalived    =====================================master
! Configuration File for keepalived


vrrp_script chk_redis {
    script "/etc/keepalived/scripts/redis_check.sh"
    interval 2
    }
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    mcast_src_ip 192.168.0.246
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }


track_script {
    chk_redis
    }
virtual_ipaddress {
        192.168.0.239
    }
        notify_master /etc/keepalived/scripts/redis_master.sh
        notify_backup /etc/keepalived/scripts/redis_backup.sh
        notify_fault  /etc/keepalived/scripts/redis_fault.sh
        notify_stop  /etc/keepalived/scripts/redis_stop.sh
}


vi /etc/keepalived/keepalived.conf ===========================slave


! Configuration File for keepalived
vrrp_script chk_redis {
    script "/etc/keepalived/scripts/redis_check.sh" 
    interval 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
mcast_src_ip 192.168.0.249
    priority 10
advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
    chk_redis     
    }
virtual_ipaddress {
        192.168.0.239
    }
        notify_master /etc/keepalived/scripts/redis_master.sh
        notify_backup /etc/keepalived/scripts/redis_backup.sh
        notify_fault  /etc/keepalived/scripts/redis_fault.sh
        notify_stop  /etc/keepalived/scripts/redis_stop.sh
}


在Master和Slave上创建监控Redis的脚本
mkdir /etc/keepalived/scripts
vi /etc/keepalived/scripts/redis_check.sh


#!/bin/bash 
ALIVE=`/usr/local/bin/redis-cli PING` 
if [ "$ALIVE" == "PONG" ]; then
echo $ALIVE 
exit 0 
else
echo $ALIVE 
exit 1 
fi


===============Master上编写========================================
vi /etc/keepalived/scripts/redis_master.sh


#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.0.249 6379 >> $LOGFILE  2>&1
sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态 
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1




vi /etc/keepalived/scripts/redis_backup.sh


#!/bin/bash 
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色 
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.0.249 6379 >> $LOGFILE  2>&1




=============================slave===============@@@@@@@@@@@@@@@@@@@


vi /etc/keepalived/scripts/redis_master.sh


#!/bin/bash 
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.0.246 6379 >> $LOGFILE  2>&1
sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态 
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1


vi /etc/keepalived/scripts/redis_backup.sh


#!/bin/bash 
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
sleep 15 #延迟15秒待数据被对方同步完成之后再切换主从角色 
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.0.246 6379 >> $LOGFILE  2>&1




然后在Master与Slave创建如下相同的脚本:===============
vi /etc/keepalived/scripts/redis_fault.sh


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


vi /etc/keepalived/scripts/redis_stop.sh


#!/bin/bash 
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值