Redis哨兵Sentinel
阿新 • • 發佈:2018-11-19
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
- 命令該伺服器slaver1不做其他redis伺服器的slaver:slaveof no one
- 執行時修改slave-read-only為no,使其可寫:config set slave-read-only no
(2)其他的slaver
- 命令該服務為新master的slave:slaveof IP Port
Sentinel監控主從伺服器
實現原理:Sentinel不斷的與master進行通訊,當通訊失敗時,就會自動將slave1切換成master,將slaver2切換成slaver1
- 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
- 測試一主兩從的Sentinel監控
1. 開啟3臺伺服器,分別為master、slaver1、slaver2
2. 開啟sentinel監控,./bin/redis-server ./sentinel.conf --sentinel
3. 關閉掉master,觀察sentinel監控列印的資訊,一段時間後,master會發生切換