keepalived实现redis主备切换

试验目标:

1:主redis发生故障时,从redis自动切换为主redis。

2:主redis恢复正常后,自动降级为从redis。

试验环境:

主redis:192.168.189.138

从redis:192.168.189.131

VIP:192.168.189.123

主从redis均安装了keepalived与redis,redis已配置好主从。Redis端口44444。

1:制作redis监控与主备切换脚本:

Redis监控脚本:(监控redis是否正常)

# cat /usr/local/scripts/redis_monitor.sh
#!/bin/bash    
ALIVE=$(/home/usr/local/redis/bin/redis-cli-h 192.168.189.138 -p 44444 PING)
if [ "$ALIVE" =="PONG" ]; then
echo $ALIVE
exit 0
else
echo $ALIVE
killall -9 keepalived
service network restart
exit 1
fi

redis_master脚本:(用于从redis切换成主redis)

# cat /usr/local/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/home/usr/local/redis/bin/redis-cli-h 192.168.189.138 -p 44444 "
LOGFILE="/home/usr/local/redis/var/keepalived-redis-state.log"
echo "[master]" >>$LOGFILE
date >> $LOGFILE
echo "Being master....">> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ...">> $LOGFILE
#指定自己为131的slave
$REDISCLI SLAVEOF 192.168.189.13144444 >> $LOGFILE  2>&1
#延迟10秒,用于数据同步
sleep 10                                      
echo "Run SLAVEOF NO ONE cmd..." >> $LOGFILE
#解除自己的slave状态,成为master
$REDISCLI SLAVEOF NO ONE >>$LOGFILE 2>&1

Redis_backup脚本:(用于主redis切换成从redis)

# cat /usr/local/scripts/redis_backup.sh
#!/bin/bash
REDISCLI="/home/usr/local/redis/bin/redis-cli-h 192.168.189.138 -p 44444"
LOGFILE="/home/usr/local/redis/var/keepalived-redis-state.log"
echo "[backup]" >>$LOGFILE
date >> $LOGFILE
echo "Being slave....">> $LOGFILE 2>&1
sleep 15
echo "Run SLAVEOF cmd ...">> $LOGFILE
$REDISCLI SLAVEOF 192.168.189.13144444 >> $LOGFILE  2>&1

以上是主redis上的脚本,从redis上的脚本只要更改脚本中相应的IP。

2:配置keepalived

主节点:

# cat /usr/local/keepalived/etc/keepalived/keepalived.conf
global_defs {
 router_id LVS_DEVEL
}
vrrp_script redis_monitor {                ------监控脚本
 script"/usr/local/scripts/redis_monitor.sh"
 interval 2 
 weight 2 
}
vrrp_instance VI_1{ 
 state BACKUP                     --------状态同备用节点一致,为BACKUP
 interface eth0
 virtual_router_id 51 
 mcast_src_ip 192.168.189.138
 nopreempt                      ----------设置不抢占IP
 priority 100                   ----------优先级
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass password_123
}
 track_script {
 redis_monitor                   -------与上面的监控脚本一致
}
 virtual_ipaddress {
 192.168.189.123
 }
 notify_master/usr/local/scripts/redis_master.sh   -------keepalived切换为master时运行
 notify_backup/usr/local/scripts/redis_backup.sh   -------keepalived切换为slave时运行
}

从节点:

# cat /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
 router_id LVS_DEVEL
}
vrrp_script redis_monitor{
 script"/usr/local/scripts/redis_monitor.sh"
 interval 2 
 weight 2 
}
 
vrrp_instance VI_1{ 
 state BACKUP                     ----------与主节点一致,BAKCUP
 interface eth0
 virtual_router_id 51 
 mcast_src_ip 192.168.189.131
 priority 99                     -----优先级小于主节点
 advert_int 1 
 authentication {
 auth_type PASS
 auth_pass password_123
}
 track_script {
 redis_monitor 
}
 virtual_ipaddress {
 192.168.189.123
 }
notify_master/usr/local/scripts/redis_master.sh
notify_backup/usr/local/scripts/redis_backup.sh
}

3:开启redis与keepalived

# /usr/local/redis/bin/redis-server /home/usr/local/redis/etc/redis.conf
# /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf

4:观察测试

 启动redis-server后,可以看到138主机抢占了VIP123,并且redis角色为Master

131主机没抢占到123IP,redis角色为Slave

主节点上配置数据,查看从节点是否同步。

主:

从:

以上可看出主备数据同步正常。

1,关闭主redis,查看从节点是否抢占IP,从redis是否变为主redis

