redis學習筆記(六)--哨兵Sentinel

基本知識

Sentinel是Redis的高可用性解決方案。一個或多個Sentinel組成的Sentinel系統能夠監控任意多個主服務器從而實現高可用的需求。
例如:
clipboard.pngredis

此時Server 1 掉線:vim

clipboard.png

Sentinel系統會自動選出某一Server成爲主節點:服務器

clipboard.png

官方文檔

爲何不問問神奇的海螺呢: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系統配置

單個Sentinel配置

先配置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

clipboard.png

能夠看到搭建成功了。
這裏從新去查看一下配置文件:

$ cat sentinel-26379.conf

clipboard.png

能夠看到配置文件從新生成從節點的信息。

集羣的配置

$ 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

clipboard.png

已經發現了有三臺sentinel

故障轉移

能夠看到如今集羣狀況:

clipboard.png

假如如今master掉了以後:

$ kill -9 6204

等一段時間再去查看6381的信息:

$ redis-cli -p 6381 info Replication

clipboard.png

此時6381已成爲新的主節點了。

運維相關

節點運維

由於某些緣由可能要對某一節點進行下線。只要在任意Sentinel上執行便可:

> sentinel failover <masterName>

例如

若是想要對某一節點上線,直接讓某一redis執行slaveof後,sentinel會自動進行發現。

相關文章
相關標籤/搜索