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

一文教你了解Redis哨兵模式

數(shù)據(jù)庫 Redis
哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨(dú)立的進(jìn)程,作為進(jìn)程,它會獨(dú)立運(yùn)行。其原理是哨兵通過發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控運(yùn)行的多個Redis實(shí)例。

一、介紹

主從切換技術(shù)的方法是:當(dāng)主服務(wù)器宕機(jī)后,需要手動把一臺從服務(wù)器切換為主服務(wù)器,這就需要人工干預(yù),費(fèi)事費(fèi)力,還會造成一段時間內(nèi)服務(wù)不可用。這不是一種推薦的方式,更多時候,我們優(yōu)先考慮哨兵模式。

在 深入學(xué)習(xí)Redis(3):主從復(fù)制 中曾提到,Redis主從復(fù)制的作用有數(shù)據(jù)熱備、負(fù)載均衡、故障恢復(fù)等;但主從復(fù)制存在的一個問題是故障恢復(fù)無法自動化。本文將要介紹的哨兵,它基于Redis主從復(fù)制,主要作用便是解決主節(jié)點(diǎn)故障恢復(fù)的自動化問題,進(jìn)一步提高系統(tǒng)的高可用性。

文章主要內(nèi)容如下:首先介紹哨兵的作用和架構(gòu);然后講述哨兵系統(tǒng)的部署方法,以及通過客戶端訪問哨兵系統(tǒng)的方法;然后簡要說明哨兵實(shí)現(xiàn)的基本原理;最后給出關(guān)于哨兵實(shí)踐的一些建議。文章內(nèi)容基于Redis 3.0版本。

二、哨兵模式概述

哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨(dú)立的進(jìn)程,作為進(jìn)程,它會獨(dú)立運(yùn)行。其原理是哨兵通過發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控運(yùn)行的多個Redis實(shí)例。

Redis哨兵Redis哨兵

這里的哨兵有兩個作用

  • 通過發(fā)送命令,讓Redis服務(wù)器返回監(jiān)控其運(yùn)行狀態(tài),包括主服務(wù)器和從服務(wù)器。
  • 當(dāng)哨兵監(jiān)測到master宕機(jī),會自動將slave切換成master,然后通過發(fā)布訂閱模式通知其他的從服務(wù)器,修改配置文件,讓它們切換主機(jī)。

然而一個哨兵進(jìn)程對Redis服務(wù)器進(jìn)行監(jiān)控,可能會出現(xiàn)問題,為此,我們可以使用多個哨兵進(jìn)行監(jiān)控。各個哨兵之間還會進(jìn)行監(jiān)控,這樣就形成了多哨兵模式。

用文字描述一下故障切換(failover)的過程。假設(shè)主服務(wù)器宕機(jī),哨兵1先檢測到這個結(jié)果,系統(tǒng)并不會馬上進(jìn)行failover過程,僅僅是哨兵1主觀的認(rèn)為主服務(wù)器不可用,這個現(xiàn)象成為主觀下線。當(dāng)后面的哨兵也檢測到主服務(wù)器不可用,并且數(shù)量達(dá)到一定值時,那么哨兵之間就會進(jìn)行一次投票,投票的結(jié)果由一個哨兵發(fā)起,進(jìn)行failover操作。切換成功后,就會通過發(fā)布訂閱模式,讓各個哨兵把自己監(jiān)控的從服務(wù)器實(shí)現(xiàn)切換主機(jī),這個過程稱為客觀下線。這樣對于客戶端而言,一切都是透明的。

三、部署

這一部分將部署一個簡單的哨兵系統(tǒng),包含1個主節(jié)點(diǎn)、2個從節(jié)點(diǎn)和3個哨兵節(jié)點(diǎn)。方便起見:所有這些節(jié)點(diǎn)都部署在一臺機(jī)器上(局域網(wǎng)IP:192.168.92.128),使用端口號區(qū)分;節(jié)點(diǎn)的配置盡可能簡化。

1.  部署主從節(jié)點(diǎn)

哨兵系統(tǒng)中的主從節(jié)點(diǎn),與普通的主從節(jié)點(diǎn)配置是一樣的,并不需要做任何額外配置。下面分別是主節(jié)點(diǎn)(port=6379)和2個從節(jié)點(diǎn)(port=6380/6381)的配置文件,配置都比較簡單,不再詳述。

#redis-6379.conf
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
 
#redis-6380.conf
port 6380
daemonize yes
logfile "6380.log"
dbfilename "dump-6380.rdb"
slaveof 192.168.92.128 6379
 
#redis-6381.conf
port 6381
daemonize yes
logfile "6381.log"
dbfilename "dump-6381.rdb"
slaveof 192.168.92.128 6379

配置完成后,依次啟動主節(jié)點(diǎn)和從節(jié)點(diǎn):

