谈一谈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 .
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 .
相关文章推荐
- 谈一谈redis集群(三)
- 谈一谈 redis 集群
- redis3.0.0 集群安装详细步骤
- redis集群的配置
- redis 集群搭建
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- centos6.7 搭建 redis集群
- mac下,redis集群的安装和配置
- redis集群搭建教程(以3.2.2为例)
- 给redis cluster集群加上认证功能
- redis集群&主从部署
- java操作redis3.0集群
- java操作redis数据库实例(redis集群)
- windows下部署Redis集群(傻瓜版)
- redis-sentinel集群(k8s脚本)
- Redis3.0.1集群环境搭建
- redis主从集群的搭建
- redis-cluster集群配置和主从
- Redis 单机集群搭建与远程访问开启
- Redis基础和集群