1. 程式人生 > >redis主從加哨兵模式的實踐

redis主從加哨兵模式的實踐

redis是一個基於記憶體的kv資料庫,其吞吐效能可想而知,隨著redis應用得越來越廣泛,以及對它的依賴程度越來越高,它的高可用便成了需要考慮的一個很重要的點。

於是今天在自己電腦上實踐了一下redis的主從模式和哨兵監控。

基本架構:一主二從,加一哨兵

先為master和slave編輯配置檔案:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

為它們配置ip和埠,這裡6379是master,6380和6381為slave。

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡順便看了一些redis的持久化,分為兩種,預設開啟的是rdb模式,達到一定條件則進行持久化。而aof則是通過操作日誌的方式進行持久化。aof的一致性更好,但效能則不如rdb。

配置完之後,開啟這三個redis例項:

jeffrey$ ./redis-server ../etc/redis6379.conf
jeffrey$ ./redis-server ../etc/redis6380.conf
jeffrey$ ./redis-server ../etc/redis6381.conf

這裡寫圖片描述
這個時候其實它們三個還沒有主從關係,我先在6379上設定一對kv。

這裡寫圖片描述
然後我在6380上設定其為6379的slave
這裡寫圖片描述
發現redis從master同步了資料到slave
這裡寫圖片描述
6380也確實把剛剛在6379上設定的資料同步了過來,6381同6380

現在來試一下主從資料同步:
這裡寫圖片描述
這裡寫圖片描述
資料成功同步了過來

然後我試一下在slave上寫入資料,發現:


這裡寫圖片描述
看來redis主從模式是做了讀寫分離的。

然後我在6379的client上進行shutdown,模擬master宕機,下圖可知,從機工作一切正常,但並沒有頂替master的位置。
這裡寫圖片描述

於是該如何讓slave在master宕機的情況下,自動的接管master的位置,那就需要用到哨兵。
這裡寫圖片描述
為哨兵編輯配置檔案,然後啟動哨兵

 jeffrey$ ./redis-sentinel ../etc/sentinel6379.conf

然後將6379shutdown
這裡寫圖片描述
在上圖倒數第四行,發現master從6379切換為了6380,這其中其實發生了一個投票的過程,具體這裡不多說了。
這裡寫圖片描述
6380確實變為了master


這裡寫圖片描述
6381依舊是slave,只不過它的master變為了6380,見上圖。