debian系统Keepalived+redis实现高可用

本文介绍了如何在Debian系统上利用Keepalived和Redis配置高可用方案。首先,详细讲述了编辑redis配置文件的步骤,接着安装并配置Keepalived,包括安装依赖、下载软件、编译安装以及创建启动脚本。然后,分别展示了主服务器和从服务器的Keepalived配置。最后,阐述了如何启动服务并检查主从状态,以及在主从Redis间进行数据同步验证。
摘要由CSDN通过智能技术生成
服务器环境:
  10.20.200.128  (redis主+keepalived)
  10.20.200.129  (redis从+keepalived)
  Vip为:10.20.200.130


第一步:两台服务器分别安装redis,安装方法相同,只是配置文件略有不同
下载redis软件
#cd /usr/local/src
#wget  http://download.redis.io/releases/redis-2.8.9.tar.gz
安装redis
#tar zxvf redis-2.8.9.tar.gz
#cd redis-2.8.9
#make
#make install
#mkdir -p /redis/{conf,data,logs}
#mkdir /redis/data/6379
#cd /redis/conf

主配置文件如下:

#vim  redis-6379.conf

daemonize yes
pidfile /var/run/redis-6379.pid
port 6379
bind 0.0.0.0
timeout 300
loglevel notice
logfile stdout
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/data/6379
maxclients 10000
maxmemory 512mb
appendonly no
appendfilename appendonly.aof
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
slave-read-only no
从配置文件拷贝主配置文件,然后加入如下两行即可:
slaveof 10.20.200.128 6379

第二步:安装keepalived
两台服务器安装方法相同:
安装依赖包
#apt-get install  -y  libpopt-dev   openssl  libssl-dev
下载keepalived软件
#wget  http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
# tar zxvf keepalived-1.2.2.tar.gz
# cd keepalived-1.2.2
# ./configure
#make && make install

# mkdir  /etc/sysconfig
# cp /usr/local/etc/rc.d/init.d/keepalived  /etc/init.d/
# cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig/
# mkdir –p /etc/keepalived/scripts
# cp /usr/local/sbin/keepalived  /usr/sbin/


修改keepalived启动脚本:(如果是centos的,不需要次步骤,debian需要修改,)
vim  /etc/init.d/keepalived(修改红色部分)

……
<span style="color:#ff0000;">#. /etc/rc.d/init.d/functions
. /lib/lsb/init-functions</span>
# Source configuration file (we set KEEPALIVED_OPTIONS there)
. /etc/sysconfig/keepalived
RETVAL=0
prog="keepalived"
start() {
echo -n $"Starting $prog: "
<span style="color:#ff0000;"># keepalived ${KEEPALIVED_OPTIONS}
keepalived -D</span>
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && <span style="color:#ff0000;">touch /var/lock/$prog</span>
}
stop() {
echo -n $"Stopping $prog: "
killproc keepalived
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f <span style="color:#ff0000;background-color: rgb(255, 255, 255);">/var/lock/$prog</span>
}
……
condrestart)
if [ -f <span style="color:#ff0000;">/var/lock/$prog</span> ]; then
stop
start
fi
;;
……



主服务器配置:
#vim  /etc/keepalived/keepalived.conf

