Redis高可用之主从复制、哨兵、cluster集群(下)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 一、Redis 高可用1.1 什么是高可用在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。

实验步骤:

7.1 所有节点安装Redis

参考上文第三节

7.2 开启集群功能

修改任意一台服务器配置文件,再通过scp命令传给其他主机。

cd /opt/redis-5.0.7/
vim redis.conf
......
bind 192.168.121.10                       #69行,修改为监听自己的物理网卡IP
protected-mode no                         #88行,修改为no,关闭保护模式
port 6379                                 #92行,redis默认监听端口
daemonize yes                             #136行,开启守护进程,以独立进程启动
appendonly yes                            #700行,修改为yes,开启AOF持久化
cluster-enabled yes                       #832行,取消注释,开启群集功能
cluster-config-file nodes-6379.conf       #840行,取消注释,群集名称文件设置
cluster-node-timeout 15000                #846行,取消注释,群集超时时间设置
#将文件传给另外5个节点,之后每个节点要修改监听地址为自己的IP
[root@localhost redis-5.0.7]# scp redis.conf 192.168.121.20:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.121.30:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.121.40:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.121.50:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.121.60:`pwd`
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


将配置文件传给另外5个节点:

网络异常,图片无法展示
|


之后每个节点要修改监听地址为自己的IP:

网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


7.3 所有节点启动redis服务

cd /opt/redis-5.0.7/
redis-server redis.conf   #启动redis节点
复制代码


网络异常,图片无法展示
|


7.4 启动集群

在任意一个节点启动集群即可。

redis-cli --cluster create 192.168.121.10:6379 192.168.121.20:6379 192.168.121.30:6379 192.168.121.40:6379 192.168.121.50:6379 192.168.121.60:6379 --cluster-replicas 1
#六个主机分为三组,三主三从,前面的做主节点后面的做从节点下免交互的时候需要输入yes才可以创建 "-replicas 1"表示每个主节点有一个从节点
#前三台为Master,后三台为Slave
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


7.5 测试集群

#加-c参数,节点之间就可以互相跳转  
redis-cli -h 192.168.121.10 -p 6379 -c 
#查看节点的哈希槽编号范围
cluster slots    
#赋值
set name yuji
#查看键的哈希槽编号  
cluster keyslot 键名
[root@mas ~]# redis-cli -h 192.168.121.10 -p 6379 -c
192.168.121.10:6379> cluster slots      #查看节点的哈希槽编号范围
1) 1) (integer) 10923         #第一对主从的哈希槽编号范围
   2) (integer) 16383
   3) 1) "192.168.121.30"     #主节点
      2) (integer) 6379
      3) "5f117a3e204d1d6f6dc924ad8b39034a8e9f3261"
   4) 1) "192.168.121.40"     #从节点
      2) (integer) 6379
      3) "4a05a086eec06fa4da58b15512d1c81184bc5ee5"
2) 1) (integer) 5461          #第二对主从的哈希槽编号范围
   2) (integer) 10922
   3) 1) "192.168.121.20"     #主节点
      2) (integer) 6379
      3) "3008bba29dfbf342bc448ba3062b0a331c8d009e"
   4) 1) "192.168.121.60"     #从节点
      2) (integer) 6379
      3) "ee61a4709d6420bb540b2c28218fdd2dfe358b7a"
3) 1) (integer) 0             #第三对主从的哈希槽编号范围
   2) (integer) 5460
   3) 1) "192.168.121.10"     #主节点
      2) (integer) 6379
      3) "d1ddb554b3edaebefa6672b2f1f8171393e1f7f3"
   4) 1) "192.168.121.50"     #从节点 
      2) (integer) 6379
      3) "71e1f705ce01ca31ab16fa3cf07d7e6cbfab5978"
192.168.121.10:6379>
#在10节点新建name键,会自动跳转到20节点进行存放     
192.168.121.10:6379> set name yuji  
-> Redirected to slot [5798] located at 192.168.121.20:6379
OK
192.168.121.20:6379> cluster keyslot name    #查看name键的哈希槽编号
(integer) 5798
192.168.121.20:6379> quit       #退出数据库
[root@mas ~]# redis-cli -h 192.168.121.10 -p 6379 -c     #重新登录10节点
192.168.121.10:6379> keys *     #10节点中没有name键
(empty list or set)
192.168.121.10:6379> get name    #查看name键的值,会根据键的哈希槽编号自动跳转到20节点进行获取
-> Redirected to slot [5798] located at 192.168.121.20:6379
"yuji"
192.168.121.20:6379>            #已跳转到20节点
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


总结

三种模式需要注意修改不同的配置文件。

主从复制:vim /etc/redis/6379.conf

哨兵模式:vim /opt/redis-5.0.7/sentinel.conf

cluster集群:vim /opt/redis-5.0.7/redis.conf

相关实践学习
基于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
相关文章
|
4月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
132 2
基于Redis的高可用分布式锁——RedLock
|
23天前
|
存储 NoSQL Redis
redis主从集群与分片集群的区别
主从集群通过主节点处理写操作并向从节点广播读操作,从节点处理读操作并复制主节点数据,优点在于提高读取性能、数据冗余及故障转移。分片集群则将数据分散存储于多节点,根据规则路由请求,优势在于横向扩展能力强,提升读写性能与存储容量,增强系统可用性和容错性。主从适用于简单场景,分片适合大规模高性能需求。
36 5
|
4月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
169 0
|
2月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
45 3
|
3月前
|
NoSQL 网络协议 Redis
Redis的主从复制和哨兵模式
本文详细介绍了Redis的主从复制配置、原理(包括全量复制和增量复制)以及如何搭建一主二从的Redis集群,同时还探讨了Redis哨兵模式的概念、配置文件、以及如何配置一主二从三哨兵的Redis哨兵模式,以实现高可用性。
|
4月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Azure Redis Cluster 在增加分片数时失败分析
【Azure Redis 缓存】Azure Redis Cluster 在增加分片数时失败分析
|
4月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Windows版创建 Redis Cluster 实验 (精简版)
【Azure Redis 缓存】Windows版创建 Redis Cluster 实验 (精简版)
|
存储 运维 负载均衡
Redis Cluster集群原理+三主三从交叉复制实战+故障切换
Redis Cluster集群原理+三主三从交叉复制实战+故障切换
2049 0
Redis Cluster集群原理+三主三从交叉复制实战+故障切换
|
4月前
|
存储 NoSQL 算法
深入理解Redis分片Cluster原理
本文深入探讨了Redis Cluster的分片原理,作为Redis官方提供的高可用性和高性能解决方案,Redis Cluster通过数据分片和横向扩展能力,有效降低单个主节点的压力。
深入理解Redis分片Cluster原理
|
7月前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
72 0