-
什麼是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的監控目標會隨之調換
-
環境準備數據庫
#三個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
-
查看主從關係是否正確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
-
配置哨兵進程,一樣是三個,配置除了監聽端口 沒有別的不一樣,另外須要注意:哨兵第一次啓動後,會修改配置文件,若是錯了,得刪除配置文件,從新寫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
-
啓動哨兵進程
redis-sentinel sentinel-26379.conf redis-sentinel sentinel-26380.conf redis-sentinel sentinel-26381.conf
-
驗證哨兵是否正常it
redis-cli -p 26379 info sentinel master0:name=s21ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
-
幹掉主庫 檢測哨兵的是否正常能夠切換狀態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