基本知识
Sentinel是Redis的高可用性解决方案。一个或多个Sentinel组成的Sentinel系统可以监控任意多个主服务器从而实现高可用的需求。
例如:
此时Server 1 掉线:
Sentinel系统会自动选出某一Server成为主节点:
官方文档
为什么不问问神奇的海螺呢:https://redis.io/topics/sentinel
环境模拟
这里模拟一个Redis集群。
搭建主节点
先搭建主节点:
$ vim redis-master.conf
...
port 6380 # 修改端口
logfile redis-master.conf
pidfile /var/run/redis_6380.pid # 修改pidfile
...
然后启动主节点:
$ redis-server redis-master.conf
可以查看下主节点相关信息:
$ 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
...
运行从节点:
$ 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
可以看到搭建成功了。
这里重新去查看一下配置文件:
$ 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
会自动进行发现。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。