Redis一主二从Sentinel监控配置

691 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

一、环境准备

Redis一主二从Sentinel监控配置如下:

  1. 3个Sentinel实例(奇数个,选择Leader)
  2. Redis服务(一主二)。

服务器资源有限的朋友们,可以通过VMware启动虚拟机的方式来构建环境,关于如何使用VMware安装虚拟机,网络配置、克隆、单实例Redis的安装在我的博文中都有保姆级教程,需要的请自取。

资源清单:

IP地址节点角色端口
192.168.211.104Redis Master/ Sentinel6379/26379
192.168.211.105Redis Slave/ Sentinel6379/26379
192.168.211.106Redis Slave/ Sentinel6379/26379

关闭防火墙:
由于是自己学习使用,我们不针对专门的端口最策略(在公司这一块有专门的运维同时来做),这里我们直接关闭服务器的防火墙(三台都需要关闭)

systemctl status firewalld.service             # 查看防火墙状态
systemctl stop firewalld.service                 # 停止防火墙(重启后会失效)
systemctl disable firewalld.service             # 禁止开机启动

效果图,不会的朋友可以参考一下\

image.png

整体架构简图\

Redis哨兵+一主二从 (1).png

二、配置一主二从

这里的Redis的主节点是192.168.211.104,所以我们在192.168.211.105和192.168.211.106的Redis配置文件中,配置replicaof指向的Master IP +port。
配置文件在Redis的安装目录:\

image.png


编辑redis.conf配置文件:

vim redis.conf

redis.conf配置文件中默认注释:

# replicaof

取消注销,配置为Master的IP + port:

replicaof 192.168.211.104 6379

三、哨兵配置

单机节点实例下,Redis的安装目录默认有sentinel.conf配置文件,先对文件进行备份,备份文件名为sentinel.conf.copy(自定义):

cp sentinel.conf sentinel.conf.copy

创建日志等相关文件:

cd /usr/local/soft/redis-6.2.4/
mkdir logs
mkdir rdbs
mkdir sentinel-tmp # sentinel的工作目录,下面有说明

三台机器分别修改sentinel.conf的配置文件内容如下(内容都相同):

**daemonize yes **
**
port 26379
**
**protected-mode no

**
**dir "/usr/local/soft/redis-6.2.4/sentinel-tmp"

**
**sentinel monitor redis-master 192.168.211.104 6379 2

**
**sentinel down-after-milliseconds redis-master 30000

**
**sentinel failover-timeout redis-master 180000

**
sentinel parallel-syncs redis-master 1

上述配置详细解读:

配置项作用
daemonize后台启动,与Redis一致,yes表示后台启动
port端口 26379\
protected-mode开启外网访问保护模式,no表示关闭,这样外网可以访问\
dirSentinel工作目录\
sentinel monitorSentinel 监控的Redis主节点\
sentinel failover-timeout1、同一个sentinel对同一个master两次failover之间的间隔时间 2、当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时 3、当想要取消一个正在进行的failover所需要的时间。 4、当进行failover时,配置所有slaves指向新的master所需的最大时间\
sentinel parallel-syncs这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。

四、服务启动

上述就已经完成了Redis一主二从集群和3个Sentinel实例的监控的配置,接下来就是启动Redis和Sentinel

4.1 启动redis

进入Redis安装目录下的src目录:

cd /usr/local/soft/redis-6.2.4/src

启动Redis服务(也可以配置别名启动,需要的请看我的Redis单机实例安装教程):

./redis-server ../redis.conf

4.2 启动Sentinel

启动目录与Redis启动目录相同,在Redis安装目录下的src目录
方式一:

./redis-sentinel ../sentinel.conf

方式二:

./redis-server ../sentinel.conf --sentinel

4.3 查看集群状态

进入Redis客户端,通过info replication查看集群状态:

info replication

image.png

rcli是我配置的别名启动,不懂的请看我的单节点实例部署的博文,或者给我留言我会及时回复的,如上图我们可以看到集群没什么问题,接下来还需要测试Sentinel

五、测试

通过宕机的方式来测试Sentinel是否有效,我们在主节点192.168.211.104上,连接Redis执行shutdown:

shutdown

image.png

此时我们的192.168.211.105 slave节点被选举成为新的,master,证明sentinel部署成功:

image.png

最后我们将shutdown的192.168.211.104节点重新启动,再次查看Redis的集群情况

image.png

我们发现192.168.211.104重启后,成为了一个新的slave节点,此时的master节点仍然时192.168.211.105.