阿里云Linux環(huán)境下Redis哨兵模式搭建(一主兩從三哨兵)

@[toc]

前言

本文主要記錄了阿里云Linux環(huán)境下Redis哨兵模式的搭建過程呛踊,記錄搭建的一些過程砾淌,下次可以少走彎路,快速搭建谭网。本文搭建的是一主兩從三哨兵的模式汪厨,是通過一臺阿里云服務(wù)器的不同的端口號來模擬不同機(jī)器上的搭建。

介紹

sentinel(哨兵模式)

sentinel愉择,中文名是哨兵劫乱。哨兵是 Redis 集群架構(gòu)中非常重要的一個(gè)組件,主要有以下功能:

  • 集群監(jiān)控:負(fù)責(zé)監(jiān)控 redis master 和 slave 進(jìn)程是否正常工作
  • 消息通知:如果某個(gè) redis 實(shí)例有故障锥涕,那么哨兵負(fù)責(zé)發(fā)送消息作為報(bào)警通知給管理員
  • 故障轉(zhuǎn)移:如果 master node 掛掉了衷戈,通過選舉從slave node上產(chǎn)生新的master node
  • 配置中心:如果故障轉(zhuǎn)移發(fā)生了,通知 client 客戶端新的 master 地址

哨兵用于實(shí)現(xiàn) redis 集群的高可用层坠,本身也是分布式的殖妇,作為一個(gè)哨兵集群去運(yùn)行,互相協(xié)同工作

核心概念

  • 哨兵至少需要 3 個(gè)實(shí)例窿春,來保證自己的健壯性
  • redis主從+哨兵的模式拉一,不保證數(shù)據(jù)零丟失的,只能保證redis 集群的高可用性

環(huán)境

  • Linux version 4.18.0-80.11.2.el8_0.x86_64(Red Hat 8.2.1-3)
  • redis-5.0.7.tar.gz

架構(gòu)圖

一主兩從三哨兵架構(gòu)圖
<center>
<img style="border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);"
src="https://img-blog.csdnimg.cn/2020081519522430.png">


<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">一主兩從三哨兵架構(gòu)圖</div>
</center>

步驟

環(huán)境準(zhǔn)備

  1. 關(guān)于redis的單機(jī)下載旧乞、安裝蔚润,請參考之前的博客:redis基礎(chǔ)以及ubuntu16.04環(huán)境下搭建,比較簡單尺栖,這里就不重復(fù)描述了嫡纠。

  2. 我們將原來的redis-5.0.7又復(fù)制了兩份,作為它的從節(jié)點(diǎn),如下:


    在這里插入圖片描述
  3. 修改端口號:我們分別進(jìn)入redis-R1除盏,redis-R2目錄下修改它的redis.conf文件叉橱,將其端口號分別修改為6389、6399


    在這里插入圖片描述
  4. 啟動redis:src/redis-server redis.conf者蠕,這時(shí)候我們就可以看見啟動了3個(gè)redis窃祝,這相當(dāng)于在三臺機(jī)器上啟動redis。


    在這里插入圖片描述

主節(jié)點(diǎn)配置

修改redis.conf配置文件踱侣,步驟如下:

  1. 編輯redis.conf修改粪小,綁定ip為服務(wù)器內(nèi)網(wǎng)ip地址,做綁定抡句,本文ip都是一樣的探膊,端口號不一樣。
bind 172.19.210.221
  1. 保護(hù)模式修改為否待榔,允許遠(yuǎn)程連接
protected-mode no
  1. 設(shè)置密碼
requirepass "keweizhou"
  1. 主庫密碼與當(dāng)前庫密碼同步逞壁,保證從庫能夠提升為主庫
masterauth "keweizhou"
  1. 打開AOF持久化
appendonly yes

兩個(gè)從節(jié)點(diǎn)配置

兩個(gè)從節(jié)點(diǎn)和主節(jié)點(diǎn)的配置基本相同,額外需要添加主庫的同步配置

slaveof 172.19.210.221 6379

哨兵配置

修改3個(gè)節(jié)點(diǎn)的redis-sentinel配置文件锐锣、分別為:usr/tool/redis/sentinel.conf腌闯、usr/tool/redis-R1/sentinel.conf、usr/tool/redis-R2/sentinel.conf刺下,步驟如下:

