日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

redis 哨兵_Redis哨兵机制的原理介绍

發(fā)布時(shí)間:2023/11/30 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis 哨兵_Redis哨兵机制的原理介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

php中文網(wǎng)最新課程

每日17點(diǎn)準(zhǔn)時(shí)技術(shù)干貨分享

本篇文章給大家?guī)淼膬?nèi)容是介紹Redis的哨兵機(jī)制,讓大家了解哨兵機(jī)制的原理和如何實(shí)現(xiàn)。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

概述

Redis的復(fù)制有一個(gè)缺點(diǎn),當(dāng)主機(jī) Master 宕機(jī)以后,我們需要人工解決切換,比如使用slaveof no one 。實(shí)際上主從復(fù)制并沒有實(shí)現(xiàn),高可用, 高可用側(cè)重備份機(jī)器, 利用集群中系統(tǒng)的冗余,當(dāng)系統(tǒng)中某臺(tái)機(jī)器發(fā)生損壞的時(shí)候,其他后備的機(jī)器可以迅速的接替它來啟動(dòng)服務(wù)。

主從復(fù)制的問題

一旦主節(jié)點(diǎn)宕機(jī),寫服務(wù)無法使用,就需要手動(dòng)去切換,重新選取主節(jié)點(diǎn),手動(dòng)設(shè)置主從關(guān)系。

那么如何解決呢?如果我們有一個(gè)監(jiān)控程序能夠監(jiān)控各個(gè)機(jī)器的狀態(tài)及時(shí)作出調(diào)整,將手動(dòng)的操作變成自動(dòng)的。Sentinel的出現(xiàn)就是為了解決這個(gè)問題。

哨兵機(jī)制的原理及實(shí)現(xiàn)

Redis Sentinel

Redis Sentinel 是一個(gè)分布式架構(gòu),其中包含若干個(gè) Sentinel 節(jié)點(diǎn)和 Redis 數(shù)據(jù)節(jié)點(diǎn),每個(gè) Sentinel 節(jié)點(diǎn)會(huì)對(duì)數(shù)據(jù)節(jié)點(diǎn)和其余 Sentinel 節(jié)點(diǎn)進(jìn)行監(jiān)控,當(dāng)它發(fā)現(xiàn)節(jié)點(diǎn)不可達(dá)時(shí),會(huì)對(duì)節(jié)點(diǎn)做下線標(biāo)識(shí)。

如果被標(biāo)識(shí)的是主節(jié)點(diǎn),它還會(huì)和其他 Sentinel 節(jié)點(diǎn)進(jìn)行“協(xié)商”,當(dāng)大多數(shù) Sentinel 節(jié)點(diǎn)都認(rèn)為主節(jié)點(diǎn)不可達(dá)時(shí),它們會(huì)選舉出一個(gè) Sentinel 節(jié)點(diǎn)來完成自動(dòng)故障轉(zhuǎn)移的工作,同時(shí)會(huì)將這個(gè)變化實(shí)時(shí)通知給 Redis 應(yīng)用方。

整個(gè)過程完全是自動(dòng)的,不需要人工來介入,所以這套方案很有效地解決了 Redis 的高可用問題。

如圖所示:

基本的故障轉(zhuǎn)移流程

1)主節(jié)點(diǎn)出現(xiàn)故障,此時(shí)兩個(gè)從節(jié)點(diǎn)與主節(jié)點(diǎn)失去連接,主從復(fù)制失敗。

2)每個(gè) Sentinel 節(jié)點(diǎn)通過定期監(jiān)控發(fā)現(xiàn)主節(jié)點(diǎn)出現(xiàn)了故障

3)多個(gè) Sentinel 節(jié)點(diǎn)對(duì)主節(jié)點(diǎn)的故障達(dá)成一致會(huì)選舉出其中一個(gè)節(jié)點(diǎn)作為領(lǐng)導(dǎo)者負(fù)責(zé)故障轉(zhuǎn)移。

4)Sentinel 領(lǐng)導(dǎo)者節(jié)點(diǎn)執(zhí)行了故障轉(zhuǎn)移,整個(gè)過程基本是跟我們手動(dòng)調(diào)整一致的,只不過是自動(dòng)化完成的。

5)故障轉(zhuǎn)移后整個(gè) Redis Sentinel 的結(jié)構(gòu),重新選舉了新的主節(jié)點(diǎn)。

實(shí)例

使用docker創(chuàng)建如下redis容器

redis-sentinel1??? 172.10.0.9??? 22530 -> 22530??? sentinel

