欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

0. 哨兵原理

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

集群架構(gòu)

功能作用

  • 檢測:哨兵機(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)來源,當(dāng)集群發(fā)生故障轉(zhuǎn)移時(shí),會(huì)將最新消息推送給 Redis 客戶端。

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

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

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

image.png

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

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

當(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),開始從新的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í)例和配置

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

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

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

然后我們在s1目錄創(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)名稱,自定義,任意寫
    • 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)

為了方便查看日志,我們打開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. 測試

嘗試讓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)切換。

下面,我們通過一個(gè)測試來實(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àng)目的啟動(dòng)類中,添加一個(gè)新的bean:

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

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

  • 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis server 主從復(fù)制配置實(shí)現(xiàn)

    Redis server 主從復(fù)制配置實(shí)現(xiàn)

    從復(fù)制是指將一個(gè)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他Redis服務(wù)器的過程,本文主要介紹了Redis server 主從復(fù)制配置實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 淺談Redis如何應(yīng)對并發(fā)訪問

    淺談Redis如何應(yīng)對并發(fā)訪問

    本文主要介紹了Redis如何應(yīng)對并發(fā)訪問,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Redis的持久化方式

    Redis的持久化方式

    Redis提供了兩種主要的持久化方式:RDB和AOF,RDB通過定時(shí)快照的方式保存數(shù)據(jù)狀態(tài),而AOF記錄每個(gè)寫操作以便于重啟時(shí)重放,兩者可以結(jié)合使用,且在重啟時(shí)AOF文件會(huì)被優(yōu)先用于數(shù)據(jù)恢復(fù),RDB快照具有速度快、節(jié)省磁盤空間的優(yōu)點(diǎn),但可能會(huì)丟失最近的數(shù)據(jù)
    2024-10-10
  • Redis 對過期數(shù)據(jù)的處理方法

    Redis 對過期數(shù)據(jù)的處理方法

    這篇文章主要介紹了Redis 對過期數(shù)據(jù)的處理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Redis中過期鍵如何刪除示例詳解

    Redis中過期鍵如何刪除示例詳解

    因?yàn)閞edis數(shù)據(jù)是基于內(nèi)存的,然而內(nèi)存是非常寶貴的資源,然后我們就會(huì)對一些不常用或者只用一次的數(shù)據(jù)進(jìn)行存活時(shí)間設(shè)置,這樣才能提高內(nèi)存的使用效率,下面這篇文章主要給大家介紹了關(guān)于Redis中過期鍵如何刪除的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Redis SETEX命令實(shí)現(xiàn)鍵值對管理

    Redis SETEX命令實(shí)現(xiàn)鍵值對管理

    本文主要介紹了Redis SETEX命令實(shí)現(xiàn)鍵值對管理,SETEX命令用于設(shè)置具有過期時(shí)間的鍵值對,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 深入理解redis分布式鎖和消息隊(duì)列

    深入理解redis分布式鎖和消息隊(duì)列

    本篇文章主要介紹了深入理解redis分布式鎖和消息隊(duì)列,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • window手動(dòng)操作清理redis緩存的技巧總結(jié)

    window手動(dòng)操作清理redis緩存的技巧總結(jié)

    在本篇文章中小編給大家分享了關(guān)于window環(huán)境手動(dòng)操作清理redis緩存的方法和技巧,有興趣的朋友們可以跟著學(xué)習(xí)下。
    2019-07-07
  • 關(guān)于Redis未授權(quán)訪問的問題

    關(guān)于Redis未授權(quán)訪問的問題

    這篇文章主要介紹了Redis未授權(quán)訪問的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Redis的幾種數(shù)據(jù)類型使用詳解

    Redis的幾種數(shù)據(jù)類型使用詳解

    這篇文章主要介紹了Redis的幾種數(shù)據(jù)類型使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論