redis-sentinel (哨兵)

  • 什麼是redis-sentinel?python

    • 當用redis做master-slave的高可用時,若是master自己宕機,redis自己或者客戶端都沒有實現主從切換的功能。
    • 而redis-sentinel就是一個獨立運行的進程,用於監控多個master-slave集羣,自動發現master宕機,進行自動切換slave > master。
  • sentinel的主要功能redis

    • 不時的監控redis是否良好運行,若是節點不可達就會對節點進行下線標識
    • 若是被標識的是主節點,sentinel就會和其餘的sentinel節點「協商」,若是其餘節點也認爲主節點不可達,就會選舉一個sentinel節點來完成自動故障轉義
    • 在master-slave進行切換後,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變,即master_redis.conf中會多一行slaveof的配置,sentinel.conf的監控目標會隨之調換
  1. 環境準備數據庫

    #三個redis數據庫實例 配置好一主多從
    #6379.conf
    port 6379
    daemonize yes
    logfile "6379.log"
    dbfilename "dump-6379.rdb"
    dir "/var/redis/data/"
    
    #6380.conf 
    port 6380
    daemonize yes
    logfile "6380.log"
    dbfilename "dump-6380.rdb"
    dir "/var/redis/data/"
    slaveof 127.0.0.1 6379
    
    #6381.conf 
    port 6381
    daemonize yes
    logfile "6381.log"
    dbfilename "dump-6381.rdb"
    dir "/var/redis/data/"
    slaveof 127.0.0.1 6379
  2. 查看主從關係是否正確code

    redis-server 6379.conf
    redis-server 6380.conf
    redis-server 6381.conf   #開啓三個redis庫 以後能夠直接經過端口調用
    
    redis-cli -p 6379 info replication 
    redis-cli -p 6380 info replication  
    redis-cli -p 6381 info replication
  3. 配置哨兵進程,一樣是三個,配置除了監聽端口 沒有別的不一樣,另外須要注意:哨兵第一次啓動後,會修改配置文件,若是錯了,得刪除配置文件,從新寫server

    #sentinel-26379.conf  
    port 26379  
    dir /var/redis/data/
    logfile "26379.log"
    
    // 當前Sentinel節點監控 192.168.182.130:6379 這個主節點
    // 2表明判斷主節點失敗至少須要2個Sentinel節點節點贊成
    // s21ms是主節點的別名
    sentinel monitor s21ms  127.0.0.1 6379 2
    
    //每一個Sentinel節點都要按期PING命令來判斷Redis數據節點和其他Sentinel節點是否可達,若是超過30000毫秒30s且沒有回覆,則斷定不可達
    sentinel down-after-milliseconds s21ms  20000
    
    //當Sentinel節點集合對主節點故障斷定達成一致時,Sentinel領導者節點會作故障轉移操做,選出新的主節點,原來的從節點會向新的主節點發起復制操做,限制每次向新的主節點發起復制操做的從節點個數爲1
    sentinel parallel-syncs s21ms 1
    
    //故障轉移超時時間爲180000毫秒
    sentinel failover-timeout mymaster 180000
    //後臺運行
    daemonize yes
  4. 啓動哨兵進程

    redis-sentinel sentinel-26379.conf
    redis-sentinel sentinel-26380.conf
    redis-sentinel sentinel-26381.conf
  5. 驗證哨兵是否正常it

    redis-cli -p 26379 info sentinel
    master0:name=s21ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
  6. 幹掉主庫 檢測哨兵的是否正常能夠切換狀態io

    kill -9 12749
    ps -ef|grep redis
    redis-cli -p 6380 info replication
    redis-cli -p 6381 info replication
    redis-cli -p 6380 info replication
    redis-cli -p 6381 info replication
相關文章
相關標籤/搜索