redis-sentinel2??? 172.10.0.10??? 22531 -> 6379??? sentinel

redis-sentinel3??? 172.10.0.11??? 22532 -> 6379??? sentinel

redis-master2??? 172.10.0.5??? 6383? -> 6379??? Master

redis-slave2??? 172.10.0.6??? 6384? -> 6379??? Slave

redis-slave3??? 172.10.0.7??? 6385? -> 6379??? Slave

配置

Sentinel 的核心配置

sentinel monitor mymaster 127.0.0.1 7000 2

監(jiān)控的主節(jié)點(diǎn)的名字、IP 和端口,最后一個(gè)2的意思是有幾臺(tái) Sentinel 發(fā)現(xiàn)有問題,就會(huì)發(fā)生故障轉(zhuǎn)移,例如 配置為2,代表至少有2個(gè) Sentinel 節(jié)點(diǎn)認(rèn)為主節(jié)點(diǎn)不可達(dá),那么這個(gè)不可達(dá)的判定才是客觀的。對(duì)于設(shè)置的越小,那么達(dá)到下線的條件越寬松,反之越嚴(yán)格。一般建議將其設(shè)置為 Sentinel 節(jié)點(diǎn)的一半加1。

sentinel down-after-millseconds mymaster 30000

這個(gè)是超時(shí)的時(shí)間(單位為毫秒)。打個(gè)比方,當(dāng)你去 ping 一個(gè)機(jī)器的時(shí)候,多長(zhǎng)時(shí)間后仍 ping 不通,那么就認(rèn)為它是有問題。

sentinel parallel-syncs mymaster 1

當(dāng) Sentinel 節(jié)點(diǎn)集合對(duì)主節(jié)點(diǎn)故障判定達(dá)成一致時(shí),Sentinel 領(lǐng)導(dǎo)者節(jié)點(diǎn)會(huì)做故障轉(zhuǎn)移操作,選出新的主節(jié)點(diǎn),原來的從節(jié)點(diǎn)會(huì)向新的主節(jié)點(diǎn)發(fā)起復(fù)制操作,parallel-syncs 就是用來限制在一次故障轉(zhuǎn)移之后,每次向新的主節(jié)點(diǎn)發(fā)起復(fù)制操作的從節(jié)點(diǎn)個(gè)數(shù),指出 Sentinel 屬于并發(fā)還是串行。1代表每次只能復(fù)制一個(gè),可以減輕 Master 的壓力。

sentinel auth-pass

如果 Sentinel 監(jiān)控的主節(jié)點(diǎn)配置了密碼,sentinel auth-pass 配置通過添加主節(jié)點(diǎn)的密碼,防止 Sentinel 節(jié)點(diǎn)對(duì)主節(jié)點(diǎn)無法監(jiān)控。

sentinel failover-timeout mymaster 180000

表示故障轉(zhuǎn)移的時(shí)間。

技巧

1)Sentinel 節(jié)點(diǎn)不應(yīng)該部署在一臺(tái)物理“機(jī)器”上。

這里特意強(qiáng)調(diào)物理機(jī)是因?yàn)橐慌_(tái)物理機(jī)做成了若干虛擬機(jī)或者現(xiàn)今比較流行的容器,它們雖然有不同的 IP 地址,但實(shí)際上它們都是同一臺(tái)物理機(jī),同一臺(tái)物理機(jī)意味著如果這臺(tái)機(jī)器有什么硬件故障,所有的虛擬機(jī)都會(huì)受到影響;

為了實(shí)現(xiàn) Sentinel 節(jié)點(diǎn)集合真正的高可用,請(qǐng)勿將 Sentinel 節(jié)點(diǎn)部署在同一臺(tái)物理機(jī)器上。

2)部署至少三個(gè)且奇數(shù)個(gè)的 Sentinel 節(jié)點(diǎn)。

3個(gè)以上是通過增加 Sentinel 節(jié)點(diǎn)的個(gè)數(shù)提高對(duì)于故障判定的準(zhǔn)確性,因?yàn)轭I(lǐng)導(dǎo)者選舉需要至少一半加1個(gè)節(jié)點(diǎn),奇數(shù)個(gè)節(jié)點(diǎn)可以在滿足該條件的基礎(chǔ)上節(jié)省一個(gè)節(jié)點(diǎn)。

-END-

聲明:本文選自「?php中文網(wǎng)?」,搜索「 phpcnnew 」即可關(guān)注!

總結(jié)

以上是生活随笔為你收集整理的redis 哨兵_Redis哨兵机制的原理介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。