redis?哨兵集群搭建的實(shí)現(xiàn)
前言
在上一篇,我們了解了redis 復(fù)制集群的完整的搭建流程,本篇來分享一下如何搭建 redis 哨兵集群。
為什么需要哨兵集群
redis哨兵集群要解決的問題是什么呢?搞清楚這個(gè)問題之后,就知道為什么需要哨兵集群了。我們知道,redis復(fù)制集群解決的是,高并發(fā)情況下,單節(jié)點(diǎn)的讀性能瓶頸以及單節(jié)點(diǎn)問題;
但是復(fù)制集群的很明顯的問題就是,當(dāng)主節(jié)點(diǎn)掛掉后,集群將無法提供寫業(yè)務(wù),如果要恢復(fù)集群,則需要人工介入,這個(gè)必定會(huì)丟失數(shù)據(jù)不說,而且需要一定的時(shí)間;
而在哨兵模式下,集群的狀態(tài)通過哨兵可以得到實(shí)時(shí)監(jiān)控,一旦主節(jié)點(diǎn)宕機(jī),哨兵會(huì)立即感知,然后選舉出新的主節(jié)點(diǎn),繼續(xù)對(duì)外提供服務(wù);
搭建前準(zhǔn)備
1、基于centos7 的虛擬機(jī)(或云服務(wù)器);
2、redis 安裝包(本篇基于6.X版本);
搭建步驟
本篇的集群將在同一臺(tái)機(jī)器上搭建演示,通過不同的端口進(jìn)行區(qū)分
1、準(zhǔn)備(規(guī)劃)三個(gè)sentinel實(shí)例
節(jié)點(diǎn) | IP | PORT |
---|---|---|
s1 | 10.34.33.80 | 27001 |
s2 | 10.34.33.80 | 27002 |
s3 | 10.34.33.80 | 27003 |
2、創(chuàng)建3個(gè)文件目錄
要在同一臺(tái)虛擬機(jī)開啟3個(gè)實(shí)例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。我們創(chuàng)建三個(gè)文件夾,名字分別叫s1、s2、s3;
mkdir s1 s2 s3
3、在s1目錄下創(chuàng)建一個(gè)sentinel.conf文件
添加下面的內(nèi)容:
port 27001 sentinel announce-ip IP sentinel monitor mymaster IP 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.150.101 7001 2
:指定主節(jié)點(diǎn)信息
mymaster
:主節(jié)點(diǎn)名稱,自定義,任意寫;
IP 7001
:主節(jié)點(diǎn)的ip和端口;
2
:選舉master時(shí)的quorum值
4、將s1/sentinel.conf文件拷貝到s2、s3兩個(gè)目錄中
在/tmp目錄執(zhí)行下列命令
cp s1/sentinel.conf s2 cp s1/sentinel.conf s3
5、修改s2,s3目錄下的配置文件端口分別為27002、27003
在tmp目錄下執(zhí)行下面的命令
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
隨機(jī)打開一個(gè)s2或s3目錄下的文件,可以發(fā)現(xiàn),配置文件已調(diào)整;
6、啟動(dòng)3個(gè)sentinel實(shí)例
在啟動(dòng)sentinel集群之前,先把上一篇的redis集群啟動(dòng)起來
進(jìn)入到tmp目錄,分別執(zhí)行下面的命令進(jìn)行啟動(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)過程
通過輸出日志,也可以看到,三個(gè)sentinel實(shí)例已經(jīng)正常啟動(dòng),并探測(cè)到 7001,7002,7003這三個(gè)redis實(shí)例,以及這三個(gè)redis實(shí)例的主從關(guān)系,即redis集群已經(jīng)成功被sentinel集群監(jiān)控起來;
到這里為止,整改哨兵集群大搭建過程就完成了,接下來,做一下集群的異常測(cè)試
集群測(cè)試
將redis 7001這個(gè)服務(wù)實(shí)例強(qiáng)制下線
在下線的時(shí)候,注意分別觀察sentinel的3個(gè)實(shí)例控制臺(tái)的輸出日志變化
從sentinel實(shí)例控制臺(tái)的輸出日志來看,主要經(jīng)歷了3個(gè)階段:
- 認(rèn)為7001這個(gè)redis實(shí)例主觀下線;
- 當(dāng)sentinel集群超過半數(shù)以上的實(shí)例認(rèn)為7001這個(gè)節(jié)點(diǎn)下線時(shí),變成客觀下線;
- 發(fā)起投票,在剩下的2個(gè)redis實(shí)例中進(jìn)行新的redis master的選舉;
再次啟動(dòng)7001這個(gè)實(shí)例
通過sentinel控制臺(tái)輸出日志,可以看到,7001服務(wù)實(shí)例信息再次被sentinel集群探測(cè)到,即監(jiān)控起來
需要注意的是,再次啟動(dòng)7001服務(wù)之后,7001這個(gè)redis實(shí)例不一定會(huì)再次成為master
到此這篇關(guān)于redis 哨兵集群搭建的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)redis 哨兵集群搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
redis在Linux系統(tǒng)下的環(huán)境配置和redis的全局命令大全
在Linux系統(tǒng)中我們經(jīng)常使用Redis作為高性能的緩存數(shù)據(jù)庫,然而有時(shí)候我們需要在系統(tǒng)中多個(gè)地方使用Redis命令,這就需要將Redis的全局命令設(shè)置好,這篇文章主要給大家介紹了關(guān)于redis在Linux系統(tǒng)下的環(huán)境配置和redis的全局命令大全的相關(guān)資料,需要的朋友可以參考下2024-05-05無法連接redis服務(wù)器問題的解決辦法(非常詳細(xì)!)
這篇文章主要介紹了如何解決Spring?Boot項(xiàng)目連接Redis失敗的問題,通過修改Redis配置文件、添加防火墻白名單或關(guān)閉防火墻,并使用RESP工具進(jìn)行測(cè)試,需要的朋友可以參考下2025-02-02Redis實(shí)現(xiàn)訂單自動(dòng)過期功能的示例代碼
這篇文章主要介紹了Redis實(shí)現(xiàn)訂單自動(dòng)過期功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05全網(wǎng)最完整的Redis新手入門指導(dǎo)教程
這篇文章主要給大家介紹了Redis新手入門的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11redis?設(shè)置生存和過期時(shí)間的原理分析
這篇文章主要介紹了redis?設(shè)置生存和過期時(shí)間的原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08