# 1. 保護(hù)模式修改為否绑嘹,允許遠(yuǎn)程連接
     protected-mode no
# 2. 設(shè)定監(jiān)控地址,為對應(yīng)的主redis庫的內(nèi)網(wǎng)地址橘茉,mymaster為集群名字工腋,可以根據(jù)情況自己修改
     sentinel monitor mymaster 172.19.210.221 6379 2
# 3. 表示如果master重新選出來后,其它slave節(jié)點(diǎn)能同時(shí)并行從新master同步緩存的臺數(shù)有多少個(gè)畅卓,顯然該值              越大擅腰,所有slave節(jié)點(diǎn)完成同步切換的整體速度越快,但如果此時(shí)正好有人在訪問這些slave翁潘,可能造成讀取失敗趁冈,影響面會更廣。最保定的設(shè)置為1拜马,只同一時(shí)間渗勘,只能有一臺干這件事,這樣其它slave還能繼續(xù)服務(wù)俩莽,但是所有slave全部完成緩存更新同步的進(jìn)程將變慢旺坠。
     sentinel parallel-syncs mymaster 2
# 4. 主數(shù)據(jù)庫密碼,需要將配置放在sentinel monitor master 127.0.0.1 6379 1下面
     sentinel auth-pass mymaster keweizhou

sentinel.conf里面還有一些其他的參數(shù),可以根據(jù)項(xiàng)目情況自我設(shè)置扮超,如:sentinel failover-timeout取刃、sentinel down-after-milliseconds等

啟動

啟動順序需要按照Master->Slave->Sentinel進(jìn)行啟動蹋肮,分別把redis的config里面的daemonize參數(shù)設(shè)置為yes,這樣就可以后臺啟動進(jìn)程了璧疗,不用開啟多個(gè)窗口了坯辩,啟動步驟如下:

# 啟動redis-server的master和slave(根據(jù)配置文件啟動)
redis-server /usr/tool/redis/redis.conf
redis-server /usr/tool/redis-R1/redis.conf
redis-server /usr/tool/redis-R1/redis.conf

# 啟動3個(gè)redis-sentinel(根據(jù)配置文件啟動)
redis-sentinel /usr/tool/redis/sentinel.conf
redis-sentinel /usr/tool/redis-R1/sentinel.conf
redis-sentinel /usr/tool/redis-R2/sentinel.conf

redis-sentinel啟動如下:
<center>
<img style="border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);"
src="https://img-blog.csdnimg.cn/20200815192122612.png">


<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">redis-sentinel 啟動</div>
</center>

驗(yàn)證

同步狀態(tài)查看

進(jìn)入master節(jié)點(diǎn)通過info replication查看


在這里插入圖片描述

連接Sentinel狀態(tài)查看

[root@iZuf6b24c7i2yeaa3eldgfZ redis]# redis-cli -h 172.19.210.221 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.19.210.221:6379,slaves=2,sentinels=3
[root@iZuf6b24c7i2yeaa3eldgfZ redis]# redis-cli -h 172.19.210.221 -p 26389 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.19.210.221:6379,slaves=2,sentinels=3
[root@iZuf6b24c7i2yeaa3eldgfZ redis]# redis-cli -h 172.19.210.221 -p 26399 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.19.210.221:6379,slaves=2,sentinels=3
[root@iZuf6b24c7i2yeaa3eldgfZ redis]#

主從復(fù)制驗(yàn)證

主節(jié)點(diǎn)負(fù)責(zé)寫,從節(jié)點(diǎn)負(fù)責(zé)讀崩侠,只有主節(jié)點(diǎn)可以刪除數(shù)據(jù)漆魔、從節(jié)點(diǎn)只能同步主節(jié)點(diǎn)的數(shù)據(jù),如下:
在master節(jié)點(diǎn)添加一條數(shù)據(jù)
<center>
<img style="border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);"
src="https://img-blog.csdnimg.cn/20200815194031906.png">


<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">master節(jié)點(diǎn)增加數(shù)據(jù)</div>
</center>

