Redis 哨兵集群方案

Redis Sentinel集群方案(哨兵)

目录

Redis Sentinel集群方案(哨兵)

架构梳理

工作原理

集群的常见管理手段

启停管理

info replication 查看主从关系

sentinel master 查看主信息

sentinel replicas 查看从信息

在线扩容

如何彻底下线从节点

常见命令

SENTINEL master mymaster

SENTINEL masters

SENTINEL replicas mymaster

SENTINEL sentinels

SENTINEL get-master-addr-by-name mymaster

SENTINEL config get *

SENTINEL config set [name]

SENTINEL set mymaster down-after-milliseconds 30000

SENTINEL CKQUORUM mymaster

SENTINEL MONITOR mymaster 192.168.128.167 6379 2

SENTINEL REMOVE

SENTINEL FAILOVER mymaster


架构梳理

Redis Sentinel 是一个分布式架构,包含若干个 Sentinel 节点和若干个 Redis 数据节点

每个 Sentinel 节点会对 Redis 数据节点和其余 Sentinel 节点进行监控,当发现节点不可达时,会对节点做下线标识。

如果被标识的是 Redis 主节点,它会和其他 Sentinel 节点进行“协商”,当大多数的 Sentinel 节点都认为主节点不可达时,他们会选举出一个 Sentinel 节点来完成自动故障转移工作,同时将这个变化通知Redis 应用方

Redis 哨兵集群方案_第1张图片

工作原理

Redis 哨兵集群方案_第2张图片

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

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

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

若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除

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

若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除

Master 客观下线后,会在 Master 所在的 Slave 中进行重新选取 Master

注意:哨兵本身作用于集群状态的高可用,作用于 master 节点挂掉后的主备切换,不能解决 redis 本身数据不一致的问题

集群的常见管理手段

启停管理

启动时:

先启 redis 进程,再启 sentinel 进程(按顺序可防止主从切换)

redis-server redis-{port}.conf

redis-sentinel conf/sentinel_{port}.conf

停止时:

先停 sentinel 进程,再停 redis 进程(按顺序可防止主从切换)

redis-cli -p 26378 shutdown

redis-cli -p 6378 shutdown

或者

kill 进程号

一般情况下,我们不必要用 kill -9,这样 redis 不会进行持久化操作,除此之外,还会造成缓冲区等资源不能优雅关闭,极端情况下会造成 AOF 和复制丢失数据的情况

info replication 查看主从关系

Redis 哨兵集群方案_第3张图片

sentinel master 查看主信息

Redis 哨兵集群方案_第4张图片

sentinel replicas 查看从信息

Redis 哨兵集群方案_第5张图片

在线扩容

场景

说明

操作

节点内存扩容

节点内存不够,但主机存在足够内存

通过 config set maxmemory 在线修改配置参数

添加从节点

单纯增加一个从节点

1. 搭建新节点

2. 建立主从关系即可

从节点迁移扩容

节点内存不够,主机内存也不够,通过新机器来承载节点

由 A->B,A->C 变成 A->B,A->D

1. 将新节点加入到集群中

2. 下线原有从节点

主节点迁移扩容

节点内存不够,主机内存也不够,通过新机器来承载节点

由 A->B,A->C 变成 D->B,D->C

1. 将新节点加入到集群中

2. 将主节点进行强制转移

3. 下线原有主节点

如何彻底下线从节点

将每一个 sentinel_.conf 中的副本节点删除掉

常见命令

SENTINEL master mymaster

查看集群的 master

SENTINEL masters

查看所有 master(一个 sentinel 节点可以多个 Redis 主)

SENTINEL replicas mymaster

看某个集群的 salves

SENTINEL sentinels

查看 sentinel 节点信息

SENTINEL get-master-addr-by-name mymaster

查看集群的主地址

SENTINEL config get *

查询通用配置信息

SENTINEL config set [name]

设置通用配置信息

SENTINEL set mymaster down-after-milliseconds 30000

设置 sentinel 配置信息

SENTINEL CKQUORUM mymaster

用来判断 sentinel 集群是否可故障转移

SENTINEL MONITOR mymaster 192.168.128.167 6379 2

针对某个 sentinel 节点加入对 Redis 集群的监控

SENTINEL REMOVE

针对某个 sentinel 节点停止监控(会清空配置信息,慎用)

SENTINEL FAILOVER mymaster

强制主服务器转移

你可能感兴趣的:(Redis,redis,数据库,java)