最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis 搭建哨兵集群的操作步驟

 更新時(shí)間:2023年08月07日 10:02:33   作者:我有一顆五葉草  
在 主從架構(gòu)Redis搭建主從集群 中,一個(gè)slave節(jié)點(diǎn)掛了無(wú)影響,但是master節(jié)點(diǎn)掛了,就無(wú)法進(jìn)行寫(xiě)操作了,影響高可用,Redis 提供了哨兵(Sentinel)機(jī)制來(lái)實(shí)現(xiàn)主從集群的自動(dòng)故障恢復(fù),本文給大家介紹了Redis 搭建哨兵集群的操作步驟,需要的朋友可以參考下

0. 哨兵原理

哨兵的結(jié)構(gòu)如圖:

集群架構(gòu)

功能作用

  • 檢測(cè):哨兵機(jī)制會(huì)不斷檢查 master 和 slave 是否按預(yù)期工作。
  • 故障恢復(fù):如果 master 故障,Sentinel 會(huì)將一個(gè) slave 提升為 master 。當(dāng)故障實(shí)例恢復(fù)后也以新的 master 為主。
  • 通知:Sentinel 充當(dāng) Redis 客戶端的服務(wù)發(fā)現(xiàn)來(lái)源,當(dāng)集群發(fā)生故障轉(zhuǎn)移時(shí),會(huì)將最新消息推送給 Redis 客戶端。

服務(wù)狀態(tài)監(jiān)控

Sentinel 基于心跳機(jī)制檢測(cè)服務(wù)狀態(tài),每隔一秒向集群的每個(gè)實(shí)例發(fā)送 ping 命令:

  • 主觀下線:如果某 Sentinel 節(jié)點(diǎn)發(fā)現(xiàn)某實(shí)例未在規(guī)定的時(shí)間響應(yīng),則認(rèn)為該實(shí)例主觀下線。
  • 客觀下線:若超過(guò)指定數(shù)量(quorum)的 Sentinel 都認(rèn)為該實(shí)例主觀下線,則該實(shí)例客觀下線。quorum 值最好超過(guò) Sentinel 實(shí)例數(shù)量的一半。

image.png

選舉新的master一旦發(fā)現(xiàn)master故障,sentinel需要在salve中選擇一個(gè)作為新的master,選擇依據(jù)是這樣的:

  • 首先會(huì)判斷slave節(jié)點(diǎn)與master節(jié)點(diǎn)斷開(kāi)時(shí)間長(zhǎng)短,如果超過(guò)指定值(down-after-milliseconds * 10)則會(huì)排除該slave節(jié)點(diǎn)
  • 然后判斷slave節(jié)點(diǎn)的slave-priority值,越小優(yōu)先級(jí)越高,如果是0則永不參與選舉
  • 如果slave-prority一樣,則判斷slave節(jié)點(diǎn)的offset值,越大說(shuō)明數(shù)據(jù)越新,優(yōu)先級(jí)越高
  • 最后是判斷slave節(jié)點(diǎn)的運(yùn)行id大小,越小優(yōu)先級(jí)越高。

當(dāng)選出一個(gè)新的master后,該如何實(shí)現(xiàn)切換呢?

流程如下:

  • sentinel給備選的slave1節(jié)點(diǎn)發(fā)送slaveof no one命令,讓該節(jié)點(diǎn)成為master
  • sentinel給所有其它slave發(fā)送slaveof 192.168.150.101 7002 命令,讓這些slave成為新master的從節(jié)點(diǎn),開(kāi)始從新的master上同步數(shù)據(jù)。
  • 最后,sentinel將故障節(jié)點(diǎn)標(biāo)記為slave,當(dāng)故障節(jié)點(diǎn)恢復(fù)后會(huì)自動(dòng)成為新的master的slave節(jié)點(diǎn)

image.png

1. 哨兵集群架構(gòu)

三個(gè)sentinel實(shí)例信息如下:

節(jié)點(diǎn)IPPORT
s1192.168.1.18427001
s2192.168.1.18427002
s3192.168.1.18427003

ip 指的是 redis 所在服務(wù)器或者虛擬機(jī)的ip。

2. 準(zhǔn)備實(shí)例和配置

要在同一臺(tái)虛擬機(jī)開(kāi)啟3個(gè)實(shí)例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。

我們創(chuàng)建三個(gè)文件夾,名字分別叫s1、s2、s3:

# 進(jìn)入/tmp目錄
cd /tmp
# 創(chuàng)建目錄
mkdir s1 s2 s3

然后我們?cè)趕1目錄創(chuàng)建一個(gè)sentinel.conf文件,添加下面的內(nèi)容:

