1. 程式人生 > >Redis哨兵Sentinel

Redis哨兵Sentinel

Sentinel是Redis的高可用性解決方案:由一個或多個Sentinel示例組成的Sentinel系統可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,並在被監視的主伺服器進入下線狀態時,自動將下線主伺服器的某個從伺服器升級為主伺服器,然後由新的主伺服器代替已下線的主伺服器繼續處理命令請求。

info Replication # 檢視伺服器的當前狀態
config get slave-read-only # 獲得伺服器的slave-read-only屬性
config set slave-read-only no # 配置伺服器的slave-read-only屬性為no

在這裡插入圖片描述

當master伺服器shutdown後,手動配置(1)(2)
(1)讓slaver1變成新的master

  1. 命令該伺服器slaver1不做其他redis伺服器的slaver:slaveof no one
  2. 執行時修改slave-read-only為no,使其可寫:config set slave-read-only no

(2)其他的slaver

  • 命令該服務為新master的slave:slaveof IP Port

Sentinel監控主從伺服器

實現原理:Sentinel不斷的與master進行通訊,當通訊失敗時,就會自動將slave1切換成master,將slaver2切換成slaver1
在這裡插入圖片描述

  1. Sentinel監控配置
1.切換當前的工作目錄為/sur/local/redis

2.~/redis-5.0.0/sentinel.conf拷貝到當前目錄
[[email protected] redis]$ sudo cp ~/redis-5.0.0/sentinel.conf .

3.開啟sentinel.conf配置檔案,檢視下面相關配置資訊
sentinel monitor mymaster 127.0.0.1 6379 1  # 有1個哨兵監視到master shutdown了,就認為master shutdown了
sentinel down-after-milliseconds mymaster 30000
# 30s連不上,就認為master shutdown了 sentinel parallel-syncs mymaster 1 # 同時把1臺slaver指向新的master上,防止新的master IO劇增 sentinel failover-timeout mymaster 180000 # 15min內沒有完成設想的過程,則認為這次切換過程失敗了,就發個指令碼/來個簡訊通知 4.配置redis_slaver1.conf的優先順序選項slave-priority,使得當master shutdown後,優先啟動該機器作為新的master
  1. 測試一主兩從的Sentinel監控
1. 開啟3臺伺服器,分別為master、slaver1、slaver2
2. 開啟sentinel監控,./bin/redis-server ./sentinel.conf --sentinel
3. 關閉掉master,觀察sentinel監控列印的資訊,一段時間後,master會發生切換