(8)Redis-Cluster集群理论及实践【中】
接上一节内容,本节我们将初步测试一下这个Redis集群【集群存值变化,以及主节点的挂掉和重启时,对应集群状态变化】。
1、测试连接集群
按照redis cluster的特点,它是去中心化,去中间件,每个节点都是对等的。所以,你连接哪个节点都可以获取和设置数据,我们来试一下。
redis-cli是redis默认的客户端工具,启动时加上`-c`参数,就可以连接到集群【“-c”,这个参数表示我们将打开集群的一个客户端】。
连接任意一个节点端口:
存入一个值:
由先前的理论知识,Redis集群在分配key的时候,它会使用CRC16('my_name')%16384算法计算出一个结果值,根据这个值与节点哈希槽的范围进行比对,进而决定将这个key 放到哪个节点,这里分配到了12803 slot 就分配到了6383(10923-16383)这个节点上。
Redirected to slot [12803] located at 192.168.72.134:6383
Redis cluster采用的方式比较直接,它直接跳转到6383这个节点上,而不是停留在自身的6381节点。
现在我们连接6385这个从节点,从这个节点客户端查询刚才存入的值:
我们在6385这个节点客户端上,同样是获取my_name的值,而它同样也是跳转到了6383节点上。
test others:
可以看出,数据都会在集群的主节点之间相互跳转进行存储。
2、测试集群中的master主节点宕机
模拟其中一台Master主服务器节点已死的情况,那就6384节点宕机:
可以看到,集群中6384这个节点已死,因为6384的从节点只有6381,理论上,肯定6381就会被选举称Master节点了,那么我们检查一下集群节点状态:
./redis-trib.tb check 192.168.72.134:6381 |
果然,6381被选举出来,成了替代6384的主节点了。那我们来获取原先存在6384节点的数据:
数据并没有丢失,而是从6381上面获取了。
3、测试集群中的宕机master节点重启
这个时候,突然集群中刚才宕机的6384节点又重启了,那么6384这个节点还会自动加入到集群中吗?此时,6384这个节点在集群中充当什么角色呢?
重新启动 6384节点:
我们看到,集群中6384这个节点已经重启,现在查询一下集群节点状态:
./redis-tirb.tb check 192.168.72.134:6384 |
6384节点重启了,但是它却成为6381的从节点,验证了之前我们的理论分析结果图:
即,集群中master节点挂掉之后,它名下slave节点将被选举顶替master成为新的主节点;
如果已挂的master节点再次启动加入集群,这个时候将作为新的从节点分配给已选举出的新master节点。
4、测试集群中的slave从节点宕机和重启
这里关于slave节点的挂掉和重启时,集群状态变化,可参考上述测试进行,不再赘述。
从节点宕机,因为其并未分配哈希槽,并不影响其附属的master节点状态。
从节点重启,集群将根据现有master节点下从节点存活情况,灵活地安排重启节点附加给没有slave节点的master上。
下一节,我们测试在集群中新增、删除master/slave节点时,集群的变化情况。
(8)Redis-Cluster集群理论及实践【中】相关推荐
- Redis Cluster集群的搭建与实践[转]
Redis Cluster集群的搭建与实践 Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后 ...
- Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- Redis Cluster集群知识学习总结
Redis集群解决方案有两个: 1) Twemproxy: 这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前很多应用者都在采用的解决方案.Twem ...
- redis cluster 集群 HA 原理和实操(史上最全、面试必备)
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...
- Redis——cluster集群原理
摘要 在 redis3.0之前,redis使用的哨兵架构,它借助 sentinel 工具来监控 master 节点的状态:如果 master 节点异常,则会做主从切换,将一台 slave 作为 mas ...
- redis映射的概念_搭建分布式Redis Cluster集群与Redis入门
目录 Redis 集群搭建Redis 是啥集群(Cluster)Redis Cluster 说明Redis Cluster 节点Redis Cluster 集群模式不能保证一致性创建和使用 Redis ...
- Redis cluster集群原理与配置
Redis cluster集群原理与配置 一.cluster集群原理 1.数据迁移 过程 2.复制以及故障转移 故障检测 故障转移 二.配置cluster集群 1.创建文件夹 2.编辑 7001.co ...
- redis cluster集群选主
redis 选主过程分析 当slave发现自己的master变为FAIL状态时,便尝试进行Failover,以期成为新的master.由于挂掉的master可能会有多个slave.Failover的 ...
- Ubuntu 16.04下Redis Cluster集群搭建(官方原始方案)
前提:先安装好Redis,参考:http://www.cnblogs.com/EasonJim/p/7599941.html 说明:Redis Cluster集群模式可以做到动态增加节点和下线节点,使 ...
- centos7 docker-compose安装_Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
最新文章
- 总经费8.4亿的上海市脑科学重大专项进展如何?且看2019年度工作汇报会
- 数据库存储字符超过2000处理办法;
- c语言程序结果 856400,C语言程序设计答案(黄保和编)第3章.pdf
- 俄罗斯机器人雄鹿_在雄鹿无球可打,在火箭重获新生!哈登,你又让一人打出身价...
- linux中export与source的作用
- Android中动态的更改selector中某张图片的属性
- 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏
- html把切片变成div,关联网页自动切片生成Div+Css软件
- linux emule 编译 wx-config --libs,Linux下的wxWidgets静态编译实现方法
- spring boot 整合mybatis + swagger2
- 39. 后台模块开发(4)
- 三种短链接生成源码-iApp源码
- 微软应用商店下载应用教程(附带power shell命令)
- MAC m1芯片 Ubuntn配置过程
- selenium模拟点击爬取微博评论消息
- win7系统中如何使文件显示出扩展名
- wh计算公式_阀门扭矩计算公式
- QT之隐藏任务栏图标
- 游戏编辑器制作(3)
- 解决ctrl+win+left/right失效问题(windows10桌面切换快捷键)