redis集群(5.0版本以前)的搭建,请参考笔者的这篇
redis集群(5.0版本以后)的搭建,请参考笔者的这篇
简言
1.本篇博客讲解redis集群的操作实验
2. 实验例子如集群的查看 : cluster info ; cluster
示范
1. 单点故障时,集群的自动修复 -- 当某个redis主节点挂掉时,剩余的主节点会自动从其从节点中选举出一个作为主节点
redis集群刚建立时,主从情况如下
8001 <- 8006
8002 <- 8004
8003 <- 8005
我们连接进8002的redis,执行命令 cluster nodes 可以看到集群目前的状态,master表主节点的意思,后面的数字表该节点负责的slot范围
可以看到当前的6个redis进程如下
现在我们执行 kill -9 杀掉8002的进程,执行后可以看到只剩下5个redis进程了,因为8002的进程已经被我们杀掉了
此时我们再通过redis-cli连接进redis,再次运行命令 cluster nodes 可以看到两个表现
1)8002节点已经被检测出异常,改为了fail状态
2) 原本8002的从节点8004已经升级成了主节点,且完全接管了8002原本负责的slot范围5461-10922
2. 若某个主节点和它所有的从节点都挂了,那么redis集群无法自动进行故障转移的,就无法提供服务了
接着上面的例子,杀掉8002的进程后,目前redis集群的状态是下面这样的
8001 <- 8006
8004 <- 无从节点
8003 <- 8005
我们再杀掉8004的进程,实验redis集群会不会进行自动故障处理
我们再通过redis-cli连接进其他redis节点,再次运行命令 cluster nodes 可以看到
如果我们刚杀掉进程立马运行 cluster nodes, 那么redis集群还没检测到问题,认为集群依然是OK的
如果我们稍等三四秒后再次运行该命令会看到,redis集群已经检测到了该问题,该集群已经不可用了,只有keys命令可用,其他的命令无论是set,还是get都不行,直接提示 : (error) CLUSTERDOWN The cluster is down
运行 cluster nodes 结果如下