redis哨兵功能

redis哨兵功能

redis-Sentinel(哨兵)

  • 前言
    • 當用redis做master-slave的高可用時,若是master自己宕機,redis自己或者客戶都沒有實現主從切換的功能
  • redis-sentinel是redis官方推薦的高可用性解決方案,
  • 而redis-Sentinel就是一個獨立運行的進程,用於監控多個master-slave集羣,自動發現master宕機,進行自動切換slave>master
  • 功能:
    • 不時的監控redis是否良好運行,若是節點不可達就會對節點進行下線標識
    • 若是被標識的是主節點,Sentinel就會和其餘的Sentinel節點'協商',若是其餘節點也人爲主節點不可達,就會選舉一個Sentinel節點來完成自動故障轉義
    • 在master-slave(主-從)進行切換後,master_redis.conf,slave_redis.conf和Sentinel.conf的內容都會發生改變,即master_redis.conf中會多一行slaveof的配置,Sentinel.conf的監控目標會隨之調換

redis主從複製背景

  • redis主從複製可將主節點數據同步給從節點,從節點此時有倆個做用:redis

    • 一旦主節點宕機,從節點做爲主節點的備份能夠隨機頂上來.
    • 擴展主節點的讀能力,分擔主節點讀壓力
  • 存在問題:數據庫

    • 一旦主節點宕機,從節點上位,那麼須要人爲修改全部應用方的主節點地址(改成新的master地址),還須要命令全部從節點複製新的主節點

    因此要實現這些功能,redis-sen就能夠解決vim

主從複製架構

img

img

  • redis-Sentinel(哨兵功能):
    • 哨兵進行檢測,主從架構是否正常,若是主庫掛掉,哨兵會自動修復redis.conf,進行添加/刪除slaveof 指令
    • 做用:只是監控redis

redis-Sentinel(哨兵)配置

  • 這裏是以三個redis爲實例,一主倆從
  1. 準備三個redis實例,一主倆從架構

    # 主配置
    vim redis-6379.conf
    # 插入數據
    port 6379
    daemonize yes
    logfile "6379.log"
    dbfilename "dump-6379.rdb"
    dir "/var/redis/data/"
    #從節點配置
    vim redis-6380.conf
    #插入數據
    port 6380
    daemonize yes
    logfile "6380.log"
    dbfilename "dump-6380.rdb"
    dir "/var/redis/data/" 
    slaveof 127.0.0.1 6379      // 從屬主節點
    
    # 從節點配置
    vim redis-6381.conf
    #插入數據
    port 6381
    daemonize yes
    logfile "6380.log"
    dbfilename "dump-6380.rdb"
    dir "/var/redis/data/" 
    slaveof 127.0.0.1 6379      // 從屬主節點
  2. 啓動主節點3d

    redis-server redis-6379.conf
    
    #登陸客戶端
    redis-cli -p 6380 
    # 檢測是否通訊
    ping   # 輸出爲pong則爲正常

    注意問題:這裏若是啓動客戶端顯示code

    Could not connect to Redis at 127.0.0.1:6379: Connection refusedserver

    解決方法:建立mkdir /var/redis/data/blog

  3. 啓動倆個slave(從)節點進程

    redis-server  redis-6380.conf
    redis-server  redis-6381.conf
    
    # 登陸客服端驗證
    與上述主節點驗證方法同樣
  4. 檢測主從的狀態是否正常ip

    redis-cli  -p 6379 info replication
    
    
    # 輸出內容以下爲正常
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=qsmaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3

    注意:

    ​ 若是發現實驗不成功,需刪掉全部的配置文件,重新來過

    準備三個哨兵,開始監控主從架構

    1. 準備三個配置文件,哨兵文件

      vim redis-26379.conf    # 名字隨意起,
      #插入內容
      port 26379  
      dir /var/redis/data/
      logfile "26379.log"
      sentinel monitor qsmaster  127.0.0.1 6379 2
      sentinel down-after-milliseconds qsmaster 30000
      sentinel parallel-syncs qsmaster 1
      sentinel failover-timeout qsmaster 180000
      daemonize yes 
      
      #第二個哨兵
      vim redis-26380.conf
      
      port 26380  
      dir /var/redis/data/
      logfile "26380.log"
      sentinel monitor qsmaster  127.0.0.1 6379 2
      sentinel down-after-milliseconds qsmaster 30000
      sentinel parallel-syncs qsmaster 1
      sentinel failover-timeout qsmaster 180000
      daemonize yes 
      
      #第三哨兵
      vim redis-26381.conf
      
      port 26381  
      dir /var/redis/data/
      logfile "26381.log"
      sentinel monitor qsmaster  127.0.0.1 6379 2
      sentinel down-after-milliseconds qsmaster 30000
      sentinel parallel-syncs qsmaster 1
      sentinel failover-timeout qsmaster 180000
      daemonize yes
    2. 啓動三個哨兵

      redis-sentinel redis-26379.conf 
      redis-sentinel redis-26380.conf 
      redis-sentinel redis-26381.conf

      注意!!若是發現實驗不成功,需刪掉全部的哨兵配置文件,重新來過

      注意!!若是發現實驗不成功,需刪掉全部的哨兵配置文件,重新來過

    3. 檢查哨兵狀態

      redis-cli -p 26379 info sentinel
      
      
      信息以下爲正常
      # Sentinel
      sentinel_masters:1
      sentinel_tilt:0
      sentinel_running_scripts:0
      sentinel_scripts_queue_length:0
      sentinel_simulate_failure_flags:0
      master0:name=qsmaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3
    4. 模擬哨兵自動進行主從切換

      # 查看進程信息
      ps -ef |grep redis
      # 殺死6379的進程
      kill -9  6379的進程號
      
      # 查看6380和6381的身份信息,看是否進行主從切換
      redis-cli  -p 6380 info replication
      redis-cli  -p 6381 info replication
      
      # 手動啓動6379掛掉的數據庫,看是否會被哨兵,添加進信息主從集羣
      redis-server redis-6379.conf
      
      redis-cli  -p 6379 info replication
相關文章
相關標籤/搜索