成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis哨兵的配置和原理

運維 數(shù)據(jù)庫運維 Redis
哨兵是一個獨立的進行,在一個一主多從的Redis系統(tǒng)中,可以使用多個哨兵監(jiān)控整個Redis系統(tǒng),哨兵之間也會互相監(jiān)控。

哨兵

在一個典型的一主多從的Redis系統(tǒng)中,當主數(shù)據(jù)庫遇到異常中斷服務后,需要手動選擇一個從數(shù)據(jù)庫升級為主數(shù)據(jù)庫,整個過程需要人工介入,難以自動化。

Redis2.8提供了哨兵2.0(2.6提供了1.0,但是問題較多),哨兵顧名思義就是監(jiān)控Redis系統(tǒng)的運行狀況。它的功能包括一下兩個:

  • 監(jiān)控主數(shù)據(jù)庫和從數(shù)據(jù)庫是否正常運行;
  • 主數(shù)據(jù)庫出現(xiàn)故障時自動將從數(shù)據(jù)庫升級為主數(shù)據(jù)庫;

哨兵是一個獨立的進行,在一個一主多從的Redis系統(tǒng)中,可以使用多個哨兵監(jiān)控整個Redis系統(tǒng),哨兵之間也會互相監(jiān)控。

配置

基于前面的一主兩從架構,為他們加入哨兵。

可以在三個redis節(jié)點的redis目錄下找到sentinel.conf文件,這個文件就是哨兵的配置文件,修改配置如下:

  1. sentinel monitor mymaster 192.168.2.101 6379 3 

其中:

  • mymaster是要監(jiān)控的主數(shù)據(jù)庫名字,可以自定義;
  • 接下來是主數(shù)據(jù)庫的ip和端口;
  • 最后一個3是指哨兵最低通過票數(shù);

如果你需要后臺啟動,則修改daemonize參數(shù):

  1. daemonize yes 

配置后如果有防火墻,不要忘記打開哨兵的端口,默認是26379。

最后,開啟哨兵:

  1. redis-sentinel /yourpath/sentinel.conf 

做個測試,關閉主數(shù)據(jù)庫(192.168.2.101)后,等待30秒(默認30秒):

  • 哨兵將從數(shù)據(jù)庫中的一個節(jié)點升級成主數(shù)據(jù)庫(192.168.2.102);
  • 將另一個從數(shù)據(jù)庫(192.168.2.103)的主數(shù)據(jù)庫(192.168.2.101)切換到新的主數(shù)據(jù)庫(192.168.2.102);

隨后啟動剛才關閉的主數(shù)據(jù)庫(192.168.2.101),哨兵自動將其轉為從數(shù)據(jù)庫;

Redis哨兵的配置和原理

原理

1. 監(jiān)控過程

哨兵啟動后,會與要監(jiān)控的主數(shù)據(jù)庫建立兩條連接:

  • 一條用來用來訂閱__sentinel__:hello頻道以獲取其他哨兵節(jié)點的信息;
  • 另一條用來定期向主數(shù)據(jù)庫發(fā)送INFO等命令來獲取主數(shù)據(jù)庫本身的信息;

在和主數(shù)據(jù)庫建立連接后,哨兵會定時執(zhí)行下面3個操作:

  • 每10秒哨兵會向主數(shù)據(jù)庫和從數(shù)據(jù)庫發(fā)送INFO命令;
  • 每2秒哨兵會向主數(shù)據(jù)庫和從數(shù)據(jù)庫的__sentinel__:hello頻道發(fā)送自己的信息;
  • 每1秒哨兵會向主數(shù)據(jù)庫和從數(shù)據(jù)庫和其他哨兵發(fā)送PING命令;

第一個操作是發(fā)送INFO命令,目的是獲取主數(shù)據(jù)庫的信息,以及主數(shù)據(jù)庫的從數(shù)據(jù)庫的信息,從而實現(xiàn)新節(jié)點的自動發(fā)現(xiàn),并對從數(shù)據(jù)庫也建立兩條連接。

第二個操作是訂閱__sentinel__:hello頻道,并發(fā)送哨兵本身的信息,與同樣監(jiān)控該數(shù)據(jù)庫的其他哨兵分享自己的信息,同時也能識別哨兵是否是新哨兵。哨兵與哨兵之間也會建立一個鏈接,用來發(fā)送PING命令;

第三個操作是發(fā)送PING命令,在發(fā)現(xiàn)了從數(shù)據(jù)庫和其他哨兵后,要做的就是定時監(jiān)控Redis服務是否停止,時間間隔與配置文件中的down-after-milliseconds有關,當這個值小于1秒時,哨兵會每隔該值的時間發(fā)送PING命令,當這個值大于1秒時,哨兵會每隔1秒發(fā)送一次PING命令。

配置方式是在sentinel.conf文件中加入:

  1. sentinel down-after-milliseconds mymaster 600 # 600毫秒發(fā)送一個PING 

當超過down-after-milliseconds時,如果PING的數(shù)據(jù)庫未回復,則哨兵認為其主觀下線。主觀下線可以理解為當前的哨兵認為該節(jié)點下線了。

如果該節(jié)點是主數(shù)據(jù)庫,則哨兵們會進一步判斷是否需要對其進行故障修復:

