• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Redis双机热备方案

mysql 搞代码 4年前 (2022-01-09) 27次浏览 已收录 0个评论

参考资料:http://patrick-tang.blogspot.com/2012/06/redis-keepalived-failover-system.htmlhttp://deidara.blog.51cto.com/400447/302402http://my.oschina.n

参考资料:

 

 

背景

 

目前,Redis集群的官方方案还处在开发测试中,未集成到稳定版中。且目前官方开发中的Redis Cluster提供的功能尚不完善(可参考官方网站或),在生产环境中不推荐使用。通过调研发现市面上要实现采用单一的IP来访问,大多采用keepalived实现redis的双机热备作为过渡方案。

 

环境部署

 

环境介绍:   
Master: 192.168.1.218     redis,keepalived    
Slave: 192.168.1.219        redis,keepalived    
Virtural IP Address (VIP):  192.168.1.220

 

设计思路:

两个redis server主从备份。提供redis 服务高可用;两个keepalived 服务主从备份,提供VIP 服务的高可用。

1)每台redis server分别有主,从两个配置文件(redis_master.conf, redis_slave.conf),通过启动脚本启动服务,启动脚本会检测这个redis集群中的其他服务器的角色,如果有master 服务存在,则以slave角色启动,否则将自己以master服务器启动;

2) keepalived 监控脚本,定时(频率:每秒一次)检测当前服务器是否获取集群VIP,如果获取集群VIP,则将本服务器上的redis服务器设置为master。同时将远端的其他redis服务器设置为slave;保证获取集群VIP的redis 服务器角色为master,其他的设置为slave。

3) keepalived 监控脚本,还会自动检测当前redis服务器是否正常,如果连续两次检测异常,则停掉本本机的keepalived服务,释放集群VIP,让去漂移到其他可以提供redis 服务的服务器上;

4)当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责同步数据;当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从本文来源gaodai$ma#com搞$代*码6网复制功能;当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,于此同时Slave等待Master同步数据完成之后,恢复Slave身份。然后依次循环。

 

实施步骤:

—-创建专用用户

useradd -g develop redisadmin   
echo Hisun@1125|passwd –stdin redisadmin

说明:以下部署过程都是在root(或具备sudo权限的账号)账户下进行。

—-安装配置redis

1.下载redis源码

cd

wget

2.安装redis

tar -zxvf redis-2.8.3.tar.gz

cd redis-2.8.3

#reds的安装可以不用执行configure

make

#测试

make test

####在速度较慢的机器上执行make test可能出现下列错误,无影响

#*** [err]: Test replication partial resync: no backlog in tests/integration/replication-psync.tcl

3.配置redis

#创建redis主目录

mkdir -p /usr/local/redis-2.8.3/{bin,conf,logs}

cp -a -R -p src/redis-server /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-cli /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-benchmark /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-sentinel /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-check-dump /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-check-aof /usr/local/redis-2.8.3/bin/

#创建redis启动脚本

vi /usr/local/redis-2.8.3/redis-start.sh

####以下为master上的配置,slave上的配置只需要修改对应的LOCALIP和REMOTEIP即可。

#!/bin/bashREDISPATH=/usr/local/redis-2.8.3REDISCLI=$REDISPATH/bin/redis-cliLOGFILE=$REDISPATH/logs/redis-state.logLOCALIP=192.168.1.218REMOTEIP=192.168.1.219REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep “role“`if grep “role:master” <<< $REMOTEREDISROLE ; then#start as slave$REDISPATH/bin/redis-server $REDISPATH/conf/redis_slave.confif [ “$?” == “0” ];thenecho “[INFO]`date +%F/%H:%M:%S` :$LOCALIP start as slave successful.” >> $LOGFILEelseecho “[ERROR]`date +%F/%H:%M:%S` :$LOCALIP start as slave error.” >> $LOGFILEfielse#start as master$REDISPATH/bin/redis-server $REDISPATH/conf/redis_master.confif [ “$?” == “0” ];thenecho “[INFO]`date +%F/%H:%M:%S` :$LOCALIP start as master successful.” >> $LOGFILEelseecho “[ERROR]`date +%F/%H:%M:%S` :$LOCALIP start as master error.” >> $LOGFILEfifi

#创建redis关闭脚本

vi /usr/local/redis-2.8.3/redis-stop.sh

####以下为master上的配置,slave上的配置相同。

#!/bin/bashREDISPATH=/usr/local/redis-2.8.3LOGFILE=$REDISPATH/logs/redis-state.logkill -9 `ps -ef|grep ‘/bin/redis-server’|grep -v grep|awk ‘{print $2}’`if [ “$?” == “0” ];thenecho “[INFO]`date +%F/%H:%M:%S` :redis shutdown completed!” >> $LOGFILEelseecho “[ERROR]`date +%F/%H:%M:%S` :redis is not started.” >> $LOGFILEfi

#创建redis配置文件

cp -a -R -p redis.conf /usr/local/redis-2.8.3/conf/redis_master.conf

cp -a -R -p redis.conf /usr/local/redis-2.8.3/conf/redis_slave.conf

#修改redis_master.conf对应配置项:

####192.168.1.218主服务器redis_master.conf对应配置项#######daemonize nodaemonize yes#bind 127.0.0.1bind 192.168.1.218logfile “/usr/local/redis-2.8.3/logs/redis.log“#其他配置依据实际生产环境修改############################################################192.168.1.219从服务器redis_master.conf对应配置项#######daemonize nodaemonize yes#bind 127.0.0.1bind 192.168.1.219logfile “/usr/local/redis-2.8.3/logs/redis.log“#其他配置依据实际生产环境修改########################################################

#修改redis_slave.conf对应配置项:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Redis双机热备方案

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址