redis集群和redis哨兵模式

redis集群和redis哨兵模式

RedisCluster相关知识
(1)RedisCluster概念
RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题
(2)分布式数据库概念
分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节点上,每个节点负责整体数据的一个子集
在这里插入图片描述

(3)本次只使用了哈希分区规则。哈希分区需要借助哈希函数,首先将分区进行编号,然后通过哈希函数来计算确定分区内存储的数据,这种方法要求数据在分区上的分布是均匀的,用户设定哈希函数来对数据进行分区。
(4)虚拟槽分区(槽:slot)
RedisCluster采用此分区,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16383槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据
哈希函数: Hash()=CRC16[key]&16383 按位与 槽与节点的关系如下。
redis用虚拟槽分区原因:解耦数据与节点关系,节点自身维护槽映射关系,分布式存储。

在这里插入图片描述
在这里插入图片描述

(5)redisCluster的缺陷:
a,键的批量操作支持有限,比如mset, mget,如果多个键映射在不同的槽,就不支持了
b,键事务支持有限,当多个key分布在不同节点时无法使用事务,同一节点是支持事务
c,键是数据分区的最小粒度,不能将一个很大的键值对映射到不同的节点
d,不支持多数据库,只有0,select 0
e,复制结构只支持单层结构,不支持树型结构。
RedisCluster部署相关
在这里插入图片描述

(1)redis准备
1.1:安装redis,使用附件配置文件
1.2:启动redis,cd /redis-config目录/ && redis-server redisxxx.conf
(2)安装ruby相关依赖程序
2.1:使用附件ruby压缩包解压(unzip -OCP936 xxx.zip)并且安装rpm -Uvh --force --nodeps *rpm
(3)安装redis-3.0.0.gem
3.1:使用附件安装,gem install redis-3.0.0.gem
(4)集群创建
进入到redis源码下的src目录执行以下命令
./redis-trib.rb create --replicas 1 192.168.0.xxx:6380 192.168.0.xxx:6381 192.168.0.xxx:6382 192.168.0.xxx:6390 192.168.0.xxx:6391 192.168.0.xxx:6392
在这里插入图片描述

RedisCluster测试相关

(1)RedisCluster集群搭建完毕,编写python自测代码
(2)测试
1)RedisCluster的3个master节点和3个slave节点都在线的情况下,执行测试代码得到以下结果:在这里插入图片描述

2)RedisCluster的6381(master)节点被杀死后,查看集群状态会发现6381对应的slave节点6391已经变成master节点。执行测试代码得到以下结果,集群正常运行
在这里插入图片描述
在这里插入图片描述

3)RedisCluster的6381和6391节点都被杀死后,查看集群状态,并且执行测试代码得出结论为:如果3个master节点任意一个被杀死后,槽不是一个完整的槽因此集群不可用了。如果要使用可以手动迁移槽后即可用。
在这里插入图片描述
在这里插入图片描述

4)根据3,启动6391节点后查询集群状态,并且执行代码
在这里插入图片描述
在这里插入图片描述

RedisCluster测试后结论
经过以上测试结论得出:使用该集群必须保证槽点的完整性才能使集群可用,如果,某一段槽点丢失后集群为不可用状态。

redis-trib.rb命令详解参考:https://www.cnblogs.com/ivictor/p/9768010.html

Redis哨兵模式
(1)哨兵模式概述
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
在这里插入图片描述

这里的哨兵有两个作用:
1:通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
2:当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

用文字描述一下故障切换(failover)的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。
哨兵模式部署

(1)安装redis,修改配置文件,1master,2slave
在这里插入图片描述在这里插入图片描述在这里插入图片描述

(2)搭建哨兵模式,编辑sentinel.conf配置文件
(3)启动哨兵:redis-sentinel sentinel.conf或则
./redis-sentinel …/…/config/sentinel.conf
redis-sentinel为源码src下
需要启动3个哨兵
(4)验证:杀死主节点,然后确认master节点是否转移
在这里插入图片描述
在这里插入图片描述

(5)测试
1.6380节点为master节点,6381和6382为slave节点
在这里插入图片描述

2.杀死6380节点,保留6381和6382,确认master转移
在这里插入图片描述

3.重新启动6380,确认master节点是否转移,master节点依旧是2里的6381.

在这里插入图片描述

(6)结论
Redis哨兵模式,如果master节点宕机后,3个Sentinel服务会在剩余的slave中选举一个作为master节点。
rediscluster哨兵模式比较:https://www.cnblogs.com/leffss/p/11993646.html

参考:https://www.cnblogs.com/ysocean/p/12290364.html
https://www.cnblogs.com/albert32/p/13393382.html

相关配置文件和测试代码:https://pan.baidu.com/s/1w5k9dtx6ZjhvS2nLs1hY8A 提取码:mm6w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值