redis-sentinel 是我們這次來一同學習 redis 的重點,在我們現在的系統已經離不開 redis 的時候 , redis 挂掉了或者是一些其他問題都是緻命的 , 那麼怎麼做到 redis 的高可用呢 , 官方有提供一個管理 redis 叢集自動容災的一個應用 redis-sentinel .那麼我們就來一同搭建一個 redis 高可用的 redis 叢集.
附上:
sentinel可以用于管理多個redis服務,并且會執行三個任務:
監控(monitoring): sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。
提醒(notification): 當被監控的某個 redis 伺服器出現問題時, sentinel 可以通過 api 向管理者或者其他應用程式發送通知。
自動故障遷移(automatic failover): 當一個主伺服器不能正常工作時, sentinel 會開始一次自動故障遷移操作, 它會将失效主伺服器的其中一個從伺服器更新為新的主伺服器, 并讓失效主伺服器的其他從伺服器改為複制新的主伺服器; 當用戶端試圖連接配接失效的主伺服器時, 叢集也會向用戶端傳回新主伺服器的位址, 使得叢集可以使用新主伺服器代替失效伺服器。
redis sentinel 是一個分布式系統, 你可以在一個架構中運作多個 sentinel 程序(progress), 這些程序使用流言協定(gossip protocols)來接收關于主伺服器是否下線的資訊, 并使用投票協定(agreement protocols)來決定是否執行自動故障遷移, 以及選擇哪個從伺服器作為新的主伺服器。
雖然 redis sentinel 釋出為一個單獨的可執行檔案 redis-sentinel , 但實際上它隻是一個運作在特殊模式下的 redis 伺服器, 你可以在啟動一個普通 redis 伺服器時通過給定 --sentinel 選項來啟動 redis sentinel 。
我們準備2台 liunx 伺服器内網 ip 分别為 192.168.0.20 和 192.168.0.21
然在兩台伺服器上面各配置好兩個 redis 執行個體為:
192.168.0.20:6379
192.168.0.20:6380
192.168.0.21:6381
192.168.0.21:6382
然後我們配置好主從關系把192.168.0.20:6379作為主redis其餘作為從redis
在我們redis編譯完成的目錄中src目錄下有一個 redis-sentinel 的程式,我們把他 cp 到 /usr/local/bin/ 下面就可以直接使用 redis-sentinel 指令了
我們分别在2台伺服器上建立4個 sentinel 執行個體我們先配置 192.168.0.20 這台伺服器
第一行 監聽的端口号
第二行 配置訓示 sentinel 去監視一個名為 mymaster的主伺服器,這個主伺服器的ip位址為 192.168.0.20,端口号為 6379 , 而将這個主伺服器判斷為失效至少需要 2 個 sentinel 同意 (隻要同意 sentinel 的數量不達标,自動故障遷移就不會執行)。
第三行 down-after-milliseconds 選項指定了 sentinel 認為伺服器已經斷線所需的毫秒數。
第四行 failover-timeout 設定故障恢複時間 , 也就是當故障了切換了主了之後多久去檢測原來的主伺服器是否可以用并且進行處理的毫秒數
第五行 parallel-syncs 選項指定了在執行故障轉移時, 最多可以有多少個從伺服器同時對新的主伺服器進行同步, 這個數字越小, 完成故障轉移所需的時間就越長。
第六行 配置連接配接主庫的密碼,如果主庫有密碼沒有設定此項則會無法聯通
然後以同樣的配置配置好端口為 192.168.0.20:26380 , 192.168.0.21:26381 和 192.168.0.21:26382
然後我們使用 redis-sentinel 分表在2台伺服器上面
我們觀察終端的語句會出現如下輸出
看到2個子執行個體都綁定上了 , 4個 sentinel 也都顯示了這個時候就證明已經配置好了 redis-sentinel 然後我們在主服務上面執行如下語句
這個時候就可以看到在終端中在列印了一些轉換的語句,我們在檢查主從設定的時候就已經自動轉意到了莫一個 redis 子執行個體上了,當我們重新把主運作起來之後,主執行個體會自動成為子執行個體
本節主要介紹了怎麼配置一個 redis 叢集,以及怎麼把 redis-sentinel 跑起來來達到高可用容災切換的問題,更多的操作可以參考 sentinel 官方文檔來了解更多的關于 sentinel 的操作.
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!
phalapi官網qq交流群:421032344 歡迎大家的加入!