1. 程式人生 > 實用技巧 >Redis哨兵模式

Redis哨兵模式

Master掛了,如何保證可用性,實現繼續讀寫

什麼是哨兵

Sentinel(哨兵)是用於監控Redis叢集中Master狀態的工具,是 Redis 高可用解決方案,哨兵可以監視一個或者多個redis master服務,以及這些master服務的所有從服務;當某個master服務宕機後,會把這個master下的某個從服務升級為master來替代已宕機的master繼續工作。

示例圖

配置哨兵監控master

建立並且配置sentinel.conf:

  • 普通配置

    port 26379
    pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
    dir "/usr/local/redis/sentinel"
    daemonize yes
    protected-mode no
    logfile "/usr/local/redis/sentinel/redis-sentinel.log"
    
  • 核心配置

    # 配置哨兵
    sentinel monitor mymaster 127.0.0.1 6379 2
    # 密碼
    sentinel auth-pass <master-name> <password>
    # master被sentinel認定為失效的間隔時間
    sentinel down-after-milliseconds mymaster 30000
    # 剩餘的slaves重新和新的master做同步的並行個數
    sentinel parallel-syncs mymaster 1
    # 主備切換的超時時間,哨兵要去做故障轉移,這個時候哨兵也是一個程序,如果他沒有去執行,超過這個時間後,會由其他的哨兵來處理
    sentinel failover-timeout mymaster 180000
    

啟動哨兵 x 3

redis-sentinel sentinel.conf

測試

  1. master掛了,看slave是否成為master
  2. master恢復,觀察slave狀態

結論

master掛了以後,由於哨兵監控,剩餘slave會進行選舉,選舉後其中一個成為master,當原來的master恢復後,他會成為slave。