配置了两台redis主从failover

来源:互联网 发布:东航巴黎昆明 知乎. 编辑:程序博客网 时间:2024/05/01 23:35
使用keepalived+lvs配置了两台redis,

用作主从failover,

192.168.56.101:6380工作机器1 ;部署redis1 keepalived 1

192.168.56.102:6380工作机器2;部署redis1 keepalived 1

192.168.56.103对外开放的访问VIP

效果:两台机器中有任何一台keepalived挂掉后,另外一台keepalived会争抢VIP,同时运行切换脚本,保证了VIP服务的可用性

客户端只要连接VIP就可以透明使用redis.

缺点:如果只是redis挂掉,keepalived没挂掉,则切换不成功 


-----------------------------------keepalived配置-----------------------------------------

文件/etc/keepalived/keepalived.conf

vrrp_script chk_redis {                script "/home/proxy/keep2machine2redis/scripts/redis_check.sh" 2                interval 2}vrrp_instance VI_1 {        state SLAVE                                     interface eth3                                     virtual_router_id 51        priority 150 nopreempt                                        authentication {                     auth_type PASS                    auth_pass redis         track_script {                chk_redis         }        virtual_ipaddress {             192.168.56.103                                }        notify_master /home/proxy/keep2machine2redis/scripts/redis_master.sh        notify_backup /home/proxy/keep2machine2redis/scripts/redis_backup.sh        notify_fault  /home/proxy/keep2machine2redis/scripts/redis_fault.sh        notify_stop   /home/proxy/keep2machine2redis/scripts/redis_stop.sh}

  

redis状态与主从切换脚本

/home/proxy/keep2machine2redis/scripts

检测存活脚本

#!/bin/bashecho "going PING 6380" >>/home/proxy/keep2machine2redis/log.txtALIVE=`/home/cache/redis6380/src/redis-cli -p 6380 PING`echo  "6380" $ALIVE  >>/home/proxy/keep2machine2redis/log.txtif [ "$ALIVE" == "PONG" ]; then    echo $ALIVE  exit 0else  echo $ALIVE  exit 1fi

切换本机redis为主机脚本

#!/bin/bashREDISCLI="/home/cache/redis6380/src/redis-cli -p 6380"LOGFILE="/home/proxy/keep2machine2redis/log.txt"echo "[master]" >> $LOGFILEdate >> $LOGFILEecho "Being master...." >> $LOGFILE 2>&1echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 192.168.56.102 6380 >> $LOGFILE  2>&1sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

切换本机为从 脚本

#!/bin/bashREDISCLI="/home/cache/redis6380/src/redis-cli -p 6380 "LOGFILE="/home/proxy/keep2machine2redis/log.txt"echo "[backup]" >> $LOGFILEdate >> $LOGFILEecho "Being slave....wait" >> $LOGFILE 2>&1sleep 5 echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 192.168.56.102 6380 >> $LOGFILE  2>&1


需要解决的问题:

1.keepalived是多久检测一次redis状态,是否可以心跳?

2.我试图在同一个keepalived配置中配置两个vrrp实例,但是这样启动有问题,查看ip addr发现vip没绑定上

3.我本来是用keepalived -f configFile.conf 的启动方式,但是查看/etc/log/message  发现三个进程中有一个child process faild,启动失败,

后来是用默认的配置文件位置就好了。。。。



0 0