Sentinel是Redis的高可用性解決方案。一個或多個Sentinel組成的Sentinel系統能夠監控任意多個主服務器從而實現高可用的需求。
例如:
redis
此時Server 1 掉線:vim
Sentinel系統會自動選出某一Server成爲主節點:服務器
爲何不問問神奇的海螺呢:https://redis.io/topics/sentinel運維
這裏模擬一個Redis集羣。spa
先搭建主節點:code
$ vim redis-master.conf ... port 6380 # 修改端口 logfile redis-master.conf pidfile /var/run/redis_6380.pid # 修改pidfile ...
而後啓動主節點:server
$ redis-server redis-master.conf
能夠查看下主節點相關信息:blog
$ redis-cli -p 6380 info Replication
這裏搭建兩個從節點:進程
$ vim redis-slave-1.conf port 6381 logfile redis-slave-1.conf pidfile /var/run/redis_6381.pid slaveof 127.0.0.1 6380 ... $ vim redis-slave-2.conf port 6382 logfile redis-slave-2.conf pidfile /var/run/redis_6382.pid slaveof 127.0.0.1 6380 ...
運行從節點:ip
$ redis-server redis-slave-1.conf $ redis-server redis-slave-2.conf
先配置Sentinel:
$ cp sentinel.conf config/Sentinel/sentinel-26379.conf # 複製模板 $ vim sentinel-26379.conf port 26379 daemonize yes # 以守護進程方式啓動 dir ./ # logfile 26379.log sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 # 判斷失敗時間爲30000毫秒 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000
這裏不須要配置從節點,Sentinel會自動獲取從節點信息。
啓動:
$ redis-sentinel sentinel-26379.conf $ redis-cli -p 26379 info
能夠看到搭建成功了。
這裏從新去查看一下配置文件:
$ cat sentinel-26379.conf
能夠看到配置文件從新生成從節點的信息。
$ sed 's/26379/26380/g' sentinel-26379.conf > sentinel-26380.conf $ sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf
啓動:
$ redis-sentinel sentinel-26380.conf $ redis-sentinel sentinel-26381.conf
查看一下任意一臺的配置信息:
$ redis-cli -p 26379 info
已經發現了有三臺sentinel
。
能夠看到如今集羣狀況:
假如如今master
掉了以後:
$ kill -9 6204
等一段時間再去查看6381
的信息:
$ redis-cli -p 6381 info Replication
此時6381
已成爲新的主節點了。
由於某些緣由可能要對某一節點進行下線。只要在任意Sentinel
上執行便可:
> sentinel failover <masterName>
例如
若是想要對某一節點上線,直接讓某一redis
執行slaveof
後,sentinel
會自動進行發現。