Redis Sentinel哨兵集群


Redis Sentinel(哨兵集群)是一種高可用的redis部署方案。在集群中的redis-master服務掛掉時,無需人為干預,即可通過哨兵集群的自我調整,實現redis服務的持續可用。

哨兵集群的功能:

  1. 監控:持續監測集群中的master和slave是否可用。
  2. 通知:通知系統管理員,集群中的部分服務不可用。
  3. 故障切換:若master掛掉,哨兵集群會啟動故障切換,選出其中一個slave作為新的master。使用redis的應用程序也會被告知使用新的master。
  4. 提供配置信息:哨兵集群為redis客戶提供服務發現功能,客戶端訪問哨兵集群,會被告知當前的master地址。

哨兵集群的分布式特性:多個哨兵進程協同工作。

多個哨兵進程的好處:

  1. 故障需要多個進程同時確認,降低了發現故障時出錯的概率。
  2. 部分哨兵進程掛掉后,集群同樣可以維持工作,從而使系統更加健壯。

運行哨兵的命令

redis-sentinel /path/to/sentinel.conf

或者

redis-server /path/to/sentinel.conf --sentinel

哨兵集群的配置文件必須存在,且是可寫的。

哨兵集群中的各個redis間默認使用26379端口來通信。

部署哨兵集群之前之前必須明確:

  1. 至少有三台redis才能保證系統的健壯
  2. 三台或三台以上redis必須部署在不同的計算機或者虛擬機中,從而降低各個redis同時掛掉的概率
  3. 哨兵+ redis分布式系統不保證承認寫過程中保留故障,由於Redis使用異步復制。然而,有一些方法來部署哨兵,使窗口失去寫入限制到某些時刻,而有其他不太安全的方法來部署它。
  4. redis客戶端需要支持哨兵集群

哨兵集群的配置

案例1:

port 5000
sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1

案例2

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

第一行配置的詳解:

sentinel monitor <master-group-name> <ip> <port> <quorum>

 

案例1中,port5000是指sentinel工作的端口是5000

監控名為mymaster的哨兵集群,地址為 127.0.0.1 端口為6379 ,2表示兩個哨兵發現master不可用才發起故障切換.

案例2中,監控名為resque的哨兵集群,地址為192.168.1.3 端口為6380,4個哨兵發現master不可用才能發起故障切換。

注意:故障切換的兩個條件:

1.quorum個哨兵發現master不可用

2.半數以上的哨兵可用

 

關於sentinel的一些常用命令:

1.首先通過redis-cli 登錄

redis-cli -p 5000

2.查看master信息,其中mymaster是哨兵集群的名稱

sentinel master mymaster

3.查看slaves信息

SENTINEL slaves mymaster

4.查看其它哨兵信息

SENTINEL sentinels mymaster

5.查看master的地址

SENTINEL get-master-addr-by-name mymaster

6.其它

1.PING //測試sentinel是夠正常,正常的話返回PONG

2.sentinel masters //返回哨兵集群監控的master列表和狀態

3.SENTINEL MONITOR <name> <ip> <port> <quorum>  //運行時增加監控對象

4.SENTINEL REMOVE <name>  //刪除所監控的master

5.SENTINEL SET <name> <option> <value> //修改配置

 

 增加哨兵

1.配置sentinel文件

2.執行啟動命令

sentinel  sentinel.conf

刪除哨兵

1.殺死哨兵進程

2.所有其他的哨兵執行

sentinel reset  mastername

3.查看各個哨兵監測的master

sentinel master mastername

刪除master的slave,更改master的配置文件后對各個哨兵執行

sentinel reset mastername

 

 工作原理:

 

首先來了解哨兵集群中兩個重要的基本概念:

SDOWN(主觀宕機):哨兵實例的PING命令沒有返回+PONG,-LOADING error,-MASTERDOWN error。

ODOWN(客觀宕機):足夠數量(大於等於sentinel.conf文件中的配置)的哨兵實例判斷出發生了SDOWN。

 

發生客觀宕機后開始故障切換。

 

哨兵集群可以自動發現各個哨兵實例以及redis master的slave


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM