zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

115分布式电商项目 - Redis集群(故障转移)

2023-09-11 14:15:41 时间

1.故障机制

1、集群中的每个节点都会定期的向其它节点发送PING命令,并且通过有没有收到回复判断目标节点是否下线;

2、集群中每一秒就会随机选择5个节点,然后选择其中最久没有响应的节点放PING命令;

3、如果一定时间内目标节点都没有响应,那么该节点就认为目标节点疑似下线;

4、当集群中的节点超过半数认为该目标节点疑似下线,那么该节点就会被标记为下线;

5、当集群中的任何一个节点下线,就会导致插槽区有空档,不完整,那么该集群将不可用;

如何解决上述问题?

1.在Redis集群中可以使用主从模式实现某一个节点的高可用。
2.当该节点(master)宕机后,集群会将该节点的从数据库(slave)转变为(master)继续完成集群服务;

2.集群中的主从复制架构

架构:
在这里插入图片描述

出现故障:
在这里插入图片描述

3.创建主从集群

需要启动6个redis实例,分别是:
6379(主) 6479(从)
6380(主) 6480(从)
6381(主) 6481(从)
在这里插入图片描述
启动redis实例:

cd 6379/ && redis-server ./redis.conf && cd ..
cd 6380/ && redis-server ./redis.conf && cd ..
cd 6381/ && redis-server ./redis.conf && cd ..
cd 6479/ && redis-server ./redis.conf && cd ..
cd 6480/ && redis-server ./redis.conf && cd ..
cd 6481/ && redis-server ./redis.conf && cd ..

在这里插入图片描述
创建集群,指定了从库数量为1,创建顺序为主库(3个)、从库(3个):
./redis-trib.rb create --replicas 1 192.168.56.102:6379 192.168.56.102:6380 192.168.56.102:6381 192.168.56.102:6479 192.168.56.102:6480 192.168.56.102:6481
在这里插入图片描述
在这里插入图片描述
创建成功!查看集群信息:
在这里插入图片描述

4.测试

在这里插入图片描述
保存、读取数据OK!
查看下6480的从库数据:
在这里插入图片描述
看到从6480查看数据也是被重定向到6380.

说明集群一切运行OK!

5.测试集群中slave节点宕机

我们将6480节点kill掉,查看情况。
在这里插入图片描述
查看集群情况:
在这里插入图片描述
发现6480节点不可用。

那么整个集群可用吗?
在这里插入图片描述

发现集群可用,可见从数据库宕机不会影响集群正常服务。

恢复6480服务:
在这里插入图片描述
测试6480中的数据:
在这里插入图片描述
看到已经更新成最新数据。

6.测试集群中master宕机

假设6381宕机:
在这里插入图片描述
查看集群情况:
在这里插入图片描述
发现:
1、6381节点失效不可用
2、6481节点从slave转换为master

测试集群是否可用:
在这里插入图片描述
集群可用。

恢复6381:
发现:
1、6381节点可用
2、6481依然是主节点
3、6381成为6481的从数据库