Redis哨兵机制当中的原理知识点,用心分享, 建议收藏!

2020-01-24  本文已影响0人  javap

哨兵

基本概念

在主从复制的架构中一旦主节点出现故障,需要手动将一个从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令其他从节点去复制新的主节点,整个过程都需要人工干预。
故障转移不及时的严重后果:

环境部署

①启动master节点
redis-6379.conf配置:

#redis以守护进程方式运行
daemonize yes
#日志文件
logfile 6379.log      
#rdb文件
dbfilename dump-6379.rdb

redis-sever redis-6379.conf
②启动从节点
redis-6380.conf配置:

#redis以守护进程方式运行
daemonize yes
#日志文件
logfile "6380.log"         
#rdb文件
dbfilename "dump-6380.rdb"
#设置主节点
slaveof 127.0.0.1 6379

redis-server redis-6380.conf
redis-server redis-6381.conf
确认主从关系
info replication 或 role命令
④配置Sentinel节点
sentinel-26379.conf配置:

port 26379
daemonize yes
logfile "26379.log"

#sentinel monitor <master-name> <ip> <port> <quorum>
#监控127.0.0.1:6379这个主节点,别名yunxi-master,至少2个Sentinel节点认为失败时做故障转移
sentinel monitor yunxi-master 127.0.0.1 6379 2

#sentinel down-after-milliseconds <master-name> <times>
#超过指定秒没有收到节点回复,判为故障下线
sentinel down-after-milliseconds yunxi-master 30000

#sentinel parallel-syncs <master-name> <nums>
#故障转移时的从节点向主节点发起并发复制请求的数量
sentinel parallel-syncs yunxi-master 1

#sentinel failover-timeout <master-name> <times>
#故障转移超时时间
sentinel failover-timeout yunxi-master 180000

⑤启动Sentinel节点。
两种方式启动Sentinel节点:
a、使用redis-sentinel命令:
     redis-sentinel sentinel-26379.conf
b、使用redis-server命令加--sentinel参数:
     redis-server sentinel-26379.conf --sentinel
⑥启动三个Sentinel节点
两种方式启动Sentinel节点:
a、使用redis-sentinel命令:
     redis-sentinel sentinel-26379.conf
b、使用redis-server命令加--sentinel参数:
     redis-server sentinel-26379.conf --sentinel
⑦确认
info sentinel
部署技巧

实现原理

三个定时监控任务

消息格式:
<Sentinel节点IP> <Sentinel节点端口> <Sentinel节点runId> <Sentinel节点配置纪元>
<主节点名字> <主节点Ip> <主节点端口> <主节点配置纪元>

作用:
①发现新的Sentinel节点:通过订阅主节点的sentinel:hello了解其他的Sentinel节点信息,如果是新加入的Sentinel节点,将该Sentinel节点信息保存起来,并与该Sentinel节点创建连接。
②Sentinel节点之间交换主节点的状态,作为后面客观下线以及领导者选举的依据。

Sentinel命令

上一篇 下一篇

猜你喜欢

热点阅读