当前位置:网站首页>Redis之哨兵模式
Redis之哨兵模式
2022-07-06 08:59:00 【~庞贝】
Redis之哨兵模式
1.哨兵介绍
哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的aster并将所有slave连接到新的master。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yDIlZWmP-1656665781972)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701160545617.png)]](/img/5d/56915e0360187eae51b598cc1f8b02.png)
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
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHpftmPR-1656665781973)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701161621170.png)]](/img/9b/6682633befa137e88ed51838a05d56.png)
5.演示(配置哨兵)
创建了3个哨兵,一个master,2个slave。
“哨兵1”、“哨兵2“、”哨兵3“窗口用于看日志;
可以看到有一个 sentinel.conf配置文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YoqnEZqB-1656665781974)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701161653920.png)]](/img/24/1566a08f5781978ded0fdc3454ff61.png)
复制sentinel.conf配置文件,并进行修改成sentinel-26379.conf、sentinel-26380.conf、sentinel-26381.conf:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojinpvGt-1656665781974)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162232749.png)]](/img/b7/9014c5e785d653a26a78d06bbdd1e5.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aT5SBEFd-1656665781975)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162246139.png)]](/img/54/b8d5a5ba35137e2de1b0d945e92e55.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zif9yi0G-1656665781975)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162252929.png)]](/img/88/14634885d0d6aef18fe0b95ba1381e.png)
查看redis-6379.conf、redis-6380.conf配置文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wrvDK8s-1656665781976)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162429879.png)]](/img/01/dbe88229b59b1ab4b8c463a956070a.png)
创建redis-6381.conf配置文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1L162aa4-1656665781976)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162455852.png)]](/img/04/b2afbc9a836f9d322f42ff3744d6ab.png)
启动6379master主机、6380slave从机、6381salve从机、:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1wqvdC0-1656665781977)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162555747.png)]](/img/1e/819e839447f085bb61b08c27b20bd8.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPEU0DeO-1656665781977)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162603987.png)]](/img/c3/0186729dc929218d040ad2d2d02572.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K24buOuP-1656665781978)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162610228.png)]](/img/3d/5d47f581bc292d5ae6d792eaf99ea0.png)
启动26379哨兵
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Lfsm0PA-1656665781978)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162815038.png)]](/img/c5/a31e4bf8d6f9388b02309ed331b38b.png)
可以进入哨兵26379客户端进行查看key即get操作,不过不允许进行set操作;
还可以info查看信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fktuv9wR-1656665781978)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162843707.png)]](/img/73/0aa5425d47477135be4adbf1dd02be.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2UY14kB-1656665781979)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162852757.png)]](/img/59/902ae3a88247a2583b7d556a343776.png)
再次查看26379配置文件,发现里面新增添了许多信息,即一旦启动哨兵,它的配置文件信息就要变化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzJytuVl-1656665781979)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162910628.png)]](/img/3a/c740127b65951bd012722c9ac265b0.png)
启动26380哨兵:
从最后一行可以看到哪个id就是26379哨兵的id了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wu3FlwrD-1656665781980)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162939149.png)]](/img/32/535302a18583d03404071fb464578e.png)
再次查看26379哨兵日志,发现也多了一行,是26380哨兵的id,即说明哨兵之间是可以互相通信的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIfgvURo-1656665781980)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701162958908.png)]](/img/8e/e433af180ab860935284f4ea6c44dc.png)
再次查看26379配置文件,发现里面信息又发生了一次变化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jx7V1EOc-1656665781981)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163017227.png)]](/img/55/8e929470afd866894083965d0f4604.png)
启动26381哨兵
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PffR9O08-1656665781981)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163039989.png)]](/img/a9/dfffe88a5ebea539d885e53a2e48fd.png)
再次查看26379配置文件,发现里面信息又发生了一次变化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XR9z3UOQ-1656665781982)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163052800.png)]](/img/9c/ef05620b786e87b71ab462068ee225.png)
ctrl+c停掉6379master主机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3fnvKA2-1656665781982)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163111289.png)]](/img/31/59676d6e0dc70d5f01804069bae1f9.png)
30秒以后,26379哨兵开始打印大量日志
进行选举投票,让6381当主机,让6379、6380当从机,这就是主从切换,但是6379仍然是掉线的,即再sdown 6379
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GKGn41rS-1656665781983)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163150958.png)]](/img/25/d1bf8945cdb5a084ff6502102269c5.png)
6.主从切换过程
哨兵在进行主从切换过程中经历三个阶段
1.监控:
同步信息
2.通知:
保持联通
3.故障转移:
1)发现问题
2)竞选负责人
3)优选新master
4)新master上任,其他slave切换master,原master作为slave故障回复后连接
7.阶段一监控阶段
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3y3FNCw4-1656665781983)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163320039.png)]](/img/a6/e2f7698c42c35744491a31437e0b22.png)
为了哨兵与master更好的进行信息交互,建立一个cmd连接(相当于通道)
master也会生成一个“SentinelRedisInstance”信息,与""SentinelState“几乎一模一样
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oye2JN4t-1656665781984)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701163843356.png)]](/img/6c/837e5ff753aafe062e7af4d3f30e6d.png)
第二个sentinel来之后,会发现“SentinelRedisInstance”信息,这样的话也就知道其他哨兵的信息了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTRmwgAE-1656665781984)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701164133165.png)]](/img/7f/4f3a3b3c69e3a11cc80386393bbd72.png)
此时第一个sentinel只有一个哨兵的信息,但是sentinel有两个哨兵的信息,为了保证哨兵之间同步,建立起”发布订阅通道“,这样的话就可以相互对称信息了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qmxhr7Xz-1656665781984)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701164313686.png)]](/img/7c/d03e6b818c076ac92d370fb64e6c21.png)
为了保证第一个哨兵与第二个哨兵之间可以长期对称,它们之间需要ping命令来维持
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRsHiPBv-1656665781985)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701164935125.png)]](/img/2d/da31b2f3be63a1c49e70065b3a5452.png)
8.阶段二通知阶段
第一次可能是sentinel1发送hello给master与slave,收到回复后再转发给其他哨兵,第二次可能就是sentinel2发送hello给master与slave,收到回复后再转发给其他哨兵
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yx6O2h3s-1656665781985)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701165004024.png)]](/img/c2/51faa70c4dd7aba19300775e157439.png)
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
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzWgL98s-1656665781985)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701165511443.png)]](/img/97/1e0a5c647103f3cfc3e56edc9f1b55.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Q8ZtX7Z-1656665781986)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701165544555.png)]](/img/d4/87db01e0ab8cfcc66843456d7bd79b.png)
边栏推荐
- BMINF的後訓練量化實現
- LeetCode:214. 最短回文串
- Niuke winter vacation training 6 maze 2
- Tdengine biweekly selection of community issues | phase III
- LeetCode:673. 最长递增子序列的个数
- [oc]- < getting started with UI> -- learning common controls
- [OC-Foundation框架]---【集合数组】
- Super efficient! The secret of swagger Yapi
- Advance Computer Network Review(1)——FatTree
- UML图记忆技巧
猜你喜欢