哨兵會發(fā)送SENTINEL is-master-down-by-addr命令詢問其他哨兵,判斷他們是否也認為該主數(shù)據(jù)庫下線,如果達到quorum參數(shù),也就是我們在配置哨兵時的命令:

  1. sentinel monitor mymaster 192.168.2.101 6379 3 

的最后一個參數(shù)3,哨兵們會認為這個主數(shù)據(jù)庫客觀下線,并選舉一個領頭哨兵對主從系統(tǒng)發(fā)起故障恢復。

2. 領頭哨兵選舉

要進行故障恢復,則需要選舉出一個領頭哨兵,領頭哨兵的選擇算法是Raft算法,具體過程如下:

  • 發(fā)現(xiàn)主數(shù)據(jù)庫客觀下線的哨兵節(jié)點(A節(jié)點)想每個哨兵節(jié)點發(fā)送命令,要求對方選擇自己成為領頭哨兵;
  • 如果目標哨兵節(jié)點沒有選擇過其他人,則會同意將A設置成領頭哨兵;
  • 如果A發(fā)現(xiàn)超過半數(shù)且超過quorum參數(shù)個哨兵節(jié)點同意選擇自己,則A成功成為領頭哨兵;
  • 當有多個哨兵同時參選,則會出現(xiàn)沒有任何節(jié)點當選的可能,此時每個參選節(jié)點將等待一個隨即時間重新發(fā)起競選,直到選舉成功。

3. 故障恢復

選擇出領頭哨兵后,會把從數(shù)據(jù)庫中的一個挑選出來升級為主數(shù)據(jù)庫:

  • 所有先線的從數(shù)據(jù)庫中,選擇優(yōu)先級最高的,優(yōu)先級可以通過slave-priority來設置;
  • 如果有多個一樣優(yōu)先級的從數(shù)據(jù)庫,則復制的命令偏移量越大,越優(yōu)先(與down掉的主數(shù)據(jù)庫最接近);
  • 如果還有多個備選,則選擇運行ID較小的(運行ID不會重復);

選擇好節(jié)點后,領頭哨兵將想這個節(jié)點發(fā)送slaveof no one,升級他為主數(shù)據(jù)庫。

然后想其他從數(shù)據(jù)庫發(fā)送slaveof命令切換主數(shù)據(jù)庫。

最后更新內(nèi)部的記錄,將已經(jīng)停止服務的舊的主數(shù)據(jù)庫更新為新的主數(shù)據(jù)庫的從數(shù)據(jù)庫,當其回復后自動以從數(shù)據(jù)庫的身份加入到主從架構中。

哨兵部署

哨兵的推薦部署方案:

  • 為每個節(jié)點(無論是主數(shù)據(jù)庫還是從數(shù)據(jù)庫)都部署一個哨兵;
  • 使每個哨兵與其對應的節(jié)點的網(wǎng)絡環(huán)境相同或相近;

設置quorum的值為N/2+1,這樣使得只有當大部分哨兵統(tǒng)一后才會選擇領頭哨兵進行故障恢復。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2024-04-29 08:06:19

Redis分布式系統(tǒng)

2023-09-27 06:26:07

2023-04-09 19:54:52

2020-06-08 08:20:11

Redis高可用集群

2024-07-16 08:38:06

2018-09-11 09:33:49

Redis高可用架構

2021-04-01 08:50:54

SentinelRedis 集群原理

2023-03-15 08:30:37

2023-10-26 07:47:53

Redis哨兵集群

2022-06-28 07:31:11

哨兵模式redis

2022-05-17 22:20:41

哨兵Redis機制

2010-08-30 17:00:57

DHCP中繼

2022-11-07 08:42:08

2025-02-19 10:27:48

哨兵Redis故障轉移

2023-07-31 21:56:54

哨兵系統(tǒng)redis

2025-02-13 11:11:53

Redis哨兵代碼

2024-01-19 12:48:00

Redis存儲數(shù)據(jù)庫

2020-09-02 17:28:26

Spring Boot Redis集成

2022-05-31 08:04:03

Redis高可用集群

2022-12-05 08:41:39

Redis調(diào)試環(huán)境源碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线观看免费观看视频 | 福利久久 | 欧美精品在线免费观看 | 久久99精品久久久久 | 亚洲精品久久视频 | 在线激情视频 | 精品国产91乱码一区二区三区 | 日本色婷婷 | 精品91久久| 久久男人 | 日韩欧美网| 就操在线| 综合久久综合久久 | 亚洲精品日韩欧美 | 日韩一级免费观看 | 久久久久久久综合 | 夜夜精品视频 | 日本网站免费在线观看 | 国产欧美一区二区三区另类精品 | 亚洲第一av | 精品日本中文字幕 | 成人av播放 | 国产精品一区二区三 | 日本精品一区二区三区视频 | 国产午夜精品一区二区 | 亚洲啊v在线 | 欧美精品久久 | 国产精品久久久久久久7777 | 久久国产精品91 | 亚洲福利av | 国产精品污污视频 | 国产一区二区电影 | 欧美视频免费 | 亚洲欧美中文日韩在线v日本 | 91视频免费黄 | 日韩中文在线观看 | av在线三级 | 国产探花在线精品一区二区 | 成人毛片一区二区三区 | 99久久久无码国产精品 | 日韩二 |