Redis之高可用方案

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis之高可用方案   Redis以其高效的访问速度著称。但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有链接瞬段,或者对slave重新执行slaveof命令,会导致slave机器从头开始同步一次master的数据,造成较大的开销。

Redis之高可用方案

Redis以其高效的访问速度著称。但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有链接瞬段,或者对slave重新执行slaveof命令,会导致slave机器从头开始同步一次master的数据,造成较大的开销。
 
以下描述了使用keepalived+redis主从的一种高可用方法。安装方法在这里就不赘述了,google之则可。
1. redis服务配置
主机     端口   角色
redis0 6379   master
redis1 6379   slave
 
2. keepalived的配置
redis0和redis1使用一个虚拟ip
 
并使用如下脚本监控redis服务是否存活。监控脚本:

 

 

[html]  view plain copy
 
  1. #!/bin/bash  
  2. /usr/local/bin/redis-cli -h 192.168.1.53 -p 6379 info > /dev/null  
  3. if [ $? -eq 0 ]; then  
  4. echo "redis OK"  
  5. exit 0  
  6. else  
  7. echo "no redis service found!"  
  8. /usr/local/bin/redis-server /path/to/redis.conf  
  9.   
  10. # try to start it again  
  11. /usr/local/bin/redis-cli -h 192.168.11.53 -p 6380 info > /dev/null  
  12. if [ $? -eq 0 ]; then  
  13. exit 0  
  14. else  
  15.   
  16. # restart failed  
  17. killall keepalived  
  18. echo "error"  
  19. fi  
  20. fi  

 

要实现redis故障恢复,可以使用keepalived配置的notify_master, notify_backup这两个方法执行特有的脚本。实际上只要在slave(即redis1)上有2个脚本,第一个用于在redis1接管虚拟ip之后,执行slaveof no one把自己变成master。第二个用户在redis1交出虚拟ip之后,在redis0执行slaveof no one确保redis0恢复为主的状态,并对自己执行slaveof redis0 6379开始重新从master同步数据,如果自己已经是slave就没必要同步了。
 
redis1上keepalived的配置方法如下,redis0只要去掉notify_master, notify_backup两行即可。
[cpp]  view plain copy
 
  1. ! Configuration File for keepalived  
  2. global_defs {  
  3. router_id redis1  
  4. }  
  5. vrrp_script Monitor_Redis {  
  6.  script "/opt/redis_keepalive.sh"  
  7.  interval 10  
  8.  weight 2  
  9. }  
  10. vrrp_instance 360 {  
  11.  state BUCKUP #(主机为MASTER,备用机为BACKUP)  
  12.  interface eth0 #(HA监测网络接口)  
  13.  virtual_router_id 110 #(主、备机的virtual_router_id必须相同)  
  14.  mcast_src_ip 192.168.11.53 #(多播的源IP,设置为本机外网IP,与VIP同一网卡)此项可不设置  
  15.  priority 70 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高)  
  16.  advert_int 1 #(VRRP Multicast广播周期秒数)  
  17.  authentication {  
  18.   ......  
  19. }  
  20.  notify_master /opt/redis_2master.sh  
  21.  notify_backup /opt/redis_2backup.sh  
  22.  track_script {  
  23.  Monitor_Redis #(调用nginx进程检测脚本)  
  24. }  
  25.  virtual_ipaddress {  
  26.  192.168.11.4 #(VRRP HA虚拟地址)  
  27.  }  
  28. }  
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
393 2
|
3月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
4月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
129 2
基于Redis的高可用分布式锁——RedLock
|
5月前
|
监控 NoSQL Redis
Redis 哨兵模式高可用
Redis 哨兵模式高可用
89 4
|
6月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
70 0
|
2月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
39 3
|
7月前
|
负载均衡 监控 NoSQL
Redis的几种主要集群方案
【5月更文挑战第15天】Redis集群方案包括主从复制(基础,读写分离,手动故障恢复)、哨兵模式(自动高可用,自动故障转移)和Redis Cluster(官方分布式解决方案,自动分片、容错和扩展)。此外,还有Codis、Redisson和Twemproxy等工具用于代理分片和负载均衡。选择方案需考虑应用场景、数据量和并发需求,权衡可用性、性能和扩展性。
315 2
|
2月前
|
存储 NoSQL Java
Spring Boot项目中使用Redis实现接口幂等性的方案
通过上述方法,可以有效地在Spring Boot项目中利用Redis实现接口幂等性,既保证了接口操作的安全性,又提高了系统的可靠性。
56 0
|
5月前
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
178 1
|
6月前
|
NoSQL 算法 Java
技术好文:Redis实现分布式锁的7种方案
技术好文:Redis实现分布式锁的7种方案