redis集群(5.0版本以前)的搭建,请参考笔者的这篇

redis集群(5.0版本以后)的搭建,请参考笔者的这篇

 

简言

1.本篇博客讲解redis集群的操作实验

2. 实验例子如集群的查看 : cluster info  ; cluster 

 

示范

1. 单点故障时,集群的自动修复 -- 当某个redis主节点挂掉时,剩余的主节点会自动从其从节点中选举出一个作为主节点

redis集群刚建立时,主从情况如下

8001        <-        8006

8002        <-        8004

8003        <-        8005

centos7 redis5.0以前版本 部署集群示例 - 第二篇_单点故障

我们连接进8002的redis,执行命令 cluster nodes 可以看到集群目前的状态,master表主节点的意思,后面的数字表该节点负责的slot范围

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis_02

可以看到当前的6个redis进程如下

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis集群_03

现在我们执行 kill -9 杀掉8002的进程,执行后可以看到只剩下5个redis进程了,因为8002的进程已经被我们杀掉了

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis集群_04

此时我们再通过redis-cli连接进redis,再次运行命令 cluster nodes 可以看到两个表现

1)8002节点已经被检测出异常,改为了fail状态

2) 原本8002的从节点8004已经升级成了主节点,且完全接管了8002原本负责的slot范围5461-10922

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis_05

 

2. 若某个主节点和它所有的从节点都挂了,那么redis集群无法自动进行故障转移的,就无法提供服务了

接着上面的例子,杀掉8002的进程后,目前redis集群的状态是下面这样的

8001        <-        8006

8004        <-        无从节点

8003        <-        8005

我们再杀掉8004的进程,实验redis集群会不会进行自动故障处理

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis集群_06

我们再通过redis-cli连接进其他redis节点,再次运行命令 cluster nodes 可以看到

如果我们刚杀掉进程立马运行 cluster nodes, 那么redis集群还没检测到问题,认为集群依然是OK的

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis集群_07

如果我们稍等三四秒后再次运行该命令会看到,redis集群已经检测到了该问题,该集群已经不可用了,只有keys命令可用,其他的命令无论是set,还是get都不行,直接提示 : (error) CLUSTERDOWN The cluster is down

centos7 redis5.0以前版本 部署集群示例 - 第二篇_单点故障_08

运行 cluster nodes 结果如下

centos7 redis5.0以前版本 部署集群示例 - 第二篇_redis_09