成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Redis哨兵原理是什么-創(chuàng)新互聯(lián)

Redis哨兵原理是什么?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

在井岡山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷,外貿(mào)網(wǎng)站建設(shè),井岡山網(wǎng)站建設(shè)費(fèi)用合理。

本文實(shí)現(xiàn)環(huán)境

  • centos7.3 redis4.0
  • redis工作目錄  /usr/local/redis
  • 在虛擬機(jī)進(jìn)行模擬操作

一、什么是哨兵

先簡(jiǎn)單說(shuō)幾句我們?cè)谂渲弥鲝膹?fù)制時(shí)有一種情況就是主節(jié)點(diǎn)宕機(jī)了,誰(shuí)來(lái)提供服務(wù)呢!

當(dāng)主節(jié)點(diǎn)宕機(jī)后主從復(fù)制就沒(méi)有存在的意義了,數(shù)據(jù)為王的時(shí)代沒(méi)有了數(shù)據(jù)何談什么高可用。

Redis哨兵原理是什么這個(gè)時(shí)候就橫空出世了一位老大哥名叫哨兵,老大哥說(shuō)這個(gè)問(wèn)題我來(lái)幫你們處理。

既然主節(jié)點(diǎn)master作為老大不領(lǐng)你們玩了。我就從你們四個(gè)中間再挑選出來(lái)一位老大,然后你們跟著他玩。

等不帶你們玩的那個(gè)老大回來(lái)后他的身份就失效了,就不在是你們的老大了。他只能跟著我挑選出來(lái)的老大玩。

上邊這段對(duì)話過(guò)程就是我們配置哨兵的意義到底在哪,跟誰(shuí)玩就是誰(shuí)給誰(shuí)數(shù)據(jù),知道了哨兵的作用我們就在繼續(xù)。

「最后我們用專業(yè)術(shù)語(yǔ)來(lái)解釋一下什么是哨兵?!?/strong>

哨兵,英文名sentinel,是一個(gè)分布式系統(tǒng),用于對(duì)主從結(jié)構(gòu)中的每一臺(tái)服務(wù)器進(jìn)行監(jiān)控,當(dāng)主節(jié)點(diǎn)出現(xiàn)故障后通過(guò)投票機(jī)制來(lái)挑選新的主節(jié)點(diǎn),并且將所有的從節(jié)點(diǎn)連接到新的主節(jié)點(diǎn)上。

二、哨兵的作用

上文中我們談到的對(duì)話過(guò)程就是哨兵的作用之一自動(dòng)故障轉(zhuǎn)移。

談到作用肯定就是這個(gè)哨兵到底在工作中到底干了什么事情。我們先用比較干巴的概念描述一下,然后在下文的工作原理會(huì)一一談到。

哨兵的三個(gè)作用監(jiān)控、通知、自動(dòng)轉(zhuǎn)移故障

  • 監(jiān)控
    • 監(jiān)控誰(shuí)?支持主從結(jié)構(gòu)的工作一個(gè)是主節(jié)點(diǎn)一個(gè)是從節(jié)點(diǎn),那肯定就是監(jiān)控這倆個(gè)了。
    • 監(jiān)控主節(jié)點(diǎn)和從節(jié)點(diǎn)是否正常運(yùn)行
    • 檢測(cè)主節(jié)點(diǎn)是否存活,主節(jié)點(diǎn)和從節(jié)點(diǎn)運(yùn)行情況
  • 通知
    • 哨兵檢測(cè)的服務(wù)器出現(xiàn)問(wèn)題時(shí),會(huì)向其他的哨兵發(fā)送通知,哨兵之間就相當(dāng)于一個(gè)微信群,每個(gè)哨兵發(fā)現(xiàn)的問(wèn)題都會(huì)發(fā)在這個(gè)群里。
  • 自動(dòng)故障轉(zhuǎn)移
    • 當(dāng)檢測(cè)到主節(jié)點(diǎn)宕機(jī)后,斷開(kāi)與宕機(jī)主節(jié)點(diǎn)連接的所有從節(jié)點(diǎn),在從節(jié)點(diǎn)中選取一個(gè)作為主節(jié)點(diǎn),然后將其他的從節(jié)點(diǎn)連接到這個(gè)最新主節(jié)點(diǎn)的上。并且告知客戶端最新的服務(wù)器地址。

這里有一個(gè)注意點(diǎn),哨兵也是一臺(tái)redis服務(wù)器,只是不對(duì)外提供任何服務(wù)。

