redis?哨兵集群搭建的實現(xiàn)
前言
在上一篇,我們了解了redis 復(fù)制集群的完整的搭建流程,本篇來分享一下如何搭建 redis 哨兵集群。
為什么需要哨兵集群
redis哨兵集群要解決的問題是什么呢?搞清楚這個問題之后,就知道為什么需要哨兵集群了。我們知道,redis復(fù)制集群解決的是,高并發(fā)情況下,單節(jié)點的讀性能瓶頸以及單節(jié)點問題;
但是復(fù)制集群的很明顯的問題就是,當(dāng)主節(jié)點掛掉后,集群將無法提供寫業(yè)務(wù),如果要恢復(fù)集群,則需要人工介入,這個必定會丟失數(shù)據(jù)不說,而且需要一定的時間;

而在哨兵模式下,集群的狀態(tài)通過哨兵可以得到實時監(jiān)控,一旦主節(jié)點宕機,哨兵會立即感知,然后選舉出新的主節(jié)點,繼續(xù)對外提供服務(wù);
搭建前準(zhǔn)備
1、基于centos7 的虛擬機(或云服務(wù)器);
2、redis 安裝包(本篇基于6.X版本);
搭建步驟
本篇的集群將在同一臺機器上搭建演示,通過不同的端口進行區(qū)分
1、準(zhǔn)備(規(guī)劃)三個sentinel實例
| 節(jié)點 | IP | PORT |
|---|---|---|
| s1 | 10.34.33.80 | 27001 |
| s2 | 10.34.33.80 | 27002 |
| s3 | 10.34.33.80 | 27003 |
2、創(chuàng)建3個文件目錄
要在同一臺虛擬機開啟3個實例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。我們創(chuàng)建三個文件夾,名字分別叫s1、s2、s3;
mkdir s1 s2 s3

3、在s1目錄下創(chuàng)建一個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實例的端口;sentinel monitor mymaster 192.168.150.101 7001 2:指定主節(jié)點信息
mymaster:主節(jié)點名稱,自定義,任意寫;
IP 7001:主節(jié)點的ip和端口;
2:選舉master時的quorum值
4、將s1/sentinel.conf文件拷貝到s2、s3兩個目錄中
在/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
隨機打開一個s2或s3目錄下的文件,可以發(fā)現(xiàn),配置文件已調(diào)整;

6、啟動3個sentinel實例
在啟動sentinel集群之前,先把上一篇的redis集群啟動起來


進入到tmp目錄,分別執(zhí)行下面的命令進行啟動
# 第1個 redis-sentinel s1/sentinel.conf # 第2個 redis-sentinel s2/sentinel.conf # 第3個 redis-sentinel s3/sentinel.conf
啟動過程



通過輸出日志,也可以看到,三個sentinel實例已經(jīng)正常啟動,并探測到 7001,7002,7003這三個redis實例,以及這三個redis實例的主從關(guān)系,即redis集群已經(jīng)成功被sentinel集群監(jiān)控起來;

到這里為止,整改哨兵集群大搭建過程就完成了,接下來,做一下集群的異常測試
集群測試
將redis 7001這個服務(wù)實例強制下線
在下線的時候,注意分別觀察sentinel的3個實例控制臺的輸出日志變化

從sentinel實例控制臺的輸出日志來看,主要經(jīng)歷了3個階段:
- 認為7001這個redis實例主觀下線;
- 當(dāng)sentinel集群超過半數(shù)以上的實例認為7001這個節(jié)點下線時,變成客觀下線;
- 發(fā)起投票,在剩下的2個redis實例中進行新的redis master的選舉;
再次啟動7001這個實例
通過sentinel控制臺輸出日志,可以看到,7001服務(wù)實例信息再次被sentinel集群探測到,即監(jiān)控起來

需要注意的是,再次啟動7001服務(wù)之后,7001這個redis實例不一定會再次成為master
到此這篇關(guān)于redis 哨兵集群搭建的實現(xiàn)的文章就介紹到這了,更多相關(guān)redis 哨兵集群搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis中Bloom filter布隆過濾器的學(xué)習(xí)
布隆過濾器是一個非常長的二進制向量和一系列隨機哈希函數(shù)的組合,可用于檢索一個元素是否存在,本文就詳細的介紹一下Bloom filter布隆過濾器,具有一定的參考價值,感興趣的可以了解一下2022-12-12
redis中RedissonLock如何實現(xiàn)等待鎖的
本文主要介紹了redis中RedissonLock如何實現(xiàn)等待鎖的,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
redis啟動報錯Can‘t?open?the?log?file:?No?such?file?or?d
這篇文章主要介紹了redis啟動報錯Can‘t?open?the?log?file:?No?such?file?or?directory問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

