Redis哨兵工作原理与部署
工作流程
1、监控阶段
- 哨兵先连接master服务器,并获取、保存master的详细信息(包括master、slave以及sentinel的信息),连接会保持
- 哨兵获取了master的信息后,又与master的slaves进行连接和信息的获取,连接同样会保持
- master的各个哨兵互相建立连接,同步信息
2、通知阶段
哨兵会不断获取它监听的主从服务器的状态,并与其他哨兵共享这些信息
3、故障转移阶段
-
哨兵监听到master宕机,将master状态标记为SRI_S_DOWN(主观下线),将信息传递给其他哨兵
-
其他哨兵收到这个消息后,判断master是否宕机
-
超过一定数量(配置文件中定义这个数)哨兵认为服务器宕机,则将服务器状态标记为SRI_O_DOWN(客观下线),并重新选举主服务器
-
哨兵投票选举出进行重新配置主服务器的哨兵
-
进行配置的哨兵挑选出新的master
选择原则:
- 在线的
- 响应快的
- 与原master连接密切的
- 优先级高的
发送指令:
- 向新master发送:slaveof no noe
- 向其他slave发送:slave of 新master IP 端口
部署
-
哨兵配置文件:sentinel.conf
- 复制文件:cat sentinel.conf | grep -v "#" |grep -v "^$" > ./conf/sentinel-26379.conf
- 配置信息:
- port 26379 #哨兵端口
- dir /tmp
- sentinel monitor mymaster 127.0.0.1 6379 2 #哨兵主机名 主机IP 主机端口,2表示多少哨兵认为主机宕机,则确认主机宕机
- sentinel down-after-milliseconds mymaster 30000 #连接30秒后无响应,则认为服务器宕机
- sentinel parallel-syncs mymaster 1 #值越小,压力越小,速度越慢
- sentinel failover-timeout mymaster 180000 #多长时间未完成同步,则认为服务器宕机
-
启动命令:redis-sentinel 配置文件
-
启动主从服务器以及其他哨兵后,哨兵获取master、slave以及其他sentinel信息,哨兵配置文件如下
![image]()
-
关闭主服务器后,哨兵重新选出主服务器,下图选出端口号6381的slave作为其他salve的新的master
![image]()
-
配置文件变化
-




浙公网安备 33010602011771号