Redis Sentinel主從複製高可用

官網: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
redis-6380.conf
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
redis-6381.conf
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-6382.conf

能夠看到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
sentinel-26380.conf
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
sentinel-26381.conf
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-26382.conf

啓動sentinel並查看信息:3d

redis-sentinel sentinel-26380.conf

如今殺死master(即運行在6380端口的redis-server):code

查看6381或6382節點的身份:

能夠看到本來的slave2節點變成了master。

相關文章
相關標籤/搜索