redis学习---哨兵模式

目录

  • 简介
  • 作用
  • 架构图
  • 实现

1. 简介:

redis的主从方式,使得slavof在整个系统中起到了数据的冗余和备份的作用,但是当master服务挂了之后,整个redis服务处于停用的状态,这时需要有服务在几个slavof中选举出一个新的master服务继续对外提供服务,redis并没有提供master的选举机制,而是需要借助一个哨兵来进行监控并选举

2.1 作用:

  1. 监控master和slavof是否正常运行
  2. 在slavof中选举新的master服务

3. 架构图:

3.1 单哨兵模式

哨兵时一个独立的进程,使用单个哨兵时候的架构图
单个哨兵架构图

3.2 单哨兵存在问题

单个哨兵容易导致单点问题,哨兵的可用性解决方式就是多起几个哨兵的方式,一般都是起单数的哨兵数量以保证系统的稳定。此时哨兵不仅会监控master和slavof,还会监控哨兵,这就是哨兵集群

3.3 哨兵集群

单个哨兵架构图

4. 实现

4.1 redis 一主两从

主机端口作用
192.168.127.1316379
192.168.127.1326379
192.168.127.1336379

4.2 sentinel:三台

主机端口
192.168.127.13126379
192.168.127.13226379
192.168.127.13326379

4.3 配置方式

配置sentinel.conf文件(目前主服务器没有配置密码)

port 26379
#mymaster 主服务名称自定义 后续配置都有使用
#192.168.127.131 6379当前主master服务器主机ip和端口 #最后的2表示在sentinel集群中只要有两个节点检测到redis主节点出故障就进行切换
sentinel monitor mymaster 192.168.127.131 6379 2
#去除保护模式  这个不配置,多sentinel的时候就是无法选举
protected-mode no
#如果3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没活过来,则启动failover
sentinel failover-timeout mymaster 10000
#后台运行
daemonize yes
#配置运行日志地址
logfile "/home/sentinel.log"

4.4 启动

命令:

./redis-sentinel ../sentinel.conf

4.5 启动后各文件变化

启动后sentinel会自动去redis主服务读取个从服务器的信息以及sentinel服务器信息
sentinel.conf文件最后会自动添加如下信息

#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
#发现的从服务器地址
sentinel known-slave mymaster 192.168.127.132 6379
#发现的从服务器地址
sentinel known-slave mymaster 192.168.127.133 6379
#发现的sentinel服务器地址
sentinel known-sentinel mymaster 192.168.127.132 26379 9fd8006394b620e79492953cdd919f75ea5f922c
#发现的sentinel服务器地址
sentinel known-sentinel mymaster 192.168.127.133 26379 30c2efd882c5c454fdd8ac409a00a6eda6b154a1
sentinel current-epoch 0

4.6 sentinel选举日志

+sdown master mymaster 192.168.127.132 6379
+new-epoch 30
+vote-for-leader 5dd7a844b99e912240805591f43127594425a553 30
+odown master mymaster 192.168.127.132 6379 #quorum 3/2
Next failover delay: I will not start a failover before Sat Sep 29 17:46:51 2018
+config-update-from sentinel 5dd7a844b99e912240805591f43127594425a553 192.168.127.131 26379 @ mymaster 192.168.127.132 6379
+switch-master mymaster 192.168.127.132 6379 192.168.127.131 6379
+slave slave 192.168.127.133:6379 192.168.127.133 6379 @ mymaster 192.168.127.131 6379
+slave slave 192.168.127.132:6379 192.168.127.132 6379 @ mymaster 192.168.127.131 6379
+sdown slave 192.168.127.132:6379 192.168.127.132 6379 @ mymaster 192.168.127.131 6379

4.7 选举流程

  1. 每个sentinel节点会定期向master节点发送心跳包来判断存活状态
  2. 当down-after-milliseconds选项所指定的时间点都没有回复的时候,这个实例会被sentinel标记为主观下线
  3. 当足够多的sentinel的节点数>quorum的节点认为master节点进入主观下线状态时,则master会被标记为客观下线
  4. 如果sentinel有多个,需要先用raft算法,选出一个leader来做决策
  5. 重新选举出新的master

4.8 重新选举后各文件变化

当master挂掉之后自动完成选举后(假设新主为132),各redis.conf变化

#主redis.conf自动添加
slaveof 192.168.127.132 6379
#从变主redis.conf 自动去除slavefo属性
#令一个从服务器自动修改slaveof为新的主服务器地址
slaveof 192.168.127.132 6379

sentinel的sentinel.conf配置变化

#会自动替换成新的主服务器地址
sentinel monitor mymaster 192.168.127.132 6379 2
#会自动增加
sentinel config-epoch mymaster 1 
#会自动增加
sentinel leader-epoch mymaster 1 
#会自动增加
sentinel current-epoch 1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值