Redis实操(三)——Redis哨兵模式(Sentinel)搭建

 Redis实操系列

  • Redis实操(一)——CentOS7安装Redis_DreamEhome的博客-CSDN博客
  • Redis实操(二)——Redis主从复制+读写分离(一主二从)架构环境搭建_DreamEhome的博客-CSDN博客
  • Redis实操(三)——Redis哨兵模式(Sentinel)搭建_DreamEhome的博客-CSDN博客
  • Redis实操(四)——Redis节点高可用之Cluster集群搭建_DreamEhome的博客-CSDN博客
  • Redis实操(五)——Redis其他常用操作_DreamEhome的博客-CSDN博客

目录

核心流程

实现目标

环境准备

环境搭建

1.创建相关文件夹

2.进入conf文件夹,创建sentinel-{port}.conf配置文件,并进行其内容编辑

3.启动哨兵集群

4.验证哨兵集群是否启动成功及是否生效

验证哨兵监听状态

验证Redis主从是否可以自动切换

验证Redis宕机节点启动后自动加入Redis集群


整体架构

Redis实操(三)——Redis哨兵模式(Sentinel)搭建_第1张图片

 

核心流程

  • 哨兵每秒ping Redis节点,超过时间不响应,则认为主观下线
  • 多个哨兵认定Redis节点超时,则认为是客观下线
  • 如果主节点宕机,则哨兵投票选择其他从节点为主节点
  • 如果没有足够的节点同意master下线,则状态会被移除

实现目标

  • 配置3个哨兵,每个哨兵配置一致
  • 使Redis主从可以自动切换,提高可用性

环境准备

  • 虚拟机(演示用的CentOS7)
  • 已安装完成的Redis服务(可参考Redis实操(一)——CentOS7安装Redis_DreamEhome的博客-CSDN博客)
  • 搭建完成的Redis主从复制(一主二从)集群(可参考Redis实操(二)——Redis7主从复制+读写分离(一主二从)架构环境搭建_DreamEhome的博客-CSDN博客)
  • 启动顺序:先启动Redis主,再启动从,最后启动3个哨兵

环境搭建

注意:环境搭建在一台虚拟机上演示

1.创建相关文件夹

cd /usr/soft;
#创建目录
mkdir redis7sentinel;
cd redis7sentinel;
#创建配置目录
mkdir conf;
#创建data目录
mkdir data;
#创建日志目录
mkdir log;
#创建pid目录
mkdir pid;

  创建完成后各文件夹路径如图所示

2.进入conf文件夹,创建sentinel-{port}.conf配置文件,并进行其内容编辑

#进入配置目录
cd conf;
#创建哨兵1配置
touch sentinel-26379.conf;
#创建哨兵2配置
touch sentinel-26380.conf;
#创建哨兵3配置
touch sentinel-26381.conf;

分别编辑三个conf文件,将以下配置写入配置文件中

哨兵1(sentinel-26379.conf)配置文件如下:

#不限定ip访问
bind 0.0.0.0
#端口号26379
port 26379
#开启后台运行
daemonize yes
#pid文件路径
pidfile "/usr/soft/redis7sentinel/pid/redis-sentinel-26379.pid"
#sentinel日志路径
logfile "/usr/soft/redis7sentinel/log/sentinel-26379.log"
dir "/usr/soft/redis7sentinel/data"
#配置监听的主服务器:
#	redis-master代表主服务器名称,可自定义;
#	127.0.0.1代表监控的主服务器IP;
#	6379代表监控的主服务器端口;
#	2代表只有两个或两个以上的哨兵认为主服务器不可用的时候才会进行failover操作;一般设定为哨兵的半数+1
sentinel monitor redis-master 127.0.0.1 6379 2
#sentinel  auth-pass定义服务的密码,redis-master是主服务的自定义名称,123456是redis服务器密码
sentinel auth-pass redis-master 123456
#连接超时时间设定:超过5000毫秒 redis-master没有连接上,则认为master已宕机
sentinel down-after-milliseconds redis-master 5000
#失效转移failover失败超时时间设定:如果在该时间内没有完成failover操作,则认为本次failover失败
sentinel failover-timeout redis-master 30000

哨兵2(sentinel-26380.conf)配置文件如下:

bind 0.0.0.0
port 26380
daemonize yes
pidfile "/usr/soft/redis7sentinel/pid/redis-sentinel-26380.pid"
logfile "/usr/soft/redis7sentinel/log/sentinel-26380.log"
dir "/usr/soft/redis7sentinel/data"
sentinel monitor redis-master 127.0.0.1 6379 2
sentinel auth-pass redis-master 123456
sentinel down-after-milliseconds redis-master 5000
sentinel failover-timeout redis-master 30000

 哨兵3(sentinel-26381.conf)配置文件如下:

bind 0.0.0.0
port 26381
daemonize yes
pidfile "/usr/soft/redis7sentinel/pid/redis-sentinel-26381.pid"
logfile "/usr/soft/redis7sentinel/log/sentinel-26381.log"
dir "/usr/soft/redis7sentinel/data"
sentinel monitor redis-master 127.0.0.1 6379 2
sentinel auth-pass redis-master 123456
sentinel down-after-milliseconds redis-master 5000
sentinel failover-timeout redis-master 30000

3.启动哨兵集群

redis-server sentinel-26379.conf --sentinel
redis-server sentinel-26380.conf --sentinel
redis-server sentinel-26381.conf --sentinel

4.验证哨兵集群是否启动成功及是否生效

验证哨兵监听状态

#查看哨兵1监听状态:26379为端口号
lsof -i:26379;
#查看哨兵2监听状态
lsof -i:26380;
#查看哨兵3监听状态
lsof -i:26381;

        如果正常监听,则如下图所示:

验证Redis主从是否可以自动切换

        当前6381为redis主服务 

Redis实操(三)——Redis哨兵模式(Sentinel)搭建_第2张图片

        通过redis客户端关闭6381后

#通过客户端关闭redis主服务或通过kill 关闭
127.0.0.1:6381> shutdown

        通过sentinel日志查看自动操作

#查看日志,日志为conf中的日志路径
tail -f /usr/soft/redis7sentinel/log/sentinel-26379.log

Redis实操(三)——Redis哨兵模式(Sentinel)搭建_第3张图片

         通过日志中可获取主服务自动切换到6379端口,查看6379端口为主服务,且从节点只有6380一个;

Redis实操(三)——Redis哨兵模式(Sentinel)搭建_第4张图片

验证Redis宕机节点启动后自动加入Redis集群

#启动宕机的redis-6381
redis-server /usr/soft/redis7cluster/conf/redis-6381.conf;

         通过sentinel日志查看宕机节点恢复情况:

Redis实操(三)——Redis哨兵模式(Sentinel)搭建_第5张图片

        通过redis主节点查看从节点情况:

Redis实操(三)——Redis哨兵模式(Sentinel)搭建_第6张图片

你可能感兴趣的:(Redis,centos,redis,linux,缓存)