日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

redis?哨兵集群搭建的實現_Redis

作者:逆風飛翔的小叔 ? 更新時間: 2022-10-05 編程語言

前言

在上一篇,我們了解了redis 復制集群的完整的搭建流程,本篇來分享一下如何搭建 redis 哨兵集群。

為什么需要哨兵集群

redis哨兵集群要解決的問題是什么呢?搞清楚這個問題之后,就知道為什么需要哨兵集群了。我們知道,redis復制集群解決的是,高并發情況下,單節點的讀性能瓶頸以及單節點問題;

但是復制集群的很明顯的問題就是,當主節點掛掉后,集群將無法提供寫業務,如果要恢復集群,則需要人工介入,這個必定會丟失數據不說,而且需要一定的時間;

而在哨兵模式下,集群的狀態通過哨兵可以得到實時監控,一旦主節點宕機,哨兵會立即感知,然后選舉出新的主節點,繼續對外提供服務;

搭建前準備

1、基于centos7 的虛擬機(或云服務器);

2、redis 安裝包(本篇基于6.X版本);

搭建步驟

本篇的集群將在同一臺機器上搭建演示,通過不同的端口進行區分

1、準備(規劃)三個sentinel實例

節點 IP PORT
s1 10.34.33.80 27001
s2 10.34.33.80 27002
s3 10.34.33.80 27003

2、創建3個文件目錄

要在同一臺虛擬機開啟3個實例,必須準備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。我們創建三個文件夾,名字分別叫s1、s2、s3;

mkdir s1 s2 s3

3、在s1目錄下創建一個sentinel.conf文件

添加下面的內容:

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:是當前sentinel實例的端口;
  • sentinel monitor mymaster 192.168.150.101 7001 2:指定主節點信息

mymaster:主節點名稱,自定義,任意寫;

IP 7001:主節點的ip和端口;

2:選舉master時的quorum值

4、將s1/sentinel.conf文件拷貝到s2、s3兩個目錄中

在/tmp目錄執行下列命令

cp s1/sentinel.conf s2
cp s1/sentinel.conf s3

5、修改s2,s3目錄下的配置文件端口分別為27002、27003

在tmp目錄下執行下面的命令

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目錄下的文件,可以發現,配置文件已調整;

6、啟動3個sentinel實例

在啟動sentinel集群之前,先把上一篇的redis集群啟動起來

進入到tmp目錄,分別執行下面的命令進行啟動

# 第1個
redis-sentinel s1/sentinel.conf
# 第2個
redis-sentinel s2/sentinel.conf
# 第3個
redis-sentinel s3/sentinel.conf

啟動過程

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

到這里為止,整改哨兵集群大搭建過程就完成了,接下來,做一下集群的異常測試

集群測試

將redis 7001這個服務實例強制下線

在下線的時候,注意分別觀察sentinel的3個實例控制臺的輸出日志變化

?從sentinel實例控制臺的輸出日志來看,主要經歷了3個階段:

  • 認為7001這個redis實例主觀下線;
  • 當sentinel集群超過半數以上的實例認為7001這個節點下線時,變成客觀下線;
  • 發起投票,在剩下的2個redis實例中進行新的redis master的選舉;

再次啟動7001這個實例

通過sentinel控制臺輸出日志,可以看到,7001服務實例信息再次被sentinel集群探測到,即監控起來

需要注意的是,再次啟動7001服務之后,7001這個redis實例不一定會再次成為master

原文鏈接:https://blog.csdn.net/congge_study/article/details/125949426

欄目分類
最近更新