Redis 哨兵(九)

1. 哨兵

1.1 为什么使用哨兵

Redis 的主从复制模式,一旦主节点出现故障无法提供服务,需要人工介入手工将从节点调整为主节点,同时应用端还需要修改新的主节点地址,这种故障转移的方式对于很多应用场景是不能容忍的。正式由于这个问题,Redis 提供了 Sentinel(哨兵) 架构来解决这个问题。

1.2 什么是哨兵

  • 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master并将所有slave连接到新的master。
  • 注意
    哨兵也是一台Redis服务器,只是不提供数据服务,只支持部分命令,通常哨兵配置数量为单数

1.3 哨兵的作用

  • 监控
    不断的检查master和slave是否正常运行。 master存活检测、master与slave运行情况检测
  • 通知
    当被监控的服务器出现问题时,向其他(哨兵,客户端)发送通知。
  • 自动故障转移
    断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

1.4 启用哨兵模式

首先要有主从结构,关于主从复制的配置,可以看Redis 主从复制

  • 配置哨兵
  • Redis中哨兵的配置文件sentinel.conf
    在这里插入图片描述
  • port:哨兵服务器的端口号,一般指定为2主服务器端口号
  • dir:存放哨兵数据的路径
  • sentinel monitor mymaster 127.0.0.1 6379 2
    哨兵监控的主服务器信息(地址和端口号),mymaster是自己给主服务器取的名字,最后一个数字决定了主服务器是否正常,如果2个哨兵投票主服务器不正常,那么主服务器就是不正常,通常为哨兵数量的一半加1
  • sentinel down-after-milliseconds mymaster 30000
    指定哨兵在监控Redis服务时,判定服务器挂掉的时间周期,默认30秒 (30000),如果哨兵30秒内无法联系到主服务器,就认为主服务器关掉了,也是主从切换的启动条件之一
  • sentinel parallel-syncs mymaster 1
    指定同时进行主从复制的slave数量,数值越大,要求网络资源越高,要求约 小,同步时间约长
  • sentinel failover-timeout mymaster 180000
    指定出现故障后,故障切换的最大超时时间,超过该值,认定切换失败, 默认3分钟

可以自己创建一个sentinel.conf 文件来配置哨兵,一般以sentinel端口号.conf 命名

  • 启动哨兵
 redis-sentinel sentinel端口号.conf  使用自己的配置文件启动哨兵

1.5 哨兵工作原理

哨兵在进行主从切换过程中经历三个阶段

  • 监控
  • 通知
  • 故障转移
  • 监控阶段

监控阶段主要是同步各个节点的信息

  • 获取各个sentinel的状态(是否在线),使用ping 指令
  • 使用info指令获取master的状态,包括master的属性(runid、role:master)和master的各个slave的详细信息
  • 使用info指令获取所有slave的状态(根据master中的slave信息),主要是slave的属性(runid、role:slave、master_host、master_port、offset、…)
    在这里插入图片描述
  • 注意
    各个哨兵之间组成了一个小群体,可以互相通信,并且通过publish/subscribe 来保证信息是同步的
  • 通知阶段
    通知阶段主要是进行哨兵之间信息的维护,sentinel向master发送一个类似hello的信息,来判断master是否正常,然后把信息告诉其他哨兵,保证哨兵间的信息同步
    在这里插入图片描述
  • 故障转移阶段

当某一个哨兵向master发送消息,在sentinel down-after-milliseconds时间内得不到回应时,就认为master挂了,会将master标记为sdown状态(主观下线),然后发送一条指令将消息传递给其他哨兵,其他哨兵也向master发消息,如果有我们设置数量(sentinel monitor)的哨兵认为master挂了,将master标记为odown(客观下线),然后,哨兵就会投票选出某一个哨兵,来处理故障,这个哨兵选出一个salve作为新的master,其他slave切换master,原master作为slave故障回复后连接 。
在这里插入图片描述

  • 哨兵主从切换总结
    在这里插入图片描述

参考:
112节Redis入门到精通【黑马程序员】

如有不足之处,欢迎指正,谢谢!

猜你喜欢

转载自blog.csdn.net/weixin_43691723/article/details/106284023