#/home/usr/local/redis/bin/redis-cli -h 192.168.189.138 -p 44444 shutdown

查看从节点日志:

以上日志显示131节点抢占到了IP123,成为keepalived主节点。

以上日志显示131节点的redis角色变为Master。

查看131redis角色状态:

131的redis已经成功从slave变为master。

2,恢复138原主节点的redis状态,测试原来的主redis是否会自动降级为slave。

在主节点上重新开启keepalived,和redis(注意要先开启redis,再开启keepalived)。

# /home/usr/local/redis/bin/redis-server /home/usr/local/redis/etc/redis.conf
# /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf

查看138节点日志:

 可以看到keepalived原主节点自动进入BACKUP状态,并未抢占123VIP。

Redis角色也自动变更为Slave。

查看主备redis角色:

试验目标完成!

时间: 2024-11-07 11:53:03

keepalived实现redis主备切换的相关文章

测试redis+keepalived实现简单的主备切换

转自: 测试redis+keepalived实现简单的主备切换 - Try My Best 尽力而为 - ITeye技术网站http://raising.iteye.com/blog/2311757 keepalived是一个是集群管理中保证集群高可用的一个服务软件,它具备心跳检测的功能.运用在redis上,则是具备主备切换的控制功能. keepalived的主备切换方案的设计思想如下: 当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby: 当 

Redis安装,主从,主备切换

网络环境: 主:10.187.120.5 从:10.187.69.58 从:10.187.69.59 一.安装 mv redis-2.8.19.tar.gz /export/servers/ cd /export/servers/ tar zxf redis-2.8.19.tar.gz cd redis-2.8.19 make && make install 二,主从环境搭建 主:10.187.120.5 conf/redis_6379.conf (src/redis-server con

Redis主备自动切换

Sentinel(哨兵)是用于监控redis集群中Master状态的工具. 一.Sentinel作用  1.Master状态检测   2.如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave;  3.Master-Slave切换后,master_redis.conf.slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,se

Nginx+Keepalived主备切换(包含nginx服务停止)

原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4台CentOS 本机PC充当测试机win8 步骤: 1.搭建 nginx+keepalived主备切换(不考虑主nginx停掉现象)文章中的环境 2.修改两台部署的keepalived的配置文件 3.编写观察nginx进程情况的脚本内容 #!/bin/bash A=`ps -C nginx --no

mysql主从配置&&基于keepalived的主备切换

mysql互为主从设置 && 主备切换配置 需求说明: 1.公司架构一直是一台单独的mysql在线上跑,虽然一直没有出现什么宕机事件,但是出于一个高可用的考虑,提出主从备份.主备切换的需求: 2.实现这个需求的前一段时间只是在做数据库备份的时候实现了主从热备,为了实现主备切换功能,继续操作上述需求: 实验环境: master1:10.1.156.3:3306 master2:10.1.156.5:3306 my.cnf配置文件关于主从这块的修改: master1: server-id =

Keepalived中Master和Backup主备切换机制浅析

在keepalived的VRRP实例配置中会一般会设置Master和Backup来指定初始状态,但是这并不意味着此节点一直就是Master角色.控制节点角色的是Keepalived配置文件中的"priority"值和vrrp_script模块中设置的"weight"值.下面分别分情况对主备机切换机制作详细说明. 配置简介: 主机 IP 操作系统 软件 VIP 备注 nginx01 172.27.9.91 Centos7 keepalived nginx 172.27

DRBD主备切换

DRBD主备切换 在系统维护的时候,或者在高可用群集中,当主用节点出现故障的时候,就需要将主备节点的角色互换,主备节点切换有两种形式,分别是停止DRBD服务切换和正常切换 (1) 停止DRBD服务切换 关闭主用节点服务,此时挂载的DRBD分区就自动在主用节点卸载了,操作如下, /etc/init.d/drbd stop cat /proc/drbd (细节请看http://liumingyuan.blog.51cto.com/9065923/1712824) 从输出结果可以看到,现在主用节点的状

主备切换,双机热备,负载均衡,nginx

MySQL主备切换 数据库由主服务器和备份服务器组成,主备同时运行,主服务器有数据改动后,立刻会同步到备份服务器.在日常运维中,为了防患未然,切换的操作只需要将连接池中数据库服务器的IP换成备份服务器的IP就可以了.Nginx高性能的http和反向代理服务,能实现主备切换工作. 双机热备 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备 方式(Active-Standby方式)和双主机方式(Activ

LVS+Keepalived负载均衡主备

LVS+Keepalived 介绍LVSLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). KeepalviedKeepalived在这里主要用作RealServer的健康状态检查以及LoadBal