目录
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 应用方
每个 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 和复制丢失数据的情况
场景 |
说明 |
操作 |
节点内存扩容 |
节点内存不够,但主机存在足够内存 |
通过 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_
查看集群的 master
查看所有 master(一个 sentinel 节点可以多个 Redis 主)
看某个集群的 salves
查看 sentinel 节点信息
查看集群的主地址
查询通用配置信息
设置通用配置信息
设置 sentinel 配置信息
用来判断 sentinel 集群是否可故障转移
针对某个 sentinel 节点加入对 Redis 集群的监控
针对某个 sentinel 节点停止监控(会清空配置信息,慎用)
强制主服务器转移