Redis(七):Redis哨兵模式部署

Redis哨兵模式

第一:同樣端口規劃,如果是多臺服務器,就要進行服務器ip規劃,同redis主從
類型 角色 IP 端口
Redis-sentinel sentinel1 192.168.30.134 26379
Redis-sentinel sentinel2 192.168.30.134 26380
Redis-sentinel sentinel3 192.168.30.134 26381
第二:Sentinel的主要配置參數(配置文件位置)

參考網址:https://www.cnblogs.com/heroinss/p/10340925.html

# Example sentinel.conf
 
# 哨兵sentinel實例運行的端口 默認26379
port 26379
 
# 哨兵sentinel的工作目錄
dir /tmp
 
# 哨兵sentinel監控的redis主節點的 ip port 
# master-name  可以自己命名的主節點名字 只能由字母A-z、數字0-9 、這三個字符".-_"組成。
# quorum 當這些quorum個數sentinel哨兵認爲master主節點失聯 那麼這時 客觀上認爲主節點失聯了
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
  sentinel monitor mymaster 127.0.0.1 6379 2
 
# 當在Redis實例中開啓了requirepass foobared 授權密碼 這樣所有連接Redis實例的客戶端都要提供密碼
# 設置哨兵sentinel 連接主從的密碼 注意必須爲主從設置一樣的驗證密碼
# sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
 
 
# 指定多少毫秒之後 主節點沒有應答哨兵sentinel 此時 哨兵主觀上認爲主節點下線 默認30秒
# sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 30000
 
# 這個配置項指定了在發生failover主備切換時最多可以有多少個slave同時對新的master進行 同步,
這個數字越小,完成failover所需的時間就越長,
但是如果這個數字越大,就意味着越 多的slave因爲replication而不可用。
可以通過將這個值設爲 1 來保證每次只有一個slave 處於不能處理命令請求的狀態。
# sentinel parallel-syncs <master-name> <numslaves>
sentinel parallel-syncs mymaster 1
 
 
 
# 故障轉移的超時時間 failover-timeout 可以用在以下這些方面: 
# 1. 同一個sentinel對同一個master兩次failover之間的間隔時間。
# 2. 當一個slave從一個錯誤的master那裏同步數據開始計算時間。直到slave被糾正爲向正確的master那裏同步數據時。
# 3.當想要取消一個正在進行的failover所需要的時間。  
# 4.當進行failover時,配置所有slaves指向新的master所需的最大時間。不過,即使過了這個超時,slaves依然會被正確配置爲指向master,但是就不按parallel-syncs所配置的規則來了
# 默認三分鐘
# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 180000
 
# SCRIPTS EXECUTION
 
# 配置當某一事件發生時所需要執行的腳本,可以通過腳本來通知管理員,例如當系統運行不正常時發郵件通知相關人員。
# 對於腳本的運行結果有以下規則:
# 若腳本執行後返回1,那麼該腳本稍後將會被再次執行,重複次數目前默認爲10
# 若腳本執行後返回2,或者比2更高的一個返回值,腳本將不會重複執行。
# 如果腳本在執行過程中由於收到系統中斷信號被終止了,則同返回值爲1時的行爲相同。
# 一個腳本的最大執行時間爲60s,如果超過這個時間,腳本將會被一個SIGKILL信號終止,之後重新執行。
 
# 通知型腳本:當sentinel有任何警告級別的事件發生時(比如說redis實例的主觀失效和客觀失效等等),將會去調用這個腳本,
# 這時這個腳本應該通過郵件,SMS等方式去通知系統管理員關於系統不正常運行的信息。調用該腳本時,將傳給腳本兩個參數,
# 一個是事件的類型,
# 一個是事件的描述。
# 如果sentinel.conf配置文件中配置了這個腳本路徑,那麼必須保證這個腳本存在於這個路徑,並且是可執行的,否則sentinel無法正常啓動成功。
# 通知腳本
# sentinel notification-script <master-name> <script-path>
  sentinel notification-script mymaster /var/redis/notify.sh
 
# 客戶端重新配置主節點參數腳本
# 當一個master由於failover而發生改變時,這個腳本將會被調用,通知相關的客戶端關於master地址已經發生改變的信息。
# 以下參數將會在調用腳本時傳給腳本:
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
# 目前<state>總是“failover”,
# <role>是“leader”或者“observer”中的一個。 
# 參數 from-ip, from-port, to-ip, to-port是用來和舊的master和新的master(即舊的slave)通信的
# 這個腳本應該是通用的,能被多次調用,不是針對性的。
# sentinel client-reconfig-script <master-name> <script-path>
 sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

項目中主要進行配置有以下幾個參數:

# port 26379
// 監控master配置
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
// 驗權
# sentinel auth-pass <master-name> <password>
// 同一臺master,兩次failover的最小時間(毫秒)
# sentinel failover-timeout <master-name> <milliseconds>
// 兜底
# sentinel parallel-syncs <master-name> <numslaves>
// sentinel監控redis主觀失效或客觀失效,通過腳本使用郵件或 #SMS方式通知系統管理員(線上很實用)
# sentinel notification-script <master-name> <script-path>

進入sentinel容器後可以通過命令操作sentinel參數

常用命令如下

SENTINEL masters 顯示被監控的所有master以及它們的狀態.
SENTINEL master <master name> 顯示指定master的信息和狀態;
SENTINEL slaves <master name> 顯示指定master的所有slave以及它們的狀態;
SENTINEL get-master-addr-by-name <master name> 返回指定master的ip和端口,如果正在進行failover或者failover已經完成,將會顯示被提升爲master的slave的ip和端口。
SENTINEL failover <master name> 強制sentinel執行failover,並且不需要得到其他sentinel的同意。但是failover後會將最新的配置發送給其他sentinel。
修改配置:
sentinel monitor test 127.0.0.1 6379 2 添加新的監聽
SENTINEL REMOVE test 放棄對某個master監聽
SENTINEL set failover-timeout mymaster 180000 設置配置選項

啓動sentinel的命令就很簡單

# 使用鏡像,然後創建容器,通過本地文件掛載的形式
# 直接啓動sentinel程序
[root@localhost ~]# redis-sentinel /usr/local/redis/etc/sentinel.conf
# docker 部署Redis哨兵模式
[root@localhost ~]# docker run -it  --name sentinel-26379 -p 26379:26379 -v /usr/local/floatcloud/sentinel-26379/sentinel.conf:/sentinel.conf -v /usr/local/floatcloud/sentinel-26379/data:/data --privileged=true redis redis-sentinel /sentinel.conf

概括下上述步驟:1,規劃服務器(單個虛擬機就是規劃節點);2,進行配置文件的修改;3,docker運行容器(掛載配置文件與持久化數據,以指定配置文件運行容器)。


道友們,有收穫的話,點個贊再走唄!

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章