配置哨兵時(shí)配置為單數(shù)。那么為什么配置哨兵服務(wù)器的數(shù)量為單數(shù)呢?帶著這個(gè)疑問(wèn)你會(huì)在下文看到你想要的答案。

二、如何配置哨兵

1. 準(zhǔn)備工作

這一章我們就開(kāi)始配置哨兵,前期工作準(zhǔn)備。下圖就是咔咔的準(zhǔn)備工作。開(kāi)啟8個(gè)客戶端,三個(gè)哨兵、一個(gè)主節(jié)點(diǎn)、倆個(gè)從節(jié)點(diǎn)、一個(gè)主節(jié)點(diǎn)客戶端、一個(gè)從節(jié)點(diǎn)客戶端。Redis哨兵原理是什么

2. sentinel.conf配置解讀

哨兵使用的配置文件是sentinel.confRedis哨兵原理是什么我們來(lái)對(duì)sentinel.conf配置信息進(jìn)行解讀Redis哨兵原理是什么但是大多數(shù)都是注釋,這里咔咔給大家提供一個(gè)命令來(lái)過(guò)濾這些無(wú)用信息 cat sentinel.conf | grep -v '#' | grep -v '^$'Redis哨兵原理是什么

  • port 26379 :對(duì)外服務(wù)端口號(hào)
  • dir /tmp:存儲(chǔ)哨兵的工作信息
  • sentinel monitor mymaster 127.0.0.1 6379 2:監(jiān)控的是誰(shuí),名字可以自定義,后邊的2代表的是,如果有倆個(gè)哨兵判斷這個(gè)主節(jié)點(diǎn)掛了那這個(gè)主節(jié)點(diǎn)就掛了,通常設(shè)置為哨兵個(gè)數(shù)一半加一。
  • sentinel down-after-milliseconds mymaster 30000:哨兵連接主節(jié)點(diǎn)多長(zhǎng)時(shí)間沒(méi)有響應(yīng)就代表掛了。后邊30000是毫秒,也就是30秒。
  • sentinel parallel-syncs mymaster 1:這個(gè)配置項(xiàng)是指在故障轉(zhuǎn)移時(shí),最多有多少個(gè)從節(jié)點(diǎn)對(duì)新的主節(jié)點(diǎn)進(jìn)行同步。這個(gè)值越小完成故障轉(zhuǎn)移的時(shí)間就越長(zhǎng),這個(gè)值越大就意味著越 多的從節(jié)點(diǎn)因?yàn)橥綌?shù)據(jù)而不可用。
  • sentinel failover-timeout mymaster 180000:在進(jìn)行同步的過(guò)程中,多長(zhǎng)時(shí)間完成算有效,系統(tǒng)默認(rèn)值是3分鐘。

3. 開(kāi)始配置

使用命令cat sentinel.conf | grep -v '#' | grep -v '^$' > ./data/sentinel-26379.conf把sentinel.conf過(guò)濾后的信息移到/usr/local/redis/confRedis哨兵原理是什么然后打開(kāi)sentinel-26379.conf修改信息存放目錄Redis哨兵原理是什么然后快速的復(fù)制倆個(gè)哨兵配置文件,端口為26380和26381。sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf

測(cè)試主從復(fù)制處于正常工作狀態(tài),啟動(dòng)三臺(tái)redis服務(wù)器,端口分別為6379、6380、6381Redis哨兵原理是什么查看主節(jié)點(diǎn)信息,是有倆臺(tái)從節(jié)點(diǎn)在連接著,端口分別為6380、6381。

這里有一個(gè)小小的點(diǎn)就是lag怎么一個(gè)是1一個(gè)是0呢!lag是延遲時(shí)間,我這里是本地測(cè)試所以會(huì)出現(xiàn)0的情況,使用云服務(wù)器是很少出現(xiàn)的。lag的值為0和1都屬于正常。Redis哨兵原理是什么測(cè)試主節(jié)點(diǎn)添加一個(gè)hash值,hset kaka name kakaRedis哨兵原理是什么分別從slave1和slave2獲取kaka的值,檢測(cè)主從復(fù)制是否正常運(yùn)行。

