评论

收藏

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

数据库 数据库 发布于:2021-07-08 10:12 | 阅读数:398 | 评论:0

  
1.故障机制
  1、集群中的每个节点都会定期的向其它节点发送PING命令,并且通过有没有收到回复判断目标节点是否下线;
  2、集群中每一秒就会随机选择5个节点,然后选择其中最久没有响应的节点放PING命令;
  3、如果一定时间内目标节点都没有响应,那么该节点就认为目标节点疑似下线;
  4、当集群中的节点超过半数认为该目标节点疑似下线,那么该节点就会被标记为下线;
  5、当集群中的任何一个节点下线,就会导致插槽区有空档,不完整,那么该集群将不可用;
  如何解决上述问题?

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


2.集群中的主从复制架构
  架构:
DSC0000.png
  出现故障:
DSC0001.png

3.创建主从集群
  需要启动6个redis实例,分别是:
6379(主) 6479(从)
6380(主) 6480(从)
6381(主) 6481(从)
DSC0002.png
启动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 ..
DSC0003.png
创建集群,指定了从库数量为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
DSC0004.png
DSC0005.png
创建成功!查看集群信息:
DSC0006.png


4.测试
DSC0007.png
保存、读取数据OK!
查看下6480的从库数据:
DSC0008.png
看到从6480查看数据也是被重定向到6380.

  说明集群一切运行OK!

5.测试集群中slave节点宕机
  我们将6480节点kill掉,查看情况。
DSC0009.png
查看集群情况:
DSC00010.png
发现6480节点不可用。
  那么整个集群可用吗?
DSC00011.png
  发现集群可用,可见从数据库宕机不会影响集群正常服务。
  恢复6480服务:
DSC00012.png
测试6480中的数据:
DSC00013.png
看到已经更新成最新数据。

6.测试集群中master宕机
  假设6381宕机:
DSC00014.png
查看集群情况:
DSC00015.png
发现:
1、6381节点失效不可用
2、6481节点从slave转换为master
  测试集群是否可用:
DSC00016.png
集群可用。
  恢复6381:
发现:
1、6381节点可用
2、6481依然是主节点
3、6381成为6481的从数据库

  
关注下面的标签,发现更多相似文章