接上一节内容,本节我们将初步测试一下这个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集群理论及实践【中】相关推荐

  1. Redis Cluster集群的搭建与实践[转]

    Redis Cluster集群的搭建与实践 Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后 ...

  2. Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  3. Redis Cluster集群知识学习总结

    Redis集群解决方案有两个: 1)  Twemproxy: 这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前很多应用者都在采用的解决方案.Twem ...

  4. redis cluster 集群 HA 原理和实操(史上最全、面试必备)

    文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...

  5. Redis——cluster集群原理

    摘要 在 redis3.0之前,redis使用的哨兵架构,它借助 sentinel 工具来监控 master 节点的状态:如果 master 节点异常,则会做主从切换,将一台 slave 作为 mas ...

  6. redis映射的概念_搭建分布式Redis Cluster集群与Redis入门

    目录 Redis 集群搭建Redis 是啥集群(Cluster)Redis Cluster 说明Redis Cluster 节点Redis Cluster 集群模式不能保证一致性创建和使用 Redis ...

  7. Redis cluster集群原理与配置

    Redis cluster集群原理与配置 一.cluster集群原理 1.数据迁移 过程 2.复制以及故障转移 故障检测 故障转移 二.配置cluster集群 1.创建文件夹 2.编辑 7001.co ...

  8. redis cluster集群选主

    redis 选主过程分析  当slave发现自己的master变为FAIL状态时,便尝试进行Failover,以期成为新的master.由于挂掉的master可能会有多个slave.Failover的 ...

  9. Ubuntu 16.04下Redis Cluster集群搭建(官方原始方案)

    前提:先安装好Redis,参考:http://www.cnblogs.com/EasonJim/p/7599941.html 说明:Redis Cluster集群模式可以做到动态增加节点和下线节点,使 ...

  10. centos7 docker-compose安装_Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

最新文章

  1. 总经费8.4亿的上海市脑科学重大专项进展如何?且看2019年度工作汇报会
  2. 数据库存储字符超过2000处理办法;
  3. c语言程序结果 856400,C语言程序设计答案(黄保和编)第3章.pdf
  4. 俄罗斯机器人雄鹿_在雄鹿无球可打,在火箭重获新生!哈登,你又让一人打出身价...
  5. linux中export与source的作用
  6. Android中动态的更改selector中某张图片的属性
  7. 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏
  8. html把切片变成div,关联网页自动切片生成Div+Css软件
  9. linux emule 编译 wx-config --libs,Linux下的wxWidgets静态编译实现方法
  10. spring boot 整合mybatis + swagger2
  11. 39. 后台模块开发(4)
  12. 三种短链接生成源码-iApp源码
  13. 微软应用商店下载应用教程(附带power shell命令)
  14. MAC m1芯片 Ubuntn配置过程
  15. selenium模拟点击爬取微博评论消息
  16. win7系统中如何使文件显示出扩展名
  17. wh计算公式_阀门扭矩计算公式
  18. QT之隐藏任务栏图标
  19. 游戏编辑器制作(3)
  20. 解决ctrl+win+left/right失效问题(windows10桌面切换快捷键)

热门文章

  1. Mybatis工作中常用动态SQL总结
  2. Spring Cloud Hystrix Dashboard仪表盘 和 Turbine集群监控 (学习总结)
  3. mybatis-spring-struts2整合
  4. Mysql查询字段去除指定列重复数据
  5. Python入门学习资料分享
  6. MySQL SYS CPU高的案例分析(一)
  7. dockerfile 多端口映射 expose
  8. 如何为SUSE配置IP地址,网关和DNS
  9. XCode之第一次亲密接触
  10. HDOJ-2602 Bone Collector [DP-01背包问题]