当前位置:网站首页>Redis之哨兵模式
Redis之哨兵模式
2022-07-06 09:12: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)
边栏推荐
- [oc]- < getting started with UI> -- learning common controls
- AcWing 2456. 记事本
- Advanced Computer Network Review(5)——COPE
- 甘肃旅游产品预订增四倍:“绿马”走红,甘肃博物馆周边民宿一房难求
- opencv+dlib实现给蒙娜丽莎“配”眼镜
- [shell script] use menu commands to build scripts for creating folders in the cluster
- Mise en œuvre de la quantification post - formation du bminf
- 【shell脚本】使用菜单命令构建在集群内创建文件夹的脚本
- MYSQL卸载方法与安装方法
- Different data-driven code executes the same test scenario
猜你喜欢

什么是MySQL?MySql的学习之路是怎样的

How to intercept the string correctly (for example, intercepting the stock in operation by applying the error information)

postman之参数化详解

Export IEEE document format using latex

What is MySQL? What is the learning path of MySQL

Improved deep embedded clustering with local structure preservation (Idec)

Selenium+Pytest自动化测试框架实战(下)
![[OC-Foundation框架]---【集合数组】](/img/b5/5e49ab9d026c60816f90f0c47b2ad8.png)
[OC-Foundation框架]---【集合数组】

Mongodb installation and basic operation

CUDA realizes focal_ loss
随机推荐
[OC-Foundation框架]--<Copy对象复制>
Pytest's collection use case rules and running specified use cases
Intel Distiller工具包-量化实现2
opencv+dlib实现给蒙娜丽莎“配”眼镜
不同的数据驱动代码执行相同的测试场景
Advance Computer Network Review(1)——FatTree
UML diagram memory skills
Nacos installation and service registration
BMINF的后训练量化实现
Advanced Computer Network Review(5)——COPE
[shell script] use menu commands to build scripts for creating folders in the cluster
[today in history] February 13: the father of transistors was born The 20th anniversary of net; Agile software development manifesto was born
Leetcode: Jianzhi offer 03 Duplicate numbers in array
Five layer network architecture
Intel distiller Toolkit - Quantitative implementation 2
Mise en œuvre de la quantification post - formation du bminf
[OC]-<UI入门>--常用控件-UIButton
【剑指offer】序列化二叉树
LeetCode41——First Missing Positive——hashing in place & swap
QML type: locale, date