-
第十六章 【高级篇】Redis6.X高可用之主从+Sentinel哨兵监控
第1集 Redis6.X节点高可用监控之Sentinel介绍
简介:Redis6.X节点高可用监控之Sentinel介绍
-
背景
-
前面搭建了主从,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,人工干预费事费力,还会造成一段时间内服务不可用
-
哨兵模式介绍
- Redis提供了哨兵的命令,是一个独立的进程
- 原理 哨兵通过发送命令给多个节点,等待Redis服务器响应,从而监控运行的多个Redis实例的运行情况
- 当哨兵监测到master宕机,会自动将slave切换成master,通过通知其他的从服务器,修改配置文件切换主机
-
Sentinel三大工作任务
-
监控(Monitoring)
- Sentinel 会不断地检查你的主服务器和从服务器是否运作正常
-
提醒(Notification)
- 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知
-
自动故障迁移(Automatic failover)
- 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器
- 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器
-
-
问题
- 一个哨兵进程对Redis服务器进行监控,可能会出现问题
- 一般是使用多个哨兵进行监控,各个哨兵之间还会进行监控,形成多哨兵模式
-
多哨兵模式下线名称介绍
-
主观下线(Subjectively Down, 简称 SDOWN)
- 是单个 Sentinel 实例对服务器做出的下线判断,比如网络问题接收不到通知等
- 一个服务器没有在 down-after-milliseconds 选项所指定的时间内, 对向它发送 PING 命令的 Sentinel 返回一个有效回复(valid reply), 那么 Sentinel 就会将这个服务器标记为主观下线
-
客观下线(Objectively Down, 简称 ODOWN)
- 指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断
- 一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线
- 客观下线条件只适用于主服务器
-
仲裁 qurum
- Sentinel 在给定的时间范围内, 从其他 Sentinel 那里接收到了【足够数量】的主服务器下线报告, 那么 Sentinel 就会将主服务器的状态从主观下线改变为客观下线
- 这个【足够数量】就是配置文件里面的值,一般是Sentinel个数的一半加1,比如3个Sentinel则就设置为2
- down-after-milliseconds 是一个哨兵在超过规定时间依旧没有得到响应后,会自己认为主机不可用
- 当拥有认为主观下线的哨兵达到sentinel monitor所配置的数量时,就会发起一次投票,进行failover
-
第2集 Redis6.X节点高可用监控之Sentinel哨兵流程解析和准备
简介:Redis6.X节点高可用监控之Sentinel哨兵搭建环境准备
-
核心流程
- 每秒ping,超过时间不响应 则认为主观下线
- 满足多个,则认为是客观下线
- 投票选择主节点
- 如果没有足够的节点同意master下线,则状态会被移除
-
环境准备
- 配置3个哨兵,每个哨兵的配置都是一样的
- 启动顺序 先启动主再启动从,最后启动3个哨兵
- 哨兵端口是 【26379】记得开放
#不限制ip
bind 0.0.0.0
# 让sentinel服务后台运行
daemonize yes
# 配置监听的主服务器,mymaster代表服务器的名称,自定义,172.18.172.109 代表监控的主服务器,6379代表端口,
#2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 172.18.172.109 6379 2
# sentinel auth-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
sentinel auth-pass mymaster 123456
#超过5秒master还没有连接上,则认为master已经停止
sentinel down-after-milliseconds mymaster 5000
#如果该时间内没完成failover操作,则认为本次failover失败
sentinel failover-timeout mymaster 30000
- 在目录下创建3个文件sentinel-1.conf、sentinel-2.conf、sentinel-3.conf
port 26379
bind 0.0.0.0
daemonize yes
pidfile "/var/run/redis-sentinel-1.pid"
logfile "/var/log/redis/sentinel_26379.log"
dir "/tmp"
sentinel monitor mymaster 8.129.113.233 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 30000
port 26380
bind 0.0.0.0
daemonize yes
pidfile "/var/run/redis-sentinel-2.pid"
logfile "/var/log/redis/sentinel_26380.log"
dir "/tmp"
sentinel monitor mymaster 8.129.113.233 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 30000
port 26381
bind 0.0.0.0
daemonize yes
pidfile "/var/run/redis-sentinel-3.pid"
logfile "/var/log/redis/sentinel_26381.log"
dir "/tmp"
sentinel monitor mymaster 8.129.113.233 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 30000
- 记得创建 /var/log/redis 文件夹
第3集 Redis6.X高可用实战 主从+Sentinel哨兵集群搭建实战
简介:Redis6.X高可用实战 主从+Sentinel哨兵集群搭建实战
- 启动哨兵集群
./redis-server /usr/local/redis/conf/sentinel-1.conf --sentinel
./redis-server /usr/local/redis/conf/sentinel-2.conf --sentinel
./redis-server /usr/local/redis/conf/sentinel-3.conf --sentinel
-
网络安全组需要开放端口
-
优点
- 主从可以自动切换,可用性更高
-
缺点
- 主从切换会丢失短暂数据
- 主节点的写能力和存储能力受限
第4集 新版SpringBoot/微服务cloud整合Redis主从+Sentinel哨兵
简介: 新版SpringBoot/微服务cloud整合Redis主从+Sentinel哨兵
- 注释掉 host和port
- 新增配置
sentinel:
master: mymaster
nodes: 8.129.113.233:26379,8.129.113.233:26380,8.129.113.233:26381
来源:
https://www.cnblogs.com/Xd17324217006/p/14982613.html
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比