Redis集群-哨兵模式
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 https://blog.csdn.net/liuzhixiong_521/article/details/84797609
文章目錄
??????? 概述
??????? 優(yōu)勢
??????? 哨兵集群
??????? 啟動方式
??????? 哨兵配置解析
??????? 主備切換策略
??????????? 如何判斷節(jié)點(diǎn)不可用
??????????? 主觀下線
??????????? 客觀下線
??????????? 切換條件
概述
哨兵模式是Redis官方推薦的集群部署方式,與主從復(fù)制方式不同,哨兵模式可以在Master宕機(jī)時,自動實(shí)現(xiàn)主備切換。哨兵本身也是一個獨(dú)立運(yùn)行的進(jìn)程,它用來監(jiān)控多個主從復(fù)制集群。下圖為哨兵模式簡易調(diào)用圖:
在這里插入圖片描述
優(yōu)勢
??? 不定時監(jiān)控Redis集群是否運(yùn)行良好。
??? 若Redis節(jié)點(diǎn)出現(xiàn)故障,可以及時同事其他進(jìn)程,如客戶端。
??? 能夠自動進(jìn)程主備切換。
哨兵集群
很顯然,哨兵進(jìn)程也存在單點(diǎn)部署的問題,即哨兵進(jìn)程掛掉后,導(dǎo)致整個集群不可用,故哨兵進(jìn)程也應(yīng)該支持集群部署。部署哨兵集群的優(yōu)勢有以下幾點(diǎn):
??? 即便某些哨兵進(jìn)程掛掉,依然可以進(jìn)行主備切換。
??? 客戶端可以連接任意一個哨兵進(jìn)程服務(wù),以獲取集群信息。
啟動方式
??? 第一種
??? redis-sentinel sentinel.conf
??? 第二種
??? redis-server sentinel.conf --sentinel
??? 兩種啟動方式均需要指定哨兵配置文件,哨兵進(jìn)程默認(rèn)監(jiān)聽端口為26379。
哨兵配置解析
sentinel monitor mymaster 127.0.0.1 6379 2
??? 1
表示監(jiān)控的master節(jié)點(diǎn)名稱為mymaster,ip為127.0.0.1,端口為6379,2的含義為大于等于2個哨兵進(jìn)程認(rèn)為master不可用時,才會真正認(rèn)為master不可用,這個我們后續(xù)會詳細(xì)敘述。
sentinel down-after-milliseconds mymaster 3000
??? 1
哨兵通過PING來確認(rèn)master是否存活,上述配置表示單個哨兵在3000毫秒內(nèi)未收到PING的有效回復(fù),則認(rèn)為master已經(jīng)不可用。
sentinel parallel-syncs mymaster 2
??? 1
上述配置表示為,主備切換時可以最多有2個slave與master進(jìn)行同步,這個數(shù)字越小,完成同步時間越長,數(shù)字越大,完成同步時間短,但是意味著更多slave處于不可用狀態(tài),所以應(yīng)合理配置這個數(shù)值。
主備切換策略
如何判斷節(jié)點(diǎn)不可用
哨兵向redis節(jié)點(diǎn)發(fā)送PING命令,若時間超過down-after-milliseconds未收到有效回復(fù),則認(rèn)為該節(jié)點(diǎn)不可用。
主觀下線
簡稱SDOWN,指的是某個哨兵判斷為節(jié)點(diǎn)不可用時(檢測頻率為1秒),將該節(jié)點(diǎn)標(biāo)注為主觀下線,節(jié)點(diǎn)范圍適用于Master和Slave。
客觀下線
簡稱ODOWN,指的是一定數(shù)量(通過配置指定)的哨兵判斷為節(jié)點(diǎn)不可用時,將該節(jié)點(diǎn)標(biāo)注為客觀下線,節(jié)點(diǎn)范圍只適用于Master。
若沒有足夠數(shù)量的哨兵同意Master已經(jīng)下線,Master 的客觀下線狀態(tài)就會被移除。
若Master重新對哨兵的PING命令返回有效回復(fù),Master的主觀下線狀態(tài)就會被解除。
切換條件
當(dāng)master被標(biāo)記為客觀下線后,若哨兵群中大多數(shù)(majority)哨兵都認(rèn)為master已經(jīng)不可用,通過投票從剩余的slave選舉一個作為新的master并修改相關(guān)配置。
上面說的“大多數(shù)哨兵”具體指的是多少哨兵呢,請看下面的對應(yīng)關(guān)系。
2 個哨兵,majority=2
3 個哨兵,majority=2
4 個哨兵,majority=2
5 個哨兵,majority=3
??? 1
??? 2
??? 3
??? 4
那么如何從slave選舉出一個作為master呢?請看如下參考條件:
??? slave節(jié)點(diǎn)處于SDOWN,ODOWN,DISCONNECTED不會作為備選master節(jié)點(diǎn)。
??? 最近一次ping應(yīng)答時間超過5倍ping的間隔不會作為備選master節(jié)點(diǎn)。
??? slave 跟 master 斷開連接的時間已經(jīng)超過了down-after-milliseconds的 10 倍+master 宕機(jī)的時長,不會作為備選master節(jié)點(diǎn)。
如果通過了上面的篩選,則按如下流程篩選master節(jié)點(diǎn):
??? 按照優(yōu)先級排序,優(yōu)先級數(shù)值(配置文件設(shè)置)越低,則備選master的優(yōu)先級越高。
??? 如果優(yōu)先級相同,則取replica offset較大的slave作為master備選節(jié)點(diǎn)。
??? 如果replica offset也相同,則選取run id較小的作為master備選節(jié)點(diǎn)。(每個redis實(shí)例,都會有一個runid,通常是一個40位的隨機(jī)字符串,在redis啟動時生成)
作者Redis系列文章大全
Redis入門
CentOS-7下安裝redis-2.8
Redis配置詳解
Redis數(shù)據(jù)淘汰策略
Redis緩存一致性問題
Redis穿透與雪崩的預(yù)防與解決方案
阻塞IO、非阻塞IO和異步IO
Redis事物探秘
Redis持久化淺析
IO多路復(fù)用及select、poll和epoll
Redis集群-主從復(fù)制模式
Redis集群-哨兵模式
---------------------
作者:LovelyBear2018
來源:CSDN
原文:https://blog.csdn.net/liuzhixiong_521/article/details/84797609
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的Redis集群-哨兵模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蚂蚁花呗逾期利息怎么算
- 下一篇: 阳煤化工是氢能源股吗