Redis分片集群-故障转移
为了演示故障转移,我们可以先通过watch命令查看某台节点信息监控整个集群状态:
watch redis-cli -p 9001 cluster nodes
接着我们让某台节点宕机,执行命令:redis-cli -p 9002 shutdown,回车。
可以发现控制台监控到9002已失去连接。等待一会,可以看到fail信息,同时8002从slave变成了master成为主节点了。
再将9002进行恢复:redis-server 9002/redis.conf,可以发现redis的9002已经变成从节点连接成功了。
这就是分片集群整个自动故障转移的过程。
但是,有时候我们还需要手动的进行故障转移,为什么要手动故障转移呢? 比如说现在我们的集群里面9001是一个master,但是这个机器有点老旧了,或者说需要维护了,那这个时候怎么办呢?其实我们可以启动一个新的节点,然后这个节点性能比较好,我让它成为我9001的slave,然后我就需要手动将新的节点替换这个9001,从而实现故障转移。
利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。其流程如下:
-
缺省:默认的流程,如图1~6歩
-
force:省略了对offset的一致性校验
-
具体做法如下:
对比发现,9002已从slave变成了master,8002从master变成了slave,也就是说9002直接接管了8002的mater角色。
这就是手动的故障转移。