Redis集群--故障转移

来源:互联网 发布:折半查找递归算法 编辑:程序博客网 时间:2024/05/21 09:42

Redis集群–故障转移

标签(空格分隔): Redis


举例

如果集群中的某一节点宕机会出现什么状况?我们这里假设6380宕机。
这里写图片描述
1.停止6380节点
2.我们尝试连接下集群,并且查看集群信息,发现6380的节点断开连接
3.测试集群是否可用
结论:集群中的某个节点断开之后,key值计算出来的插槽值如果刚好在这个节点上,存储数据失败!综合故障所属:集群只是用来扩展集群的存储数据量,那怎么来保障高可用呢? — 结合主从、主从从、哨兵模式

故障机制

1、 集群中的每个节点都会定期的向其它节点发送PING命令,并且通过有没有收到回复判断目标节点是否下线;
2、 集群中每一秒就会随机选择5个节点,然后选择其中最久没有响应的节点放PING命令;
3、 如果一定时间内目标节点都没有响应,那么该节点就认为目标节点疑似下线
4、 当集群中的节点超过半数认为该目标节点疑似下线,那么该节点就会被标记为下线
5、 当集群中的任何一个节点下线,就会导致插槽区有空档,不完整,那么该集群将不可用
6、 如何解决上述问题?
a) 在Redis集群中可以使用主从模式实现某一个节点的高可用
b) 当该节点(master)宕机后,集群会将该节点的从数据库(slave)转变为(master)继续完成集群服务;

架构

这里写图片描述
出现故障:
这里写图片描述

所以对于Redis集群中最低配置都是三主三从。

创建三主三从集群

创建集群,指定了从库数量为1,创建顺序为主库(3个)、从库(3个):

./redis-trib.rb create --replicas 1 192.168.116.137:6379 192.168.116.137:6380 192.168.116.137:6381 192.168.116.137:6479 192.168.116.137:6480 192.168.116.137:6481

使用集群的注意事项:
1、 多键的命令操作(如MGET、MSET),如果每个键都位于同一个节点(插槽所处的节点),则可以正常支持,否则会提示错误。
2、 集群中的节点只能使用0号数据库,如果执行SELECT切换数据库会提示错误。