您的位置:首页 > 数据库 > Redis

谈一谈redis集群(二)

2017-01-30 00:00 330 查看
摘要: redis 集群 高并发 高可用性

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

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

测试场景 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 的集群。

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



查看7001,7003的数据:





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

现在测试一下把 7002这个master down掉,看看会发生什么。

执行命令: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 .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息