学习自: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所用的最大时间,即使超过该时间副本最终也会被哨兵重新分配,只不过不是按照之前确定的并行同步进行的。
标签:配置文件,redis,哨兵,故障,master,conf,sentinel,sen,下线 From: https://www.cnblogs.com/ShineLeBlog/p/17632091.html