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