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会自动进行发现。

相关文章
相关标签/搜索