port 27001
sentinel announce-ip 192.168.1.184
sentinel monitor mymaster 192.168.1.184 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/tmp/s1"

解讀:

  • port 27001 :是當(dāng)前sentinel實(shí)例的端口
  • sentinel monitor mymaster 192.168.1.184 7001 2 :指定主節(jié)點(diǎn)信息
    • mymaster :主節(jié)點(diǎn)名稱(chēng),自定義,任意寫(xiě)
    • 192.168.1.184 7001 :主節(jié)點(diǎn)的ip和端口
    • 2 :選舉master時(shí)的quorum值

然后將s1/sentinel.conf文件拷貝到s2、s3兩個(gè)目錄中(在/tmp目錄執(zhí)行下列命令):

# 方式一:逐個(gè)拷貝
cp s1/sentinel.conf s2
cp s1/sentinel.conf s3
# 方式二:管道組合命令,一鍵拷貝
echo s2 s3 | xargs -t -n 1 cp s1/sentinel.conf

修改s2、s3兩個(gè)文件夾內(nèi)的配置文件,將端口分別修改為27002、27003:

sed -i -e 's/27001/27002/g' -e 's/s1/s2/g' s2/sentinel.conf
sed -i -e 's/27001/27003/g' -e 's/s1/s3/g' s3/sentinel.conf

3. 啟動(dòng)

為了方便查看日志,我們打開(kāi)3個(gè)ssh窗口,分別啟動(dòng)3個(gè)redis實(shí)例,啟動(dòng)命令:

# 第1個(gè)
redis-sentinel s1/sentinel.conf
# 第2個(gè)
redis-sentinel s2/sentinel.conf
# 第3個(gè)
redis-sentinel s3/sentinel.conf

啟動(dòng)后

4. 測(cè)試

嘗試讓master節(jié)點(diǎn)7001宕機(jī),查看sentinel日志

查看7003的日志

查看7002的日志

5. RedisTemplate 的哨兵模式

在Sentinel集群監(jiān)管下的Redis主從集群,其節(jié)點(diǎn)會(huì)因?yàn)樽詣?dòng)故障轉(zhuǎn)移而發(fā)生變化,Redis的客戶端必須感知這種變化,及時(shí)更新連接信息。Spring的RedisTemplate底層利用lettuce實(shí)現(xiàn)了節(jié)點(diǎn)的感知和自動(dòng)切換。

下面,我們通過(guò)一個(gè)測(cè)試來(lái)實(shí)現(xiàn)RedisTemplate集成哨兵機(jī)制。

配置地址

然后在配置文件application.yml中指定redis的sentinel相關(guān)信息:

spring:
  redis:
    sentinel:
      master: mymaster
      nodes:
        - 192.168.150.101:27001
        - 192.168.150.101:27002
        - 192.168.150.101:27003

配置讀寫(xiě)分離

在項(xiàng)目的啟動(dòng)類(lèi)中,添加一個(gè)新的bean:

@Bean
public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){
    return clientConfigurationBuilder -> clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}

這個(gè)bean中配置的就是讀寫(xiě)策略,包括四種:

  • MASTER:從主節(jié)點(diǎn)讀取
  • MASTER_PREFERRED:優(yōu)先從master節(jié)點(diǎn)讀取,master不可用才讀取replica
  • REPLICA:從slave(replica)節(jié)點(diǎn)讀取
  • REPLICA _PREFERRED:優(yōu)先從slave(replica)節(jié)點(diǎn)讀取,所有的slave都不可用才讀取master

