redis:哨兵配置文件sentinel.conf说明

发布时间 2023-08-15 22:59:44作者: ShineLe

学习自:Redis——sentinel哨兵模式_sentinel announce-ip_FlyLikeButterfly的博客-CSDN博客

m:master

s:slave

下文中所有<xxx>项,都是可以在配置文件sentinel.conf中修改的项

1、前言

哨兵是从主从模式发展而来的,在m宕机的情况下,s会自动切换为m,此时原m连上后会成为新m的s。

哨兵的3个定时任务

  • 每1s,sen向m、s、其他sen发送ping心跳,判断其他成员的主观下线
  • 每2s,sen向__sentinel__:hello频道发布订阅信息与其他sen通信,交换对m信息,方便故障转移和选举
  • 每10s,sen会向m和s发送info以获取最近的拓扑结构,可以感知新加入故障转移的redis节点

主观下线 SDOWN

每隔1s的ping在超过down-after-milliseconds设置的时间后,未收到或收到错误回复,则认定该成员主观下线(如果m有了正确的ping回复,则主观下线状态会被移除,这就是在m的redis服务启动前后,log文件中会出现+sdown和-sdown的原因)

客观下线 ODOWN(只针对master)

当m主观下线时,sen会询问其他sen对m的状态评估,如果达到<quorum>个sen认为下线,则认为m客观下线

故障转移

  • sen每秒发送ping心跳ping完超过<down-after-milliseconds>没回复或错误回复,认为主观下线
  • 如果sen认为m主观下线,则向其他sen询问m状态,达到<quorum>数量时,标记m客观下线
  • 最先完成master客观下线sen发起leader选举,通过raft协议选举出一个leader;
  • 由leader发起故障转移选出s中优先级最高、复制最完整的升级为新m,宕机m降级为s(等恢复连接后成为新m的s),通知其他s连接新m,通知其他sen主从变化

 

2、配置文件sentinel.conf

1)bind 0.0.0.0

2)protected-mode no

默认情况下,本机sen只能由localhost访问,如果要让外界也能访问到,那么可以在用bind IP 手动绑定IP或用protected-mode no关闭保护模式。

3)port 26379

哨兵使用的端口

4)daemonize no

5)pidfile /var/run/redis-sential.pid

默认sen不作为守护进程运行,如果设置为yes,就会写入一个指定的pid文件

6)logfile ""

日志文件,默认空字符串,此时输出到屏幕

7)sentinel announce-ip 192.168.10.20

8)sentinel announce-port 26379

用于NAT网络中,指定哨兵的ip和端口,当提供明确的announce-ip时,sen会在hello消息(2s一次)中发布出来,不是自动检测本地ip,当提供明确的announce-port时,sentinel也会发布出来。这两项不需要同时指定,未指定项会被自动检测并使用

9)dir 工作目录

定义工作目录

10)sentinel monitor <master-name> <ip> <redis-port> <quorum>

例:sentinel monitor mymaster 192.168.10.20 6379 2

告诉sen关于m的信息,当<quorum>个m同意时m标记为客观离线

11)sentinel auth-pass <master-name> <password>

设置m和s的密码,m和s要用相同的密码

12)sentinel down-after-milliseconds <master-name> <milliseconds>

设置master(或任何连接着的slave、sentinel)主观下线超时(毫秒值,默认30s,即30000)

13)sentinel failover-timeout <master-name> <milliseconds>

指定故障转移超时时间(毫秒,默认3分钟,即180000);

该设置会用于多个地方:①当给定的哨兵重新进行故障转移时并且之前的故障转移是同一个master,需要的时间是failover-timeout的两倍。

②当让一个依据哨兵当前配置的从错误master同步的副本去强制同步正确的master的时间,正好就是这个failover-timeout的时间。

③当一个故障转移正在进行但未产生任何配置改变时,取消该故障转移所需的时间。

④当故障转移正在进行时,等待所有的副本被重新分配给新的master所用的最大时间,即使超过该时间副本最终也会被哨兵重新分配,只不过不是按照之前确定的并行同步进行的。