天天看點

redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程序哨兵工作原理

相關閱讀:

linux 安裝redis 完整步驟

Redis主從架構搭建詳細步驟

此時我已經搭建好主從了,一主2從

我們來了解哨兵相關内容,哨兵的工作是幹啥?一般都是在外面監控着敵情變化,告訴上司,讓上司好做事情,但是如果上司被一個飛彈給炸死了怎麼辦?帶着這些疑問去學習下哨兵相關内容

哨兵是什麼?

哨兵(sentinel) 是一個分布式系統,用于對主從結構中的每台伺服器進行監控,當出現故障時通過投票機制選擇新的

master并将所有slave連接配接到新的master。

哨兵的作用

  • 監控

    不斷的檢查master和slave是否正常運作。

    master存活檢測、 master與slave運作情況檢測

  • 通知(提醒)

    當被監控的伺服器出現問題時,向其他(哨兵間,用戶端)發送通知。

  • 自動故障轉移

    斷開master與slave連接配接,選取一個slave作為master,将其他slave連接配接到新的master,并告知用戶端新的服

    務器位址

    注意:

    哨兵也是一台redis伺服器,隻是不提供資料服務

    通常哨兵配置數量為單數

環境搭建

redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理

sentinel monitor mymaster 127.0.0.1 6379 2

mymaster 是一個名字可以随便叫

2這個參數決定了最終參與選舉的伺服器數量,比如我,1個我們就設定1,3個哨兵就是設定2,5個就設定3,這也說明我們位數哨兵個數是單數的原因

說明:

mymaster:監控主資料的名稱,自定義即可,可以使用大小寫字母和“.-_”符号

127.0.0.1:監控的主資料庫的IP

6379:監控的主資料庫的端口

2:最低通過票數

redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理

啟動哨兵程序

redis-sentinel /opt/redis/6379/26379.conf 或者 redis-server /opt/redis/6379/26379.conf --sentinel

redis-sentinel /opt/redis/6380/26380.conf 或者 redis-server /opt/redis/6380/26380.conf --sentinel

redis-sentinel /opt/redis/6380/26380.conf 或者 redis-server /opt/redis/6381/26381.conf --sentinel

1.檢視sentinel的基本狀态資訊

127.0.0.1:26379> INFO

2.列出所有被監視的主伺服器,以及這些主伺服器的目前狀态

127.0.0.1:26379> SENTINEL MASTERS redis-test-master

3.列出給定主伺服器的所有從伺服器,以及這些從伺服器的目前狀态

127.0.0.1:26379> SENTINEL SLAVES redis-test-master

4.傳回給定名字的主伺服器的IP位址和端口号

127.0.0.1:26379> SENTINEL GET-MASTER-ADDR-BY-NAME redis-test-master

5.重置所有名字和給定模式pattern相比對的主伺服器,重置操作清除主伺服器目前的所有狀态,包括正在執行中的故障轉移,并移除目

前已經發現和關聯的,主伺服器的所有從伺服器和Sentinel

127.0.0.1:26379> SENTINEL RESET redis-test-master

6.當主伺服器失效時,在不詢問其他Sentinel意見的情況下,強制開始一次自動故障遷移,但是它會給其他Sentinel發送一個最新的配

置,其他sentinel會根據這個配置進行更新

127.0.0.1:26379> SENTINEL FAILOVER redis-test-master

7.檢視其它哨兵資訊

127.0.0.1:26379> SENTINEL sentinels redis-test-master

現在已經把環境搭建好了,此時你可以把6379主給當機,再看哨兵的日志資訊,

redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理

哨兵工作原理

redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理
redis哨兵環境搭建和工作原理哨兵是什麼?哨兵的作用環境搭建啟動哨兵程式哨兵工作原理

4.Sentinel原理介紹

首先解釋2個名詞:SDOWN和ODOWN.

SDOWN:subjectively down,直接翻譯的為”主觀”失效,即目前sentinel執行個體認為某個redis服務為”不可用”狀态.

ODOWN:objectively down,直接翻譯為”客觀”失效,即多個sentinel執行個體都認為master處于”SDOWN”狀态,那麼此時master将處于ODOWN,ODOWN可以簡單了解為master已經被叢集确定為”不可用”,将會開啟failover

SDOWN與ODOWN轉換過程:

i.每個sentinel執行個體在啟動後,都會和已知的slaves/master以及其他sentinels建立TCP連接配接,并周期性發送PING(預設為1秒),在互動中,如果redis-server無法在”down-after-milliseconds”時間内響應或者響應錯誤資訊,都會被認為此redis-server處于SDOWN狀态.

ii.SDOWN的server為master,那麼此時sentinel執行個體将會向其他sentinel間歇性(一秒)發送”is-master-down-by-addr ”指令并擷取響應資訊,如果足夠多的sentinel執行個體檢測到master處于SDOWN,那麼此時目前sentinel執行個體标記master為ODOWN…其他sentinel執行個體做同樣的互動操作.配置項”sentinel monitor ”,如果檢測到master處于SDOWN狀态的slave個數達到,那麼此時此sentinel執行個體将會認為master處于ODOWN.

每個sentinel執行個體将會間歇性(10秒)向master和slaves發送”INFO”指令,如果master失效且沒有新master選出時,每1秒發送一次”INFO”;”INFO”的主要目的就是擷取并确認目前叢集環境中slaves和master的存活情況.

經過上述過程後,所有的sentinel對master失效達成一緻後,開始failover.

Sentinel與slaves”自動發現”機制:

在sentinel的配置檔案中,都指定了port,此port就是sentinel執行個體偵聽其他sentinel執行個體建立連結的端口.在叢集穩定後,最終會每個sentinel執行個體之間都會建立一個tcp連結,此連結中發送”PING”以及類似于”is-master-down-by-addr”指令集,可用用來檢測其他sentinel執行個體的有效性以及”ODOWN”和”failover”過程中資訊的互動.在sentinel之間建立連接配接之前,sentinel将會盡力和配置檔案中指定的master建立連接配接.sentinel與master的連接配接中的通信主要是基于pub/sub來釋出和接收資訊,釋出的資訊内容包括目前sentinel執行個體的偵聽端口.