Redis 3.x——哨兵API

哨兵API

    • [1、sentinel masters](#1、sentinel masters)
    • [2、sentinel master \<master name>](#2、sentinel master <master name>)
    • [3、sentinel slaves \<master name>](#3、sentinel slaves <master name>)
    • [4、sentinel sentinels \<master name>](#4、sentinel sentinels <master name>)
    • [5、sentinel get-master-addr-by-name \<mastername>](#5、sentinel get-master-addr-by-name <mastername>)
    • [6、sentinel reset \<pattern>](#6、sentinel reset <pattern>)
    • [7、sentinel failover \<master name>](#7、sentinel failover <master name>)
    • [8、sentinel ckquorum \<master name>](#8、sentinel ckquorum <master name>)
    • [9、sentinel flushconfig](#9、sentinel flushconfig)
    • [10、sentinel remove \<master name>](#10、sentinel remove <master name>)
    • [11、sentinel monitor \<master name> \<ip> \<port> \<quorum>](#11、sentinel monitor <master name> <ip> <port> <quorum>)
    • [12、sentinel set \<master name>](#12、sentinel set <master name>)
    • [13、sentinel is-master-down-by-addr](#13、sentinel is-master-down-by-addr)

Sentinel节点是一个特殊的Redis节点,它有自己专属的API,本节将对其进行介绍。

为了方便演示,以下图进行说明:Sentinel节点集合监控着两组主从模式的Redis数据节点。

1、sentinel masters

展示所有被监控的主节点状态以及相关的统计信息,例如:

bash 复制代码
127.0.0.1:26379> sentinel masters
1)  1) "name"
    2) "mymaster-2"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "6382"
.........忽略............
2)  1) "name"
    2) "mymaster-1"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "6379"
.........忽略............

2、sentinel master <master name>

展示指定<master name>的主节点状态以及相关的统计信息,例如:

bash 复制代码
127.0.0.1:26379> sentinel master mymaster-1
 1) "name"
 2) "mymaster-1"
 3) "ip"
 4) "127.0.0.1"
 5) "port"
 6) "6379"
.........忽略............

3、sentinel slaves <master name>

展示指定<master name>的从节点状态以及相关的统计信息,例如:

bash 复制代码
127.0.0.1:26379> sentinel slaves mymaster-1
1)  1) "name"
    2) "127.0.0.1:6380"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "6380"
.........忽略............
2)  1) "name"
    2) "127.0.0.1:6381"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "6381"
.........忽略............

4、sentinel sentinels <master name>

展示指定<master name>的Sentinel节点集合(不包含当前Sentinel节点)​,例如:

bash 复制代码
127.0.0.1:26379> sentinel sentinels mymaster-1
1)  1) "name"
    2) "127.0.0.1:26380"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "26380"
.........忽略............
2)  1) "name"
    2) "127.0.0.1:26381"
    3) "ip"
    4) "127.0.0.1"
    5) "port"
    6) "26381"
.........忽略............

5、sentinel get-master-addr-by-name <mastername>

返回指定<master name>主节点的IP地址和端口,例如:

bash 复制代码
127.0.0.1:26379> sentinel get-master-addr-by-name mymaster-1
1) "127.0.0.1"
2) "6379"

6、sentinel reset <pattern>

当前Sentinel节点对符合<pattern>(通配符风格)主节点的配置进行重置,包含清除主节点的相关状态(例如故障转移)​,重新发现从节点和Sentinel节点。

例如sentinel-1节点对mymaster-1节点重置状态如下:

bash 复制代码
127.0.0.1:26379> sentinel reset mymaster-1
(integer) 1

7、sentinel failover <master name>

对指定主节点进行强制故障转移(没有和其他Sentinel节点"协商"​)​,当故障转移完成后,其他Sentinel节点按照故障转移的结果更新自身配置,这个命令在Redis Sentinel的日常运维中非常有用。

例如,对mymaster-2进行故障转移:

bash 复制代码
127.0.0.1:26379> sentinel  failover mymaster-2
OK

执行命令前,mymaster-2是127.0.0.1:6382

