Redis哨兵模式

70 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

一、哨兵简介

哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。

image.png

哨兵的作用

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

注意:

  • 哨兵也是一台redis服务器,只是不提供数据服务
  • 通常哨兵配置数量为单数

二、配置哨兵

  • 配置一拖二的主从结构
  • 配置三个哨兵(配置相同,端口不同)
  • 启动哨兵
redis-sentinel sentinel-端口号.conf

image.png

三、哨兵工作原理

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

  • 监控
  • 通知
  • 故障转移

阶段一:监控阶段

用于同步各个节点的状态信息

  • 获取各个sentinel的状态(是否在线)
  • 获取master的状态
  • 获取所有slave的状态(根据master中的slave信息)

阶段二:通知阶段

image.png

阶段三:故障转移阶段

服务器列表中挑选备选master

  • 在线的

  • 响应慢的

  • 与原master断开时间久的

  • 优先原则

    • 优先级
    • offset
    • runid
  • 发送指令(sentinel )

  • 向新的master发送slaveof no one

  • 向其他slave发送slaveof 新masterIP端口