抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文介绍了Redis的哨兵模式。

环境

Windows 10 企业版 LTSC 21H2
Redis 7.4.8

1 概述

哨兵模式(Sentinel)是Redis的一种高可用方案,它由一个或多个哨兵进程组成,用于监控主从节点的健康状态,并在主节点发生故障时自动将从节点升级为主节点,实现自动故障转移。

相对于主从复制,哨兵模式可以自动检测主节点故障并进行故障转移,不需要手动干预。

2 作用

哨兵模式的作用:

  1. 状态监控:监控主节点和从节点的健康状态。
  2. 故障转移:当主节点发生故障时,自动将从节点升级为主节点。
  3. 配置管理:当主节点发生故障时,自动更新其他从节点的主节点配置。
  4. 通知:当节点状态发生变化时,通知应用程序。

3 原理

监控:

  • 定期检查:哨兵定期向主节点和从节点发送PING命令,检查它们的健康状态。
  • 主观下线:当哨兵在一定时间内没有收到主节点的回复时,会将主节点标记为主观下线(Subjectively Down,SDOWN)。
  • 客观下线:当标记主观下线的哨兵数量超过仲裁票数时,会将主节点标记为客观下线(Objectively Down,ODOWN)。
  • 故障转移:当主节点被标记为客观下线时,哨兵会启动故障转移,选举一个从节点作为新的主节点。

故障转移:

  • 选举领导哨兵:多个哨兵通过投票选举领导哨兵,由领导哨兵负责故障转移。
  • 选择新主节点:领导哨兵会在所有从节点中选择新的主节点:
    • 排除状态异常的从节点。
    • 按照从节点的优先级、复制偏移量、运行ID进行排序,选择排名最高的从节点作为新的主节点。
  • 执行故障转移:领导哨兵会执行以下操作:
    • 使用REPLICAOF NO ONE命令将被选中的从节点设置为新的主节点。
    • 使用REPLICAOF 主节点IP地址 主节点端口命令将其他从节点的主节点设置为新的主节点。
    • 更新内部配置,记录新的主节点信息。
  • 通知应用:哨兵会通知应用程序主节点的变更。

4 配置

修改安装目录下的sentinel.conf配置文件。

4.1 安全模式

默认配置,禁用安全模式:

sentinel.conf
1
protected-mode no

4.2 端口

默认哨兵模式的端口是26379。

默认配置:

sentinel.conf
1
port 26379

4.3 目录

设置哨兵模式目录:

sentinel.conf
1
dir sentineldir

4.4 监控

当主节点主观下线时,还需要保证哨兵数量超过仲裁票数的半数,才能开启故障转移。

语法:

sentinel.conf
1
sentinel monitor 主节点名称 主节点IP地址 主节点端口 主节点仲裁票数

默认配置:

sentinel.conf
1
sentinel monitor mymaster 127.0.0.1 6379 2

5 启动

启动哨兵进程:

cmd
1
redis-sentinel sentinel.conf

连接哨兵:

cmd
1
redis-cli -p 26379

6 状态监控

6.1 查看哨兵状态

使用命令查看哨兵状态:

cmd
1
INFO sentinel

显示结果:

  • # Sentinel:哨兵状态
  • sentinel_masters:1:监控的主节点数量
  • sentinel_tilt:0:哨兵是否处于倾斜状态,0表示未进入倾斜状态
  • sentinel_tilt_since_seconds:-1:哨兵进入倾斜状态的时间,单位是秒,-1表示未进入倾斜状态
  • sentinel_running_scripts:0:正在运行的脚本数量
  • sentinel_scripts_queue_length:0:脚本队列长度
  • sentinel_simulate_failure_flags:0:模拟故障标志
  • master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3:主节点名称、主节点状态、主节点IP地址、主节点端口、从节点数量、哨兵数量

6.2 查看主节点状态

使用命令查看主节点状态:

cmd
1
2
3
4
# 查看所有主节点状态
SENTINEL MASTERS
# 查看指定主节点状态
SENTINEL MASTER 主节点名称

6.3 查看从节点状态

使用命令查看从节点状态:

cmd
1
2
# 查看所有从节点状态
SENTINEL REPLICAS 主节点名称

6.4 查看其他哨兵状态

使用命令查看其他哨兵状态:

cmd
1
SENTINEL SENTINELS 主节点名称

7 最佳实践

建议部署3个或以上的哨兵,以提高系统的可靠性。

评论