經(jīng)過(guò)測(cè)試我們的主從結(jié)構(gòu)是正常運(yùn)行的。Redis哨兵原理是什么Redis哨兵原理是什么啟動(dòng)一個(gè)哨兵redis-sentinel 26379-sentinel.confRedis哨兵原理是什么連接26379哨兵,主要是最后一行,監(jiān)控的主節(jié)點(diǎn)名為mymaster,狀態(tài)正常,從節(jié)點(diǎn)有倆個(gè),哨兵數(shù)量為1個(gè)Redis哨兵原理是什么在來(lái)查看一下26379的哨兵配置信息,這個(gè)時(shí)候已經(jīng)改動(dòng)了Redis哨兵原理是什么在啟動(dòng)一個(gè)26380的哨兵,redis-sentinel 26380-sentinel.conf,這里注意一下最后一行多了一條信息,這個(gè)id就是我們26379配置文件新增的idRedis哨兵原理是什么然后我們來(lái)到哨兵26379的客戶端,同樣也是新增的26380哨兵的idRedis哨兵原理是什么這個(gè)時(shí)候我們?cè)诓榭匆幌?6379哨兵的配置文件,第一次查看配置文件是沒(méi)有配置26380哨兵的,第二次查看時(shí)配置了26380哨兵后添加的信息。Redis哨兵原理是什么最后我們需要把哨兵客戶端3啟動(dòng)起來(lái),端口號(hào)為26381。啟動(dòng)起來(lái)之后,我們的配置信息和服務(wù)端的信息也會(huì)改動(dòng),添加哨兵26380有的信息,哨兵26381也會(huì)有。

直到這里我們對(duì)哨兵的配置就結(jié)束了,接下來(lái)我們把主節(jié)點(diǎn)master給宕掉Redis哨兵原理是什么等待30秒后我們來(lái)到26379哨兵的客戶端,這里新增了一些信息,那么這些信息都做了什么呢!讓我們細(xì)細(xì)道來(lái)。

Redis哨兵原理是什么這里邊的信息我們先需要知道幾個(gè)

  • +sdown :這個(gè)信息后是指三個(gè)哨兵里邊有一個(gè)認(rèn)為主節(jié)點(diǎn)宕機(jī)了
  • +odown:這個(gè)信息是指其他倆個(gè)哨兵去連接了一下主節(jié)點(diǎn),發(fā)現(xiàn)確實(shí)是主節(jié)點(diǎn)宕機(jī)了
  • 然后發(fā)起了一輪投票,這里咔咔使用的是redis4.0,版本之間這塊信息有點(diǎn)差異
  • +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380:直到這里是哨兵發(fā)起投票的結(jié)果,推選端口為6380的redis為主節(jié)點(diǎn)
  • +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380:這里就把端口為6381與6379和新的主節(jié)點(diǎn)6380做了一個(gè)連接
  • +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380:最后一句是端口為6379的還是沒(méi)有上線,于是給踢下線

當(dāng)我們?cè)谥匦掳?379的redis服務(wù)器上線后,就可以看到哨兵服務(wù)端響應(yīng)了倆句。一句是去除6379的下線。最后一句就是重連6379到新的主節(jié)點(diǎn)上。Redis哨兵原理是什么Redis哨兵原理是什么這個(gè)時(shí)候主節(jié)點(diǎn)就是6380了,在6380的redis客戶端設(shè)置值,檢測(cè)主從復(fù)制是否正常工作。

在新的主節(jié)點(diǎn)6380添加list類型Redis哨兵原理是什么在6379和6381獲取這個(gè)值,至此呢!我們的哨兵模式就配置完成了。Redis哨兵原理是什么Redis哨兵原理是什么

三、哨兵工作原理

配置完哨兵后,就需要對(duì)其工作原理進(jìn)行解析了,只有知道其工作流程,才能對(duì)哨兵有更好的理解。

本文講解原理沒(méi)有那么干巴!讓你可以把一篇技術(shù)文章當(dāng)故事去看。

進(jìn)入正題,哨兵作用是監(jiān)控、通知、故障轉(zhuǎn)移。那么工作原理也是圍繞這三點(diǎn)來(lái)講的。