bash 复制代码
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:2
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster-2,status=ok,address=127.0.0.1:6382,slaves=2,sentinels=3
master1:name=mymaster-1,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

执行命令后:mymaster-2由原来的一个从节点127.0.0.1:6383代替。

bash 复制代码
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:2
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster-2,status=ok,address=127.0.0.1:6383,slaves=2,sentinels=3
master1:name=mymaster-1,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

8、sentinel ckquorum <master name>

检测当前可达的Sentinel节点总数是否达到的个数。例如quorum=3,而当前可达的Sentinel节点个数为2个,那么将无法进行故障转移,Redis Sentinel的高可用特性也将失去。

bash 复制代码
127.0.0.1:26379> sentinel ckquorum mymaster-1
OK 3 usable Sentinels. Quorum and failover authorization can be reached

9、sentinel flushconfig

将Sentinel节点的配置强制刷到磁盘上,这个命令Sentinel节点自身用得比较多,对于开发和运维人员只有当外部原因(例如磁盘损坏)造成配置文件损坏或者丢失时,这个命令是很有用的。

bash 复制代码
127.0.0.1:26379> sentinel flushconfig
OK

10、sentinel remove <master name>

取消当前Sentinel节点对于指定<master name>主节点的监控。

例如sentinel-1当前对mymaster-1进行了监控:

bash 复制代码
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:2
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster-2,status=ok,address=127.0.0.1:6382,slaves=2,sentinels=3
master1:name=mymaster-1,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

例如下面,sentinel-1节点取消对mymaster-1节点的监控,但是要注意这个命令仅仅对当前Sentinel节点有效。

bash 复制代码
127.0.0.1:26379> sentinel remove mymaster-1
OK

再执行info sentinel命令,发现sentinel-1已经失去对mymaster-1的监控:

bash 复制代码
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster-2,status=ok,address=127.0.0.1:6383,slaves=2,sentinels=3

11、sentinel monitor <master name> <ip> <port> <quorum>

这个命令和配置文件中的含义是完全一样的,只不过是通过命令的形式来完成Sentinel节点对主节点的监控。

例如命令sentinel-1节点重新监控mymaster-1节点:

bash 复制代码
127.0.0.1:26379> sentinel monitor mymaster-1 127.0.0.1 6379 2
OK

命令执行后,发现sentinel-1节点重新对mymaster-1节点进行监控:

bash 复制代码
# Sentinel
sentinel_masters:2
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster-2,status=ok,address=127.0.0.1:6383,slaves=2,sentinels=3
master1:name=mymaster-1,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

12、sentinel set <master name>

动态修改Sentinel节点配置选项。

13、sentinel is-master-down-by-addr

Sentinel节点之间用来交换对主节点是否下线的判断,根据参数的不同,还可以作为Sentinel领导者选举的通信方式。

相关推荐
ningmengjing_3 小时前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
一嘴一个橘子11 小时前
Redis List 数据类型
redis
小园子的小菜12 小时前
Redis 核心原理深度解析:从数据结构、IO 模型到持久化机制
数据库·redis·缓存
BullSmall1 天前
Another Redis Desktop Manager(ARDM)下载指南
数据库·redis·缓存
nvd111 天前
ArgoCD 双层轮询深入拆解:从 redis-app.yaml 注册到缓存重建的完整链路
redis·缓存·argocd
xiaoxiangsiyan1 天前
LNMP + Redis Sentinel 高可用架构部署手册(续)
运维·网络·数据库·redis·缓存·架构·sentinel
CodeHackerBhx1 天前
Spring Boot 4 防重复提交:从接口幂等到 Redis 分布式锁的完整实践
java·数据库·spring boot·redis·分布式
就改了1 天前
Docker安装并运行Redis
redis·docker·容器
晨陌y1 天前
redis_exporter + Prometheus监控Redis: 指标采集、告警与远程抓取
redis·bootstrap·prometheus
敲代码的嘎仔1 天前
从零搭建微服务:Spring Cloud Alibaba 全家桶踩坑实录(Nacos + OpenFeign + Gateway + Sentinel)
java·spring boot·spring·spring cloud·微服务·gateway·sentinel