redis-server redis-6379.conf
redis-server redis-6380.conf
redis-server redis-6381.conf

節(jié)點(diǎn)啟動后,連接主節(jié)點(diǎn)查看主從狀態(tài)是否正常,如下圖所示:

圖片圖片

2.  部署哨兵節(jié)點(diǎn)

哨兵節(jié)點(diǎn)本質(zhì)上是特殊的Redis節(jié)點(diǎn)。

3個哨兵節(jié)點(diǎn)的配置幾乎是完全一樣的,主要區(qū)別在于端口號的不同(26379/26380/26381),下面以26379節(jié)點(diǎn)為例介紹節(jié)點(diǎn)的配置和啟動方式;配置部分盡量簡化,更多配置會在后面介紹。

#sentinel-26379.conf
port 26379
daemonize yes
logfile "26379.log"
sentinel monitor mymaster 192.168.92.128 6379 2

其中,sentinel monitor mymaster 192.168.92.128 6379 2 配置的含義是:該哨兵節(jié)點(diǎn)監(jiān)控192.168.92.128:6379這個主節(jié)點(diǎn),該主節(jié)點(diǎn)的名稱是mymaster,最后的2的含義與主節(jié)點(diǎn)的故障判定有關(guān):至少需要2個哨兵節(jié)點(diǎn)同意,才能判定主節(jié)點(diǎn)故障并進(jìn)行故障轉(zhuǎn)移。

哨兵節(jié)點(diǎn)的啟動有兩種方式,二者作用是完全相同的:

redis-sentinel sentinel-26379.conf
redis-server sentinel-26379.conf --sentinel

按照上述方式配置和啟動之后,整個哨兵系統(tǒng)就啟動完畢了??梢酝ㄟ^redis-cli連接哨兵節(jié)點(diǎn)進(jìn)行驗(yàn)證,如下圖所示:可以看出26379哨兵節(jié)點(diǎn)已經(jīng)在監(jiān)控mymaster主節(jié)點(diǎn)(即192.168.92.128:6379),并發(fā)現(xiàn)了其2個從節(jié)點(diǎn)和另外2個哨兵節(jié)點(diǎn)。

圖片圖片

此時如果查看哨兵節(jié)點(diǎn)的配置文件,會發(fā)現(xiàn)一些變化,以26379為例:

圖片圖片

其中,dir只是顯式聲明了數(shù)據(jù)和日志所在的目錄(在哨兵語境下只有日志);known-slave和known-sentinel顯示哨兵已經(jīng)發(fā)現(xiàn)了從節(jié)點(diǎn)和其他哨兵;帶有epoch的參數(shù)與配置紀(jì)元有關(guān)(配置紀(jì)元是一個從0開始的計(jì)數(shù)器,每進(jìn)行一次領(lǐng)導(dǎo)者哨兵選舉,都會+1;領(lǐng)導(dǎo)者哨兵選舉是故障轉(zhuǎn)移階段的一個操作,在后文原理部分會介紹)。

3.  演示故障轉(zhuǎn)移

哨兵的4個作用中,配置提供者和通知需要客戶端的配合,本文將在下一章介紹客戶端訪問哨兵系統(tǒng)的方法時詳細(xì)介紹。這一小節(jié)將演示當(dāng)主節(jié)點(diǎn)發(fā)生故障時,哨兵的監(jiān)控和自動故障轉(zhuǎn)移功能。

(1)首先,使用kill命令殺掉主節(jié)點(diǎn):

圖片圖片

(2)如果此時立即在哨兵節(jié)點(diǎn)中使用info Sentinel命令查看,會發(fā)現(xiàn)主節(jié)點(diǎn)還沒有切換過來,因?yàn)樯诒l(fā)現(xiàn)主節(jié)點(diǎn)故障并轉(zhuǎn)移,需要一段時間。

圖片圖片

(3)一段時間以后,再次在哨兵節(jié)點(diǎn)中執(zhí)行info Sentinel查看,發(fā)現(xiàn)主節(jié)點(diǎn)已經(jīng)切換成6380節(jié)點(diǎn)。

圖片圖片

但是同時可以發(fā)現(xiàn),哨兵節(jié)點(diǎn)認(rèn)為新的主節(jié)點(diǎn)仍然有2個從節(jié)點(diǎn),這是因?yàn)樯诒趯?380切換成主節(jié)點(diǎn)的同時,將6379節(jié)點(diǎn)置為其從節(jié)點(diǎn);雖然6379從節(jié)點(diǎn)已經(jīng)掛掉,但是由于哨兵并不會對從節(jié)點(diǎn)進(jìn)行客觀下線(其含義將在原理部分介紹),因此認(rèn)為該從節(jié)點(diǎn)一直存在。當(dāng)6379節(jié)點(diǎn)重新啟動后,會自動變成6380節(jié)點(diǎn)的從節(jié)點(diǎn)。下面驗(yàn)證一下。

