redis-Sentinel

简介

哨兵是一个独立的进程,哨兵通过发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 实例。

  1. 通过发送命令,让 Redis 服务器返回监控其运行状态,包括主服务器和从服务器。

  2. 当哨兵监测到 master 宕机,会自动将 slave 切换成 master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。

判断节点是否正常

  1. 主观下线:一个哨兵节点判定主节点 down 掉是主观下线。

  2. 客观下线:只有半数哨兵节点都主观判定主节点 down 掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。

原理:基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制 Raft 算法(选举算法),最终被投为领导者的哨兵节点完成主从自动化切换的过程。

配置

sentinel 的主要配置

主节点 mymaster 192.168.43.101 6379 ( mymaster 可自行修改)

1
2
3
4
5
6
7
8
9
10
11
12
13
port ${port}
dir "/opt/soft/redis/data/"
logfile "${port}.log"

# 表示有两个sentinel认为master有问题的时候就进行故障转移
sentinel monitor mymaster 192.168.43.101 6379 2

#当ping master不通30秒之后则认为master挂掉了
sentinel down-after-milliseconds mymaster 30000
#故障转移之后salve 对 master的复制是并行还是串行,1表示串行
sentinel parallel-syncs mymaster 1
# 故障转移时间
sentinel failover-timeout mymaster 180000

使用

先启动所有 redis-server 后,再启动 redis-sentinel

1
2
3
4
# 启动Redis服务器进程
./redis-server ../redis.conf
# 启动哨兵进程
./redis-sentinel ../sentinel.conf