谈一谈redis集群(二)

Redis在集群时,你们比较关心的有二点: 1.高并发性性 2.高可用性redis

上一次讲redis集群时,只要集群节点的数量增长,就能够提升并发性。今天来聊聊redis 集群时的可用性。此次模拟生产环境中redis的节点崩溃或者失去链接,这个节点恰巧是master,验证集群的可用性.windows

测试场景 windows , 3个redis 节点  127.0.0.1:7001(slaver) ,127.0.0.1:7002(master) , 127.0.0.1:7003(slaver)。并发

首先,启动节点及哨兵文件,具体方法再也不详细说明,详见上一篇 谈一谈 redis 集群.高并发

 7002做为master,咱们看一下7002的启动日志:测试

7002 完成对 7001 ,7003 的集群。.net

测试一下数据,首先在7002中,加了一条记录: yu3 lei3debug

查看7001,7003的数据:日志

2个slaver都是数据从无到有,集群已经完成。server

如今测试一下把 7002这个master down掉,看看会发生什么。blog

执行命令:redis-cli -p 7002 debug sleep 100 

让7002这个主节点休息100秒。

这个时候主节点休眠的状况下测试redis集群是否能够工做。客户端试着向7001插入一条记录

刚开始查询一下redis内存,提示 链接停止了. 设想一下,为何client会断开,是由于master崩溃而断开吗?

我感受不像,redis server一直开着工做正常,仅仅是client断开,强制client 做一次reset. 接下来咱们重连 插入一条记录。

再来看一下7003:

一样也须要重连client, slave7001插入的记录在slave7003获取到了。

这时7002的休眠也结束了,看一下7002中的数据

7002这个原来的master获取到了7001slave的数据。

这证实了咱们的集群在master崩溃时,仍然能够工做的. redis集群的的可用性真的很强大.

看一下7001的server日志:

能够看出7001 经历了3个过程:1.做为slave,并从master7002同步了47字节的数据

2.发现访问不到master7002了

3. 成为master开始同步7003,过了大概106秒左右(咱们将7002休眠了100秒),

又开始同步7002.

看下7002 的server日志:

刚开始是master,后来断开了链接,最后成为了slave.

再看一下7003的log:

sentinal 7001日志: 

sentinal 7002日志: 

sentinal 7003日志: 

日志比较多,能够大概看一下quorum, 这是动物园饲养员的技能。还有epoch, 更加肯定了。

此次日志不少,整理一下日志显示出来的结果。

3个redis 节点 7001 7002(master) 7003作集群。

7002 休眠100秒,7001成为新master ,7003仍是slave,7002 醒来时7001已经成为新一代的master,7002 再也不继续作master而成为slave .

相关文章
相关标签/搜索