1. 程式人生 > >專案架構之三主三從三Sentinel筆記(13)

專案架構之三主三從三Sentinel筆記(13)

一:Sentinel 【哨兵】
1. Sentinel是幹嘛的呢??

     用於監視master是否正常線上,如果說master掛掉了,sentinel會讓slave頂上去。
2. 開多少Sentinel適合?
     開3個Sentinel,或者說開奇數個,Sentinel的原理就是一直監視著master是否線上,
     如果掛掉,sentinel的叢集會選舉中一個零頭的sentinel,然後由領頭的sentinel
     執行slaveof命令,讓slave作為master,然後sentinel叢集繼續監視著新的master,
     老的master還是會一直監控著,如果啟動了,那麼老的master會作為新master的slave。
3.  sentinel判斷master下線的兩種標準。
     《1》 主觀下線
。   sentinel發現master沒有在指定時間返回資訊,這種情況被認為
                        主線下線。 【指定時間:這個時間是我們設定的】


     《2》 客觀下線。  sentinel詢問sentinel的叢集,看一下其他的sentinel是否也標記
                       這master是否下線,如果標記sentinel下線的個數達到一個閥值,
      sentinel會將master標記為主線下線,這個時候能會選取領頭的
      sentinel。由領頭的sentinel選取master下面的一個slave1去作為
      新的master。

4. 做一個實踐:

master1 6369 slave1 6370 slave11 6371 master2 6379 slave2 6380 master3 6389 slave3 6390 還有 3個Sentinel。分別是26379,26380,26381

5. 畫圖描敘



6. 設定sentinel的四個條件:(run_id : a1b96c0346a2e15af8e52754ba76034e2bbdaabf)


   《1》你要監視的主伺服器的ip地址,以及sentinel標記客觀下線的閥值。 
        sentinel monitor a1b96c0346a2e15af8e52754ba76034e2bbdaabf 127.0.0.1 6379 2
   《2》sentinel認為“主線下線”的一個閥值。

        sentinel down-after-milliseconds <master-name> <milliseconds>
   《3》 故障恢復期間可以同時slave的個數。
        sentinel parallel-syncs a1b96c0346a2e15af8e52754ba76034e2bbdaabf 1
  《4》 故障恢復允許的最大時長

實踐如下

1)檔案目錄圖如下,master,slave相關的存放的是redis.conf,redis-cli,redis-server;sentinel存放的是redis-sentinel,sentinel.conf


2)按照上述設定sentinel.conf,記得修改埠號,並啟動

[[email protected] sentinel1]# ./redis-sentinel sentinel.conf

3)檢視redis的主從關係

127.0.0.1:6369> info 


127.0.0.1:6369> info replication


4)把主停掉,會顯示切換從為主,然後在啟動之前的主,會看到之前的主程序會變成從