当前位置:网站首页>Redis之哨兵模式
Redis之哨兵模式
2022-07-06 08:59:00 【~庞贝】
Redis之哨兵模式
1.哨兵介绍
哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的aster并将所有slave连接到新的master。
2.哨兵作用
1.监控
不断的检查master和slave是否正常运行。
master存活检测、master与slave运行情况检测
2.通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
3.自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址
注意:
哨兵也是一台redis服务器,只是不提供数据服务
通常哨兵配置数量为单数(一般最少三个起)
3.哨兵相关配置
注:一般情况下rdb文件、aof文件、”哨兵的一些工作信息“都存在一个目录下面,即使不同的端口的也给存到一个目录下;
sentinel.conf与redis-conf文件也存放在一个目录下,即使不同端口的sentinel.conf与redis-conf文件也给存到一个目录下
1.port 26379:
哨兵通常默认端口是26379
2.dir “/var/lib/redis”:
存储哨兵的一些工作信息
3.sentinel monitor :
让 sentinel 去监控一个地址为 ip:port 的主服务器,这里的 master-name 可以自定义; 是一个数字,表示当有多少个 sentinel 认为主服务器宕机时,它才算真正的宕机掉,通常数量为半数或半数以上才会认为主机已经宕机, 需要根据 sentinel 的数量设置。
4.sentinel monitor mymaster 127.0.0.1 6379 2:
监控的主机,mymaster这个单词可以更改,可以自定义名字
2是指2个哨兵认定主机挂那么才会认为主机挂,相当于是一个标准,通常设定为哨兵数量的一半加1,这就是为什么我们的哨兵数量通常设为单数(比如设置3个哨兵的时候,有2个哨兵认为主机挂了,才认为主机是挂了)(3个哨兵配置2)(5个哨兵配置3)(7个哨兵配置4)
5.sentinel down-after-milliseconds :
在指定的毫秒数内,若主节点没有应答哨兵的 PING 命令,此时哨兵认为服务器主观下线,默认时间为 30 秒。 与mymaster需要一一对应,是毫秒单位
6.sentinel parallel-syncs :
指定可以有多少个 Redis 服务同步新的主机,即可以有多少个redis同时开始同步数据,一般而言,这个数字越小同步时间越长,而越大,则对网络资源要求就越高。
7.# sentinel auth-pass mymaster MySUPER–secret-0123passw0rd:
sentinel auth-pass <服务器名称><密码>
若主服务器设置了密码,则哨兵必须也配置密码,否则哨兵无法对主从服务器进行监控。该密码与主服务器密码相同。
8.# sentinel failover-timeout :
指定故障转移允许的毫秒数,若超过这个时间,就认为故障转移执行失败,默认为 3 分钟。
4.配置哨兵
1)配置一拖二的主从结构
2)配置三个哨兵(配置相同,端口不同)
3)参看sentinel.conf
注:启动顺序是,先启动主机,再启动从机再启动哨兵
启动哨兵命令如下:
redis-sentinel sentinel-端口号.conf
5.演示(配置哨兵)
创建了3个哨兵,一个master,2个slave。
“哨兵1”、“哨兵2“、”哨兵3“窗口用于看日志;
可以看到有一个 sentinel.conf配置文件
复制sentinel.conf配置文件,并进行修改成sentinel-26379.conf、sentinel-26380.conf、sentinel-26381.conf:
查看redis-6379.conf、redis-6380.conf配置文件
创建redis-6381.conf配置文件
启动6379master主机、6380slave从机、6381salve从机、:
启动26379哨兵
可以进入哨兵26379客户端进行查看key即get操作,不过不允许进行set操作;
还可以info查看信息
再次查看26379配置文件,发现里面新增添了许多信息,即一旦启动哨兵,它的配置文件信息就要变化
启动26380哨兵:
从最后一行可以看到哪个id就是26379哨兵的id了
再次查看26379哨兵日志,发现也多了一行,是26380哨兵的id,即说明哨兵之间是可以互相通信的
再次查看26379配置文件,发现里面信息又发生了一次变化
启动26381哨兵
再次查看26379配置文件,发现里面信息又发生了一次变化
ctrl+c停掉6379master主机
30秒以后,26379哨兵开始打印大量日志
进行选举投票,让6381当主机,让6379、6380当从机,这就是主从切换,但是6379仍然是掉线的,即再sdown 6379
6.主从切换过程
哨兵在进行主从切换过程中经历三个阶段
1.监控:
同步信息
2.通知:
保持联通
3.故障转移:
1)发现问题
2)竞选负责人
3)优选新master
4)新master上任,其他slave切换master,原master作为slave故障回复后连接
7.阶段一监控阶段
为了哨兵与master更好的进行信息交互,建立一个cmd连接(相当于通道)
master也会生成一个“SentinelRedisInstance”信息,与""SentinelState“几乎一模一样
第二个sentinel来之后,会发现“SentinelRedisInstance”信息,这样的话也就知道其他哨兵的信息了
此时第一个sentinel只有一个哨兵的信息,但是sentinel有两个哨兵的信息,为了保证哨兵之间同步,建立起”发布订阅通道“,这样的话就可以相互对称信息了
为了保证第一个哨兵与第二个哨兵之间可以长期对称,它们之间需要ping命令来维持
8.阶段二通知阶段
第一次可能是sentinel1发送hello给master与slave,收到回复后再转发给其他哨兵,第二次可能就是sentinel2发送hello给master与slave,收到回复后再转发给其他哨兵
9.阶段三故障转移阶段
1.服务器列表中挑选备选master
1)不在线的
2)响应慢的
3)与原master断开时间久的
4)优先原则
4.1)优先级
4.2)offset
4.3)runid
2.发送指令( sentinel )
1)向新的master发送slaveof no one
2)向其他slave发送slaveof 新masterIP端口
一个sentinel标记主机挂了是sdown,超过半数sentinel标记主机下线是odown
边栏推荐
- 注意力机制的一种卷积替代方式
- Compétences en mémoire des graphiques UML
- Using C language to complete a simple calculator (function pointer array and callback function)
- Mathematical modeling 2004b question (transmission problem)
- Pytorch view tensor memory size
- [Hacker News Weekly] data visualization artifact; Top 10 Web hacker technologies; Postman supports grpc
- In depth analysis and encapsulation call of requests
- Intel Distiller工具包-量化实现3
- Connexion d'initialisation pour go redis
- 随手记01
猜你喜欢
什么是MySQL?MySql的学习之路是怎样的
I-BERT
MYSQL卸载方法与安装方法
数学建模2004B题(输电问题)
UML图记忆技巧
BMINF的后训练量化实现
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
[today in history] February 13: the father of transistors was born The 20th anniversary of net; Agile software development manifesto was born
[OC foundation framework] - [set array]
Alibaba cloud server mining virus solution (practiced)
随机推荐
Seven layer network architecture
[OC-Foundation框架]--<Copy对象复制>
一改测试步骤代码就全写 为什么不试试用 Yaml实现数据驱动?
[Hacker News Weekly] data visualization artifact; Top 10 Web hacker technologies; Postman supports grpc
Intel distiller Toolkit - Quantitative implementation 1
Redis之性能指标、监控方式
MySQL uninstallation and installation methods
CUDA implementation of self defined convolution attention operator
Cesium draw points, lines, and faces
【每日一题】搬运工 (DFS / DP)
[text generation] recommended in the collection of papers - Stanford researchers introduce time control methods to make long text generation more smooth
LeetCode:214. 最短回文串
力扣每日一题(二)
[oc]- < getting started with UI> -- common controls uibutton
LeetCode:39. 组合总和
LeetCode:387. The first unique character in the string
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Five layer network architecture
LeetCode:34. Find the first and last positions of elements in a sorted array
KDD 2022论文合集(持续更新中)