官網:http://redisdoc.comredis
1、Sentinel介紹
當用redis做master-slave的高可用時,若是master宕機,redis自己或者客戶端都沒有實現主從切換的功能,而redis-sentinel是一個獨立運行的進程,用於監控多個master-slave集羣,它的做用:當master服務器不能正常工做時, Sentinel會開始一次自動故障遷移操做, 它會將失效master服務器的其中一個slave服務器升級爲新的master服務器, 並讓失效master服務器的其餘從服務器改成複製新的master服務器; 當客戶端試圖鏈接失效的master服務器時, 集羣也會向客戶端返回新master服務器的地址, 使得集羣可使用新master服務器代替失效服務器。數據庫
2、配置測試
相關查看命令:服務器
# 查看redis數據庫全部信息 redis-cli info # 查看redis的複製受權信息 redis-cli info replication # 查看redis的哨兵信息 redis-cli info sentinel
這裏僅用一臺服務器來示例。ide
約定:測試
- master爲redis-6380.conf,slave分別爲redis-6381.conf和redis-6382.conf
- 全部redis配置放在/etc/redis目錄下
bind 127.0.0.1 port 6380 daemonize yes pidfile /var/redis/redis-6380.pid logfile /var/redis/redis-6380.log dbfilename dump-6380.rdb dir /var/redis/data
bind 127.0.0.1 port 6381 daemonize yes pidfile /var/redis/redis-6381.pid logfile /var/redis/redis-6381.log dbfilename dump-6381.rdb dir /var/redis/data slaveof 127.0.0.1 6380
bind 127.0.0.1 port 6382 daemonize yes pidfile /var/redis/redis-6382.pid logfile /var/redis/redis-6382.log dbfilename dump-6382.rdb dir /var/redis/data slaveof 127.0.0.1 6380
能夠看到redis主從複製已配置好,接下來就是基於主從賦複製的redis-sentinel配置。url
運行一個 Sentinel 所需的最少配置以下所示:spa
# 當前Sentinel節點監控 127.0.0.1:6380 這個主節點 # 將這個主服務器判斷爲失效至少須要2個Sentinel贊成(只要贊成Sentinel的數量不達標,自動故障遷移就不會執行) # mymaster是主節點的別名 sentinel monitor mymaster 127.0.0.1 6380 2 # 每一個Sentinel節點都要按期PING命令來判斷Redis數據節點和其他Sentinel節點是否可達,若是超過30000毫秒30s且沒有回覆,則被Sentinel標記爲主觀下線 sentinel down-after-milliseconds mymaster 30000 # 故障轉移超時時間爲180000毫秒 sentinel failover-timeout mymaster 180000 # 在執行故障轉移時, 最多能夠有多少個從服務器同時對新的主服務器進行同步,這個數字越小,完成故障轉移所需的時間就越長 sentinel parallel-syncs mymaster 1
配置sentinel.conf,以下僅僅是sentinel運行的端口不一樣而已:.net
port 26380 daemonize yes pidfile /var/redis/sentinel-26380.pid logfile /var/redis/sentinel-26380.log dir /var/redis/data sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 1800
port 26381 daemonize yes pidfile /var/redis/sentinel-26381.pid logfile /var/redis/sentinel-26381.log dir /var/redis/data sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1
port 26382 daemonize yes pidfile /var/redis/sentinel-26382.pid logfile /var/redis/sentinel-26382.log dir /var/redis/data sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1
啓動sentinel並查看信息:3d
redis-sentinel sentinel-26380.conf
如今殺死master(即運行在6380端口的redis-server):code
查看6381或6382節點的身份:
能夠看到本來的slave2節點變成了master。