Redis哨兵(sentinel)模式搭建

來源:互聯網
上載者:User

標籤:名稱   red   指定   查看   請求   測試   -o   vpd   通訊   

一、Sentinel介紹

之前騷了一波Redis的簡介及應用情境,今天試了下他的哨兵模式;

Sentinel是Redis的高可用性(HA)解決方案,由一個或多個Sentinel執行個體組成的Sentinel系統可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,

並在被監視的主伺服器進行下線狀態時,自動將下線主伺服器屬下的某個從伺服器升級為新的主伺服器,然後由新的主伺服器代替已下線的主伺服器繼續處理命令請求。

Redis提供的sentinel(哨兵)機制,通過sentinel模式啟動redis後,自動監控master/slave的運行狀態,基本原理是:心跳機制+投票裁決
監控(Monitoring): Sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。
提醒(Notification): 當被監控的某個 Redis 伺服器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程式發送通知。
自動故障遷移(Automatic failover): 當一個主伺服器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主伺服器的其中一個從伺服器升級為新的主伺服器,

並讓失效主伺服器的其他從伺服器改為複製新的主伺服器; 當用戶端試圖串連失效的主伺服器時, 叢集也會向用戶端返回新主伺服器的地址, 使得叢集可以使用新主伺服器代替失效伺服器。

二、Redis Sentinel搭建

測試採用2個哨兵,1個主redis,2個從redis。
複製5份redis.windows.conf檔案並重新命名如下(開發人員可根據自己的開發習慣進行重新命名):

master.6379.conf 配置:

port 6379
#設定串連密碼
requirepass grs
#串連密碼
masterauth grs

slave.6380.conf 配置:

port 6380
requirepass grs
masterauth grs
dbfilename dump6380.rdb
#配置master
slaveof 127.0.0.1 6379

slave.6381.conf 配置:

port 6381
requirepass grs
masterauth grs
dbfilename dump6381.rdb
#配置master
slaveof 127.0.0.1 6379

sentinel.63791.conf 配置(將原設定檔清空後添加如下內容)(另一個一樣,只需要修改下連接埠):

port 63791
#主master,2個sentinel選舉成功後才有效,這裡的master-1是名稱,在整合的時候需要一致,這裡可以隨便更改
sentinel monitor master-1 127.0.0.1 6379 2
#判斷主master的掛機時間(毫秒),逾時未返回正確資訊後標記為sdown狀態
sentinel down-after-milliseconds master-1 5000
#若sentinel在該配置值內未能完成failover操作(即故障時master/slave自動切換),則認為本次failover失敗。
sentinel failover-timeout master-1 18000
#身份認證
sentinel auth-pass master-1 grs
#選項指定了在執行容錯移轉時, 最多可以有多少個從伺服器同時對新的主伺服器進行同步,這個數字越小,完成容錯移轉所需的時間就越長
sentinel parallel-syncs master-1 1

這裡有三個問題需要注意
第一,若通過redis-cli -h 127.0.0.1 -p 6379串連,無需改變更配置置檔案,設定檔預設配置為bind 127.0.0.1(只允許127.0.0.1串連訪問)
若通過redis-cli -h 192.168.180.78 -p 6379串連,需改變更配置置檔案,配置資訊為bind 127.0.0.1 192.168.180.78(只允許127.0.0.1和192.168.180.78訪問)或者將bind 127.0.0.1注釋掉(允許所有遠端存取)
第二,masterauth為所要串連的master伺服器的requirepass,如果一個redis叢集中有一個master伺服器,兩個slave伺服器,當master伺服器掛掉時,sentinel哨兵會隨機播放一個slave伺服器充當master伺服器,鑒於這種機制,解決辦法是將所有的主從伺服器的requirepass和masterauth都設定為一樣。
第三,sentinel monitor master-1 127.0.0.1 6379 2 行尾最後的一個2代表什麼意思呢?我們知道,網路是不可靠的,有時候一個sentinel會因為網路堵塞而誤以為一個master redis已經死掉了,當sentinel叢集式,解決這個問題的方法就變得很簡單,只需要多個sentinel互相溝通來確認某個master是否真的死了,這個2代表,當叢集中有2個sentinel認為master死了時,才能真正認為該master已經不可用了。(sentinel叢集中各個sentinel也有互相通訊,通過gossip協議)。
按如下循序依次啟動服務
1、redis-server master.6379.conf

2、redis-server slave.6380.conf

3、redis-server slave.6381.conf

4、redis-server sentinel.63791.conf --sentinel(linux:redis-sentinel sentinel.63791.conf)

5、redis-server sentinel.63792.conf --sentinel(linux:redis-sentinel sentinel.63792.conf)

查看master狀態:

查看slave狀態:

查看sentinel狀態:

驗證redis sentinel的主從切換:
1、首先關閉主redis(6379)服務(shutdown)。
2、查看哨兵,發現連接埠號碼為6380的從服務變成了主服務,sentinel自動完成了故障切換。

3、啟動剛才被shutdown的6379服務並查看,發現它變成了從服務。

到這 我搭建和示範就結束了

後續單機版 spring 整合使用慢慢玩吧,成功了再來

Redis哨兵(sentinel)模式搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.