Redis-sentinel---哨兵模式

目录

1、哨兵简介:Redis Sentinel

2、作用

3、工作模式

4、主观下线和客观下线

5、配置哨兵模式

6、常见哨兵日志消息含义


 

1、哨兵简介:Redis Sentinel

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中是Redis官方推荐的高可用性(HA)解决方案。

2、作用

1):Master状态检测

2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave

3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof/replicaof的配置,sentinel.conf的监控目标会随之调换

3、工作模式

        1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送                 一个 PING 命令

        2):如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-                       milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。

        3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一                 次的频率确认Master的确进入了主观下线状态。

        4):当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认                           Master的确进入了主观下线状态, 则Master会被标记为客观下线。           

4、主观下线和客观下线

主观下线:Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断。

客观下线:Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对Master Server做出 SDOWN 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判断,然后开启failover

 

5、配置哨兵模式

环境准备:

localhostrocky_linux9.4192.168.226.20redis5.0.10Master
localhostrocky_linux9.4192.168.226.21redis5.0.10Slave
localhostrocky_linux9.4192.168.226.22redis5.0.10Slave
localhostrocky_linux9.4192.168.226.23redis5.0.10Slave

关闭防火墙,selinux,时间同步

现在对四台虚拟机进行安装redis

[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.10.tar.gz   #下载redis
[root@localhost ~]# tar xzf redis-5.0.10.tar.gz -C /usr/local                 #解压
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv redis-5.0.10/ redis
[root@localhost local]# cd redis/
[root@localhost redis]# yum install -y gcc make                               #安装编译工具
[root@localhost redis]# make
注:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
 

#配置redis为systemctl启动
[root@redis-master redis]# cd /lib/systemd/system
[root@redis-master system]# vim redis.service
[Unit]
Description=Redis
After=network.target
 
[Service]
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf  --daemonize no
ExecStop=/usr/local/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown
 
[Install]
WantedBy=multi-user.target




#以下为需要定义参数
[root@localhost ~]# cd /usr/local/redis
[root@localhost redis]# cp redis.conf redis.conf.bak    #备份配置文件
[root@localhost redis]# vim redis.conf         #在配置文件中找到修改如下
bind 0.0.0.0                 #Redis 服务器监听的网络接口地址
daemonize yes                   #开启后台模式将on改为yes
timeout 300                    #连接超时时间
protected-mode no                   #关闭 Redis 的保护模式
port 6379                           #端口号
dir /usr/local/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
pidfile /var/run/redis_6379.pid   #定义pid文件
logfile /var/log/redis.log        #定义log文件           
 
 
#创建存放数据的目录
[root@localhost redis]# mkdir /usr/local/redis/data

 对三台Slave修改配置

[root@localhost ~]# vim /usr/local/redis/redis.conf +286

replicaof 192.168.226.20 6379

 

#启动redis
[root@localhost ~]# systemctl enable --now redis
[root@localhost ~]# ss -tnlp

接下来对四台虚拟机配置修改sentinel.conf配置文件

[root@localhost ~]# vim /usr/local/redis/sentinel.conf

 #需要调整下面的四个参数,然后保存退出即可

protected-mode no  #关闭加密模式--新添加到sentinel配置文件中
sentinel monitor mymaster 10.0.0.137 6379 2 #当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。 (slave上面写的是master的ip,master写自己ip)
sentinel down-after-milliseconds mymaster 3000   #单位毫秒
sentinel failover-timeout mymaster 10000   #若sentinel在该配置值内未能完成failover(故障转移)操作(即故障时master/slave自动切换),则认为本次failover失败。

 四台虚拟机都要开启哨兵模式

[root@localhost ~]# /usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf &

+monitor 表示 Redis Sentinel 正在监视一个新的主节点。
master mymaster 指定了被监视的主节点名称为 mymaster。
192.168.226.20 6379 是主节点的 IP 地址和端口号。
quorum 2 指定了用于决策主节点是否下线的 Sentinel 数量。

+slave 表示这是一个从节点(slave)的信息。
每行描述一个从节点的连接信息:从节点的 IP 地址和端口号,从节点的连接地址,从节点复制的主节点名称和地址。

 

现在将master的哨兵模式退出,再将redis服务停止了,在三台slave上面查看其中一台是否切换为master:(没有优先级,为随机切换)

#关闭哨兵模式的进程
[root@localhost ~]# ps aux | grep redis-sentinel
root        5572  0.3  0.7  48916 13668 pts/0    Sl   15:43   0:03 /usr/local/redis/src/redis-sentinel *:26379 [sentinel]
root        5621  0.0  0.1   3880  1920 pts/0    S+   16:00   0:00 grep --color=auto redis-sentinel
[root@localhost ~]# kill -9 5572
#关闭redis服务
[root@localhost src]# systemctl stop redis

观察别的节点上的信息 

 

登陆任意Slave服务器查看有没有切换 

[root@localhost ~]# redis-cli 
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.226.23
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:398116
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:1feec7692d09b418b4bc55ff61c7366b5c6620e3
master_replid2:389c67ed1051667fc15f4d9882af2de87720e02d
master_repl_offset:398116
second_repl_offset:299814
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:398116

可以看到主节点已经切换到了192.168.226.23主机上。

 登陆新的master(即192.168.226.23)机器查看:

然后重新开启192.168.226.20主机的redis服务和哨兵模式

[root@localhost ~# systemctl start redis
[root@localhost ~]# /usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf &

原来的主节点就成为了从节点。 

 

6、常见哨兵日志消息含义

在 Redis 哨兵模式的日志分析中,常见的日志消息及其意义如下: 

  • +monitor: 哨兵开始监视指定的 Redis 主服务器。

    • 意义: 哨兵正在监视一个新的 Redis 主服务器,记录了主服务器的相关信息。
  • +slave-reconf-sent: 哨兵向从服务器发送重新配置命令。

    • 意义: 哨兵在执行故障转移时,通知从服务器切换到新的主服务器。
  • +slave-reconf-inprog: 重新配置过程正在进行中。

    • 意义: 标志着从服务器正在进行主服务器切换的重新配置过程。
  • +slave-reconf-done: 重新配置过程完成。

    • 意义: 重新配置成功完成,从服务器已经切换到了新的主服务器。
  • +failover-end: 故障转移结束。

    • 意义: 标志着故障转移过程的正式结束。
  • +switch-master: 主服务器切换事件。

    • 意义: 哨兵宣布主服务器已经切换到了新的 IP 和端口。
  • +slave: 添加新的从服务器到新的主服务器。

    • 意义: 哨兵将新的从服务器加入到新的主服务器的复制集中。
  • +sdown: 哨兵检测到节点宕机或不可达。

    • 意义: 标志着哨兵检测到了一个 Redis 节点(可以是主服务器、从服务器或其他哨兵)宕机或不可用。
  • -sentinel down: 哨兵节点被标记为下线。

    • 含义: 哨兵节点不可用或已被其他哨兵节点标记为不可用。
  • -failover-detected: 检测到故障转移正在进行中。

    • 含义: 哨兵监测到主服务器发生故障,正在尝试进行自动故障转移。
  • -switch-master: 发生了主服务器切换。

    • 含义: 主服务器已经成功切换到另一个节点,通常是在故障转移完成后出现的消息。
  • -failover-end: 故障转移过程结束。

    • 含义: 故障转移成功完成,新的主服务器已经选举完成并且开始接受客户端请求。
  • -failover-abort-not-elected: 故障转移中止,因为当前节点没有被选为新的主服务器。

    • 含义: 故障转移过程中,当前节点没有被选为新的主服务器,故障转移被中止。
  • -dup-sentinel: 发现重复的哨兵节点 ID。

    • 含义: 哨兵集群中存在多个拥有相同 ID 的哨兵节点,可能导致竞争或冲突。
  • 31
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZDICT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值