從節(jié)點(diǎn)數(shù)據(jù)6389同步數(shù)據(jù):

<center>
<img style="border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);"
src="https://img-blog.csdnimg.cn/20200815194245323.png">


<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">從節(jié)點(diǎn)6389同步數(shù)據(jù)</div>
</center>

從節(jié)點(diǎn)數(shù)據(jù)6399同步數(shù)據(jù):

<center>
<img style="border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);"
src="https://img-blog.csdnimg.cn/20200815195553109.png">


<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">從節(jié)點(diǎn)6399同步數(shù)據(jù)</div>
</center>

哨兵高可用驗(yàn)證

分別連接對應(yīng)的redis服務(wù)端啦膜,手動停止哨兵有送、停止主redis服務(wù)淌喻,查看主是否切換成功

  • 把6379master節(jié)點(diǎn)停了
# redis實(shí)例掛掉兩臺僧家,剩下一臺能夠成為主,自動切換
# 1.利用kill -9 pid直接暴力殺掉當(dāng)前role:master的對應(yīng)的redis服務(wù),重新檢查狀態(tài)看是否切換
  kill -9 7400
# 2.查看連接:redis-cli -h 172.19.210.221 -p 26379 INFO Sentinel
  # Sentinel
  sentinel_masters:1
  sentinel_tilt:0
  sentinel_running_scripts:0
  sentinel_scripts_queue_length:0
  sentinel_simulate_failure_flags:0
  master0:name=mymaster,status=ok,address=172.19.210.221:6389,slaves=2,sentinels=3

可以看到此時(shí)master節(jié)點(diǎn)已經(jīng)切換到6389上了(原來6379)

  • 再把6389master節(jié)點(diǎn)停了裸删,查看連接情況
# redis-cli -h 172.19.210.221 -p 26379 INFO Sentinel
 sentinel_masters:1
 sentinel_tilt:0
 sentinel_running_scripts:0
 sentinel_scripts_queue_length:0
 sentinel_simulate_failure_flags:0
 master0:name=mymaster,status=ok,address=172.19.210.221:6399,slaves=2,sentinels=3

可以看見master節(jié)點(diǎn)已經(jīng)切換到6399了八拱,這里的切換并不是一下子完成的,需要稍微等待幾秒

搭建過程遇到的問題

在/etc/sysctl.conf中添加: net.core.somaxconn = 2048
然后在終端中執(zhí)行
sysctl -p
  • 啟動redis-client的時(shí)候出現(xiàn):Error: Connection reset by peer
    重新啟動redis服務(wù)端涯塔,根據(jù)配置文件啟動
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肌稻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匕荸,更是在濱河造成了極大的恐慌爹谭,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榛搔,死亡現(xiàn)場離奇詭異诺凡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)践惑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門腹泌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尔觉,你說我怎么就攤上這事凉袱。” “怎么了侦铜?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵专甩,是天一觀的道長。 經(jīng)常有香客問我钉稍,道長涤躲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任嫁盲,我火速辦了婚禮篓叶,結(jié)果婚禮上烈掠,老公的妹妹穿的比我還像新娘。我一直安慰自己缸托,他們只是感情好左敌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俐镐,像睡著了一般矫限。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佩抹,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天叼风,我揣著相機(jī)與錄音,去河邊找鬼棍苹。 笑死无宿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枢里。 我是一名探鬼主播孽鸡,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼栏豺!你這毒婦竟也來了彬碱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤奥洼,失蹤者是張志新(化名)和其女友劉穎巷疼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灵奖,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚼沿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桑寨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伏尼。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尉尾,靈堂內(nèi)的尸體忽然破棺而出爆阶,到底是詐尸還是另有隱情,我是刑警寧澤沙咏,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布辨图,位于F島的核電站,受9級特大地震影響肢藐,放射性物質(zhì)發(fā)生泄漏故河。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一吆豹、第九天 我趴在偏房一處隱蔽的房頂上張望鱼的。 院中可真熱鬧理盆,春花似錦、人聲如沸凑阶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宙橱。三九已至姨俩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間师郑,已是汗流浹背环葵。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宝冕,地道東北人张遭。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像猬仁,于是被迫代替她去往敵國和親帝璧。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344