到此這篇關(guān)于Redis 搭建哨兵集群的操作步驟的文章就介紹到這了,更多相關(guān)Redis 搭建哨兵集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Redis瘦身指南

    詳解Redis瘦身指南

    Redis應(yīng)該是開(kāi)發(fā)者最常用的緩存服務(wù)器了,它豐富的數(shù)據(jù)結(jié)構(gòu),快速高效的內(nèi)存操作能幫助開(kāi)發(fā)者迅速完成復(fù)雜功能的設(shè)計(jì),作為一個(gè)內(nèi)存型數(shù)據(jù)庫(kù),Redis經(jīng)常會(huì)遇到內(nèi)存問(wèn)題,今天我們來(lái)談一下Redis常見(jiàn)的內(nèi)存滿的問(wèn)題,介紹一下給 Redis “瘦身”的通用方式。
    2021-05-05
  • redis分布式鎖的8大坑總結(jié)梳理

    redis分布式鎖的8大坑總結(jié)梳理

    這篇文章主要介紹了redis分布式鎖的8大坑總結(jié)梳理,使用redis的分布式鎖,我們首先想到的可能是setNx命令,文章圍繞setNx命令展開(kāi)詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下
    2022-07-07
  • Redis和MySQL保證雙寫(xiě)一致性的問(wèn)題解析

    Redis和MySQL保證雙寫(xiě)一致性的問(wèn)題解析

    Redis和MySQL的雙寫(xiě)一致性指的是在同時(shí)使用緩存和數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的時(shí)候,保證Redis和MySQL中數(shù)據(jù)的一致性,那么如何才能保證他們的一致性呢,下面小編就來(lái)為大家詳細(xì)講講
    2023-11-11
  • Redis 鍵值設(shè)計(jì)使用總結(jié)

    Redis 鍵值設(shè)計(jì)使用總結(jié)

    這篇文章主要介紹了Redis鍵值設(shè)計(jì)的使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • React事件綁定的方式及區(qū)別詳解

    React事件綁定的方式及區(qū)別詳解

    React提供了多種方式來(lái)綁定事件處理函數(shù),每種方式有其獨(dú)特的特點(diǎn)和適用場(chǎng)景,理解 React中不同的事件綁定方式及其差異,不僅有助于編寫(xiě)高效的代碼,也能在面試中展示你對(duì)React的深刻理解,本文將詳細(xì)講解React中常見(jiàn)的事件綁定方式,包括其區(qū)別、優(yōu)缺點(diǎn)以及適用場(chǎng)景
    2024-12-12
  • Redis連接池監(jiān)控(連接池是否已滿)與優(yōu)化方法

    Redis連接池監(jiān)控(連接池是否已滿)與優(yōu)化方法

    本文詳細(xì)講解了如何在Linux系統(tǒng)中監(jiān)控Redis連接池的使用情況,以及如何通過(guò)連接池參數(shù)配置、系統(tǒng)資源使用情況、Redis命令監(jiān)控、外部監(jiān)控工具等多種方法進(jìn)行檢測(cè)和優(yōu)化,以確保系統(tǒng)在高并發(fā)場(chǎng)景下的性能和穩(wěn)定性,討論了連接池的概念、工作原理、參數(shù)配置,以及優(yōu)化策略等內(nèi)容
    2024-09-09
  • Redis消息隊(duì)列實(shí)現(xiàn)異步秒殺功能

    Redis消息隊(duì)列實(shí)現(xiàn)異步秒殺功能

    在高并發(fā)場(chǎng)景下,為了提高秒殺業(yè)務(wù)的性能,可將部分工作交給 Redis 處理,并通過(guò)異步方式執(zhí)行,Redis 提供了多種數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)消息隊(duì)列,總結(jié)三種,本文詳細(xì)介紹Redis消息隊(duì)列實(shí)現(xiàn)異步秒殺功能,感興趣的朋友一起看看吧
    2025-04-04
  • Redis的數(shù)據(jù)過(guò)期清除策略實(shí)現(xiàn)

    Redis的數(shù)據(jù)過(guò)期清除策略實(shí)現(xiàn)

    Redis實(shí)現(xiàn)了數(shù)據(jù)過(guò)期清除策略,本文將深入解析Redis的數(shù)據(jù)過(guò)期清除策略,包括過(guò)期鍵的刪除方式、清除策略的選擇以及相關(guān)配置參數(shù)的介紹,感興趣的可以了解一下
    2024-05-05
  • Redis添加商鋪查詢(xún)緩存功能實(shí)現(xiàn)

    Redis添加商鋪查詢(xún)緩存功能實(shí)現(xiàn)

    文章主要介紹了如何使用流程圖來(lái)設(shè)計(jì)實(shí)現(xiàn)邏輯,并詳細(xì)講解了Service層的實(shí)現(xiàn)方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-03-03
  • Redis解決key沖突的問(wèn)題解決

    Redis解決key沖突的問(wèn)題解決

    本文主要介紹了Redis解決key沖突的問(wèn)題解決,通過(guò)嚴(yán)格的key命名規(guī)范、RedisDB隔離、分布式并發(fā)控制和命名空間等手段,可以有效預(yù)防key沖突,感興趣的可以了解一下
    2025-11-11

最新評(píng)論

永昌县| 义马市| 台东市| 敦煌市| 安庆市| 元阳县| 双牌县| 延川县| 上饶县| 平武县| 深水埗区| 大渡口区| 桂平市| 密云县| 屯留县| 亳州市| 太和县| 洞口县| 枝江市| 龙陵县| 忻州市| 平潭县| 常熟市| 北票市| 陈巴尔虎旗| 剑阁县| 永丰县| 武夷山市| 桦川县| 遂昌县| 淳安县| 余干县| 延庆县| 祥云县| 凤庆县| 清远市| 永泰县| 昌吉市| 洛宁县| 临汾市| 和平县|