(4)重啟6379節(jié)點(diǎn):可以看到6379節(jié)點(diǎn)成為了6380節(jié)點(diǎn)的從節(jié)點(diǎn)。

圖片圖片

(5)在故障轉(zhuǎn)移階段,哨兵和主從節(jié)點(diǎn)的配置文件都會被改寫。

對于主從節(jié)點(diǎn),主要是slaveof配置的變化:新的主節(jié)點(diǎn)沒有了slaveof配置,其從節(jié)點(diǎn)則slaveof新的主節(jié)點(diǎn)。

對于哨兵節(jié)點(diǎn),除了主從節(jié)點(diǎn)信息的變化,紀(jì)元(epoch)也會變化,下圖中可以看到紀(jì)元相關(guān)的參數(shù)都+1了。

圖片圖片

4.  總結(jié)

哨兵系統(tǒng)的搭建過程,有幾點(diǎn)需要注意:

(1)哨兵系統(tǒng)中的主從節(jié)點(diǎn),與普通的主從節(jié)點(diǎn)并沒有什么區(qū)別,故障發(fā)現(xiàn)和轉(zhuǎn)移是由哨兵來控制和完成的。

(2)哨兵節(jié)點(diǎn)本質(zhì)上是redis節(jié)點(diǎn)。

(3)每個哨兵節(jié)點(diǎn),只需要配置監(jiān)控主節(jié)點(diǎn),便可以自動發(fā)現(xiàn)其他的哨兵節(jié)點(diǎn)和從節(jié)點(diǎn)。

(4)在哨兵節(jié)點(diǎn)啟動和故障轉(zhuǎn)移階段,各個節(jié)點(diǎn)的配置文件會被重寫(config rewrite)。

(5)本章的例子中,一個哨兵只監(jiān)控了一個主節(jié)點(diǎn);實(shí)際上,一個哨兵可以監(jiān)控多個主節(jié)點(diǎn),通過配置多條sentinel monitor即可實(shí)現(xiàn)。

責(zé)任編輯:武曉燕 來源: java知路
相關(guān)推薦

2022-02-20 09:56:28

TCPIP網(wǎng)絡(luò)協(xié)議

2021-12-07 06:02:15

Redis Docker運(yùn)維

2023-12-27 07:40:43

HTTP服務(wù)器負(fù)載均衡

2025-05-30 01:00:00

RAG大模型流程

2024-11-20 16:12:31

Python圖像處理計(jì)算機(jī)視覺

2024-11-18 17:16:18

Python性能優(yōu)化編程

2024-11-20 16:42:03

Python科學(xué)計(jì)算

2023-12-26 07:33:45

Redis持久化COW

2022-09-05 07:32:46

mock數(shù)據(jù)Stream

2024-12-19 15:00:00

數(shù)據(jù)清洗Python

2025-06-20 08:00:00

硬路由軟路由網(wǎng)絡(luò)

2021-01-15 13:18:39

數(shù)據(jù)模型領(lǐng)域模型代碼

2020-08-27 07:34:50

Zookeeper數(shù)據(jù)結(jié)構(gòu)

2023-04-18 08:45:28

MongoDB部署模式

2019-07-23 07:30:16

2020-12-22 10:02:53

ZabbixMySQL數(shù)據(jù)庫

2023-05-11 08:26:56

2021-03-22 16:03:57

鴻蒙HarmonyOS應(yīng)用開發(fā)

2023-04-26 15:43:24

容器編排容器編排工具

2023-11-20 08:18:49

Netty服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美日韩不卡 | 国产成人jvid在线播放 | 日日人人| www.四虎.com| 看片91 | 国产成人99久久亚洲综合精品 | av一区二区三区四区 | 国产成人福利视频在线观看 | 九九在线视频 | 国产东北一级毛片 | 国产一区在线看 | 久久这里有精品 | 日韩av在线一区 | 91久久精品日日躁夜夜躁国产 | 在线欧美视频 | 欧美一级艳情片免费观看 | 国产精品视频999 | 久久综合久久综合久久综合 | 成人日批视频 | 韩日精品一区 | 日本免费黄色 | www.久久久 | av网站免费 | 午夜小视频在线播放 | 在线观看中文字幕视频 | 爱操影视 | 日韩欧美在线精品 | 欧美成人h版在线观看 | 国产精品久久久久久久久久久久午夜片 | 野狼在线社区2017入口 | av影音资源 | 成人午夜视频在线观看 | 免费激情 | 国产一二三区免费视频 | 久久久夜色精品亚洲 | 一区二区三区网站 | 欧美国产激情 | 精品日韩一区二区 | 国内精品久久精品 | 国产精品日韩欧美一区二区三区 | 久久精品国产亚洲 |