vrrp_script chk_redis6379_pid {
                script "/etc/keepalived/scripts/redis6379_check.sh"
                interval 2
                weight 2
}
#####
global_defs {
   notification_email {
     aaaa@bbbb.com
   }
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
####
vrrp_instance VI_1 {
        state Backup
        nopreempt
        priority 105
        interface eth0
        virtual_router_id 81
        mcast_src_ip 10.20.200.128
        authentication {
                     auth_type PASS
                     auth_pass 1111
        }
        track_interface {
           eth0
        }
        track_script {
                chk_redis6379_pid
        }
        virtual_ipaddress {
             10.20.200.130/16 dev eth0
        }
        notify  /etc/keepalived/scripts/master_backup.sh
}

#cd  /etc/keepalived/scripts
 
#vim redis6379_check.sh

#!/bin/bash
A=`ps -ef | grep redis-6379.conf| grep -v grep|wc -l`
if [ $A -eq 0 ];then
      cd /etc/keepalived/scripts
      ./redis6379_start.sh
      if [ `ps -ef | grep redis-6379.conf| grep -v grep|wc -l` -eq 0 ];then
              cd /etc/keepalived/scripts
             ./redis6379_start.sh
      fi
fi

# vim redis6379_start.sh

#!/bin/sh
##start##
/usr/local/bin/redis-server /redis/conf/redis-6379.conf


#vim  master_backup.sh
#!/bin/bash
 REDISCLI="/usr/local/bin/redis-cli"
VIP_IPADDR=`ip a | grep  10.20.200.130`

 

if [ "$VIP_IPADDR" != "" ];then
  $REDISCLI SLAVEOF  NO ONE  && $REDISCLI CONFIG REWRITE
fi

 
if [ "$VIP_IPADDR" ==  "" ];then
  $REDISCLI SLAVEOF 10.20.200.129 6379  && $REDISCLI  CONFIG SET save "900 1 300 10 60 10000" &&  $REDISCLI CONFIG REWRITE
fi

#chmod 711 /etc/keepalived/scripts/*




从服务器配置:
#vim /etc/keepalived/keepalived.conf

vrrp_script chk_redis6379_pid {
                script "/etc/keepalived/scripts/redis6379_check.sh"
                interval 2
                weight 2
}
#####
global_defs {
   notification_email {
     aaa@bbb.com
   }
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
####
vrrp_instance VI_1 {
        state Backup
        nopreempt
        priority 105
        interface eth0
        virtual_router_id 81
        mcast_src_ip 10.20.200.129
        authentication {
                    auth_type PASS
                    auth_pass 1111
        }
        track_interface {
           eth0
        }
        track_script {
                chk_redis6379_pid
        }
        virtual_ipaddress {
             10.20.200.130/16 dev eth0
        }
        notify  /etc/keepalived/scripts/master_backup.sh
}

#vim /etc/keepalived/scripts/redis6379_check.sh

#!/bin/bash
A=`ps -ef | grep redis-6379.conf| grep -v grep|wc -l`
if [ $A -eq 0 ];then
      cd /etc/keepalived/scripts
      ./redis6379_start.sh
      if [ `ps -ef | grep redis-6379.conf| grep -v grep|wc -l` -eq 0 ];then
              cd /etc/keepalived/scripts
             ./redis6379_start.sh
      fi
fi

#vim /etc/keepalived/scripts/redis6379_start.sh

#!/bin/sh
##start##
/usr/local/bin/redis-server /redis/conf/redis-6379.conf

#vim /etc/keepalived/scripts/master_backup.sh

#!/bin/bash
 
REDISCLI="/usr/local/bin/redis-cli"
VIP_IPADDR=`ip a | grep  10.20.200.130`

  
if [ "$VIP_IPADDR" != "" ];then
  $REDISCLI SLAVEOF  NO ONE  && $REDISCLI CONFIG REWRITE
fi

 
if [ "$VIP_IPADDR" ==  "" ];then
  $REDISCLI SLAVEOF 10.20.200.128 6379  && $REDISCLI  CONFIG SET save "900 1 300 10 60 10000" &&  $REDISCLI CONFIG REWRITE
fi

#chmod 711 /etc/keepalived/scripts/*

最后启动主从的keepalived即可。


/etc/init.d/keepalived  start
 


查看主从的redis是否已经启动,ip a查看vip地址是否启动。


 


如果redis主宕机了,会自动切换到从redis,从redis提升为主库,主库回复后,会自动变为从库,依次循环。
 Redis命令:
 Redis启动方法: redis-server  /redis/conf/redis-6379.conf
 Redis 关闭方法: redis-cli  shutdown
 验证主从是否同步:
 在主服务器操作:
 #redis-cli  -p 6379
>set  mouyu  aaa
>get  mouyu
aaa
  在从库服务器验证:
  #redis-cli  -p 6379
>get mouyu
aaa






查看主从配置状态:redis-cli   info  replication











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值