1. 監(jiān)控工作流程

  1. 哨兵發(fā)送info指令,并且保存所有哨兵狀態(tài),主節(jié)點(diǎn)和從節(jié)點(diǎn)的信息
  2. 主節(jié)點(diǎn)會(huì)記錄redis實(shí)例的信息,主節(jié)點(diǎn)記錄的信息跟哨兵記錄的信息看起來(lái)是一樣的,實(shí)際上還是有點(diǎn)區(qū)別哈。
  3. 哨兵會(huì)根據(jù)在主節(jié)點(diǎn)拿到的從節(jié)點(diǎn)信息,給對(duì)應(yīng)的從節(jié)點(diǎn)也發(fā)送info指令
  4. 接著哨兵2來(lái)了,同樣的也會(huì)改主節(jié)點(diǎn)發(fā)送info指令,并且建立cmd連接
  5. 這個(gè)時(shí)候哨兵2也會(huì)保存跟哨兵1一樣的信息,只不過(guò)是保存的哨兵信息是2個(gè)。
  6. 這個(gè)時(shí)候?yàn)榱嗣總€(gè)哨兵的信息都一致它們之間建立了一個(gè)發(fā)布訂閱。為了哨兵之間的信息長(zhǎng)期對(duì)稱它們之間也會(huì)互發(fā)ping命令。
  7. 當(dāng)再來(lái)一個(gè)哨兵3時(shí),也會(huì)做同樣的事情,給主節(jié)點(diǎn)和從節(jié)點(diǎn)發(fā)送info。并且跟哨兵1和哨兵2建立連接。

2. 通知工作流程

Sentinel會(huì)給主從的所有節(jié)點(diǎn)發(fā)送命令獲取其狀態(tài),并且會(huì)把信息發(fā)布到哨兵的訂閱里。Redis哨兵原理是什么

3. 故障轉(zhuǎn)移原理(本文重點(diǎn))

  • 哨兵會(huì)一直給主節(jié)點(diǎn)發(fā)送publish sentinel :hello,直到哨兵報(bào)出sdown,這個(gè)詞這會(huì)是有不是有點(diǎn)熟悉了。沒(méi)錯(cuò)就是我們上文中把主節(jié)點(diǎn)斷開(kāi)后哨兵服務(wù)端報(bào)出的信息。哨兵報(bào)出主節(jié)點(diǎn)sdown后還沒(méi)有完,哨兵還會(huì)往內(nèi)網(wǎng)里發(fā)布消息說(shuō)明這個(gè)主節(jié)點(diǎn)掛了。發(fā)送的指令是sentinel is-master-down-by-address-port
  • 其余的哨兵接收到指令后,主節(jié)點(diǎn)掛了嗎?讓我去看看到底掛沒(méi)掛。發(fā)送的信息也是hello。其余的哨兵也會(huì)發(fā)送他們收到的信息并且發(fā)送指令sentinel is-master-down-by-address-port到自己的內(nèi)網(wǎng),確認(rèn)一下第一個(gè)發(fā)送sentinel is-master-down-by-address-port的哨兵說(shuō)你說(shuō)的對(duì),這個(gè)家伙確實(shí)掛了。當(dāng)所有人都認(rèn)為主節(jié)點(diǎn)掛了后就會(huì)修改其狀態(tài)為odown。當(dāng)一個(gè)哨兵認(rèn)為主節(jié)點(diǎn)掛了標(biāo)記的是sdown,當(dāng)半數(shù)哨兵都認(rèn)為掛了其標(biāo)記的狀態(tài)是odown。這也就是配置哨兵為什么配置單數(shù)的原因。
  • 對(duì)于一個(gè)哨兵認(rèn)為主節(jié)點(diǎn)掛了稱之為主觀下線,半數(shù)哨兵認(rèn)為主節(jié)點(diǎn)掛了稱之為客官下線。
  • 一旦被認(rèn)為主節(jié)點(diǎn)客官下線后,哨兵就會(huì)進(jìn)行下一步操作
?

這時(shí)哨兵已經(jīng)檢測(cè)到問(wèn)題所在了,那么到底是那個(gè)哨兵去負(fù)責(zé)推選新的主節(jié)點(diǎn)呢!不能是張三也去,李四也去,王五也去,這樣就亂套了、于是就需要在所有的哨兵里選出領(lǐng)頭的,那么是如何選的呢!請(qǐng)看下圖。

?

