上一节实现了Redis集群的主从模式,这一节来实现一下哨兵模式。
有了主从模式,为什么还会需要哨兵模式呢?
上一节我们了解到,为了缓解服务器压力,我们可以对redis的系统实现一个主从分离,一个master主要实现写功能,一个或多个 slave 主要负责读功能。
那么这种模式有个什么问题呢,
万一我们的master 突然宕机了,不能提供写服务了,只能依靠slave实现读的功能,这种情况是很糟糕的。
所以为了解决这种困境,前辈们又提出了一种解决方式,哨兵模式。
0、概念
首先介绍一下哨兵模式的大致架构,还是一主多从模式,不过我们还需要加上一个或多个能提供监测服务的哨兵(sentinel)。
这个哨兵,或者说几个哨兵,能够实时检测我们的master的状态,当master处于正常运行状态时,一切都OK,平安夜。
一旦master出现故障,服务器宕机,内存满了等问题导致master不能再提供服务了。
哨兵就会马上监测到这个情况,在默认的等待时间30s后,如果master还是不能使用,那这些哨兵就会自动地从slave中间挑选一个作为 master,重新形成一个 一主多从的局面。
1、安装
本次模式的实现需要两样东西,redis 和 redis-sentinel。
Redis的安装就不再赘述了,sudo apt-get 在线安装即可
redis-sentinel 的安装也是使用在线安装:
sudo apt-get install redis-sentinel
2、集群详情
我这里设置为一主两从,master 地址为 192.168.31.218
两个 slave 地址分别为 192.168.31.220 192.168.31.222
3、redis配置
redis的配置都是在原始的 conf 文件上进行删改,我把原文件中注释的部分都删掉,如下是简洁版。
有很多参数我也不太明白是啥意思,以后有时间可以详细看看,这次这个博客只是用来跑通哨兵模式这个功能。
Redis 的 master 配置
#/etc/redis/redis.conf
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis/redis-server.pid"
loglevel notice
logfile "/va