不同的数据驱动代码执行相同的测试场景

数学建模2004B题(输电问题)

LeetCode41——First Missing Positive——hashing in place & swap

Selenium+pytest automated test framework practice (Part 2)

I-BERT

LeetCode:236. 二叉树的最近公共祖先

Selenium+pytest automated test framework practice

Multivariate cluster analysis

Different data-driven code executes the same test scenario

LeetCode:221. 最大正方形
随机推荐
Simclr: comparative learning in NLP
Five layer network architecture
数学建模2004B题(输电问题)
Chapter 1 :Application of Artificial intelligence in Drug Design:Opportunity and Challenges
Tdengine biweekly selection of community issues | phase III
LeetCode:673. Number of longest increasing subsequences
一改测试步骤代码就全写 为什么不试试用 Yaml实现数据驱动?
LeetCode:39. 组合总和
Leetcode刷题题解2.1.1
Redis之Bitmap
Pytest之收集用例规则与运行指定用例
LeetCode:剑指 Offer 03. 数组中重复的数字
Go redis initialization connection
Advanced Computer Network Review(3)——BBR
Once you change the test steps, write all the code. Why not try yaml to realize data-driven?
Leetcode: Sword finger offer 42 Maximum sum of continuous subarrays
postman之参数化详解
Export IEEE document format using latex
LeetCode:39. Combined sum
Selenium+pytest automated test framework practice