這個(gè)時(shí)候呢!五個(gè)sentinel就在一起開(kāi)會(huì)了,所有的哨兵都在一個(gè)內(nèi)網(wǎng)中,然后他們會(huì)做一件事情就是五個(gè)sentinel會(huì)同時(shí)發(fā)送指令sentinel is-master-down-by-address-port并且攜帶上自己競(jìng)選次數(shù)和runid。Redis哨兵原理是什么每個(gè)sentinel既是參選者也是投票者,每個(gè)sentinel都有一票,信封就代表自己的投票權(quán)。Redis哨兵原理是什么當(dāng)sentinel1和sentinel4同時(shí)把指令發(fā)送到群里準(zhǔn)備競(jìng)選時(shí),sentinel2這個(gè)時(shí)候就說(shuō)我先接到誰(shuí)的指令就把票投給誰(shuí)。假如sentinel1發(fā)的早,那么sentinel2的票就會(huì)投給sentinel1。Redis哨兵原理是什么按照這樣的規(guī)則一直發(fā)起投票直到有一個(gè)sentinel的票數(shù)為總sentinel數(shù)量的一半之多。假設(shè)說(shuō)是sentinel1的票數(shù)滿足總哨兵數(shù)量的一半之多后,sentinel1就會(huì)當(dāng)選。這個(gè)時(shí)候就進(jìn)行到了下一個(gè)階段。Redis哨兵原理是什么在上邊哨兵已經(jīng)選出了sentinel1為代表去所有的從節(jié)點(diǎn)找出一個(gè)作為主節(jié)點(diǎn)。這個(gè)挑選主節(jié)點(diǎn)不是隨便拿一個(gè)是有一定的規(guī)則的。

先把不在線的干掉

Redis哨兵原理是什么響應(yīng)慢的干掉,sentinel會(huì)給所有的redis發(fā)送信息,響應(yīng)速度慢的就會(huì)被干掉Redis哨兵原理是什么與原主節(jié)點(diǎn)斷開(kāi)時(shí)間最久的干掉,這里由于演示不夠用了,所有新增了一個(gè)slave5,沒(méi)有任何意義哈!Redis哨兵原理是什么以上三個(gè)點(diǎn)都判斷結(jié)束后還有salve4和slave5,就會(huì)根據(jù)優(yōu)先原則來(lái)進(jìn)行篩選。

  • 首先會(huì)根據(jù)優(yōu)先級(jí),如果優(yōu)先級(jí)一樣在進(jìn)行其他判斷
  • 判斷offset偏移量,判斷數(shù)據(jù)同步性,假如說(shuō)slave4的offset為90  slave5偏移量為100  那么哨兵就會(huì)認(rèn)為slave4的網(wǎng)絡(luò)是不是有問(wèn)題??!于是就會(huì)選slave5為新的主節(jié)點(diǎn)。那如果說(shuō)是slave4和slave5的offset相同呢!還有最后一個(gè)判斷
  • 最后一步就是判斷runid了,也就是職場(chǎng)中的論資排輩了,也就說(shuō)根據(jù)runid的創(chuàng)建時(shí)間來(lái)判斷,時(shí)間早的上位。

Redis哨兵原理是什么選出新的主節(jié)點(diǎn)后就要對(duì)所有的節(jié)點(diǎn)發(fā)送指令了。Redis哨兵原理是什么

四、總結(jié)

關(guān)于哨兵的所有知識(shí)點(diǎn)就已經(jīng)說(shuō)完了,本文最重要的就是哨兵的工作原理了。我們?cè)诤?jiǎn)單的梳理一下其工作原理。

  • 首先進(jìn)行監(jiān)控,并且所有的哨兵同步信息

  • 哨兵向訂閱里邊發(fā)布信息

  • 故障轉(zhuǎn)移

    • 哨兵發(fā)現(xiàn)主節(jié)點(diǎn)下線
    • 哨兵開(kāi)啟投票競(jìng)選負(fù)責(zé)人
    • 由負(fù)責(zé)人推選新的主節(jié)點(diǎn)
    • 新的主節(jié)點(diǎn)斷開(kāi)原主節(jié)點(diǎn),并且其他的從節(jié)點(diǎn)連接新的主節(jié)點(diǎn),原主節(jié)點(diǎn)上線后作為從節(jié)點(diǎn)連接。

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)Redis哨兵原理是什么大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

網(wǎng)站名稱:Redis哨兵原理是什么-創(chuàng)新互聯(lián)
新聞來(lái)源:http://jinyejixie.com/article0/dhdcio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、用戶體驗(yàn)網(wǎng)站策劃、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

寿阳县| 吉木萨尔县| 洮南市| 葵青区| 离岛区| 夏河县| 宜黄县| 时尚| 仪征市| 咸丰县| 汽车| 阿巴嘎旗| 新平| 阿克| 旺苍县| 武城县| 南召县| 弥渡县| 阿荣旗| 察雅县| 阳高县| 尤溪县| 伊春市| 蛟河市| 湖南省| 分宜县| 红安县| 英山县| 罗山县| 东平县| 封丘县| 徐州市| 淮安市| 库尔勒市| 邮箱| 吉隆县| 澄迈县| 周宁县| 慈溪市| 晴隆县| 合肥市|