Redis的哨兵模式Sentinel
sentinel功能
redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换
2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。这个需要我们指定相关的代码,比如发邮件、事务的处理等等
3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口
注意:在使用sentinel监控主从节点的时候,从节点需要是使用动态方式配置的,如果直接修改配置文件,后期sentinel实现故障转移的时候会出问题
主观下线和客观下线:
1、主观下线状态:当一个sentinel认为一个redis服务连接不上的时候,会给这个服务打个标记为下线状态。
2、客观下线状态:当多个sentinel认为一个redids连接不上的时候,则认为这个redis服务确实下线了。这里的多个sentinel的个数可以在配置文件中设置。一般集群中一半的从节点都认为主机下线了,就进行主机选举机制,选出新的主机节点
sentinel配置
- sentinel monitor mymaster 192.168.33.130 6379 2 #最后一个参数视情况决定 ,一般为从节点数量的一半;最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数
- 启动sentinel redis-sentinel sentinel.conf
sentinel的一些命令
- INFO sentinel的基本状态信息
- SENTINEL masters 列出所有被监视的主服务器,以及这些主服务器的当前状态
- SENTINEL slaves <master name> 列出给定主服务器的所有从服务器,以及这些从服务器的当前状态
- SENTINEL get-master-addr-by-name <master name> 返回给定名字的主服务器的 IP 地址和端口号
- SENTINEL reset <pattern> 重置所有名字和给定模式 pattern 相匹配的主服务器。重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel
- SENTINEL failover <master name> 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移,但是它会给其他sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新
具体操作
- 新建sentinel文件夹,在其下新建20190、20191、20192和scripts文件夹,在文件夹的名字也是其对应的端口名字,在端口名字文件夹下新建conf、data和logs文件夹
- mkdir sentinel
- mkdir -pv {20190,20191,20192}/{conf,data,logs}
- 启动方式redis-server 20190/conf/sentinel.conf --sentinel
- 或者redis-sentinel 20190/cong]f/sentinel.conf
- 在sentinel文件夹下,此时此文件下存放的就是20190、20191和20192文件夹,使用命令cp 20190/conf/sentinel.conf 20191/conf完成conf文件的拷贝,使用命令sed -i "s/20190/20191/g" 20191/conf/sentinel.conf完成将20190替换为20191的文本替换,完成即可,别的不需要动,具体内容如下
#20190
#指定端口号
port 20190
#指定后台运行
daemonize yes
#指定内网地址
bind 192.168.13.50
#指定数据文件夹
dir "/home/bfxy/servers/sentinel/20190/data"
#指定日志问价夹
logfile "/home/bfxy/servers/sentinel/20190/logs/sentinel.log"#指定master的连接名字是mymaster,连接的地址和端口号,2代表如果两个从节点认为主节点失效了,就进行master的选举
sentinel monitor mymaster 192.168.13.50 10191 2
#设置超时时间20秒
sentinel failover-timeout mymaster 20000
#指定脚本文件
sentinel notification-script mymaster /home/bfxy/servers/sentinel/scripts/notify.sh
# Generated by CONFIG REWRITE
sentinel client-reconfig-script mymaster /home/bfxy/servers/sentinel/scripts/reconfig.sh
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 8
sentinel known-sentinel mymaster 192.168.13.50 20191 e3f1be1924eba40a3698be5d81433ce133289315
sentinel known-sentinel mymaster 192.168.13.50 20192 8d47dce1af43f144d7b868969740cefef7d0e034
sentinel current-epoch 8
- 在src目录下,使用命令redis-sentinel /user/local/redis-4.0.14/sentinel/20190/conf/sentinel.conf启动服务,20191和20192也是这样操作
- 在src目录下,使用命令redis-cli -h 192.168.133.130 -p 20190,使用客户端连接到服务器
Redis的哨兵模式Sentinel相关推荐
- Redis:哨兵模式(Sentinel)原理
1. 前言 Redis主从复制模式不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复.Redis哨兵模式就解决了Redis主从复制模式 ...
- Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备 ...
- Redis: Redis的主从复制(Master/Slave),一主二仆,薪火相传,反客为主,哨兵模式sentinel
命令: slaveof 主库ip 主库端口 配置从库 info replication 查看redis连接情况 slaveof no ...
- Redis:哨兵模式(针对某一模块,数据量有限)
Redis:哨兵模式(针对某一模块,数据量有限) 关键词 主从(读写分离,高新能),没有实现高可用 主从+哨兵:可以实现主从切换,实现高可用 哨兵检测(1s1ping),哨兵确认(接受回复,主观下线: ...
- Redis的哨兵模式搭建
Redis的哨兵模式搭建 1.Redis的哨兵模式 Redis的哨兵是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库.哨兵(sentinel) 是一个分布式系统, ...
- Redis(3)--哨兵模式,集群
Redis的哨兵模式 什么是哨兵模式 Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行.其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例. ...
- Redis之哨兵模式
文章目录 Redis之哨兵模式 1.哨兵介绍 2.哨兵作用 3.哨兵相关配置 4.配置哨兵 5.演示(配置哨兵) 6.主从切换过程 7.阶段一监控阶段 8.阶段二通知阶段 9.阶段三故障转移阶段 Re ...
- 哨兵模式(sentinel)
Redis主从复制-哨兵模式(Sentinel) 反客为主的自动版,能够后台监控Master是否故障,如果故障了,根据投票数自动将Slave转换为 Master. 哨兵模式是一种特殊的模式,首先Red ...
- redis的哨兵模式测试
上篇文章我们说到,一主二从的模式,如果主机挂掉,从机等待主机连上之后,继续成为主机的slave. 但是这样会影响我们业务的正常运转呀,我们怎么来做呢? 目前的我的服务器: 192.128.116.12 ...
最新文章
- dede使用方法----如何调用最新文章,最热文章,友情链接
- Linux内存管理之高端内存映射
- 【转:SAP学习篇】Fiori 的开发工具
- Hadoop MapReduce实例:按手机上网总流量降序排序代码实现及结果演示
- nginx负载均衡的五种方式
- VTK:可视化之HedgeHog
- 十八、MySQL之TCL事务控制语言(详解)
- 企业如何才能选到最好的邮件系统合作伙伴?
- 前端ajax数据提交到服务器_详解前端如何让服务器主动向浏览器推送数据
- python和anaconda区别_Pycharm、Anaconda到底是什么?有什么区别?
- 如何用一行 CSS 实现 10 种现代布局?
- 不起眼的vim.转自https://blog.csdn.net/iplayvs2008/article/details/51508599
- windows 系统 局域网 屏幕共享
- 华为的PBC个人绩效评价模板
- 计算机笔记本硬盘,笔记本取证之--笔记本硬盘拆卸
- C++基础(C++Primer学习)
- PAIRNORM : TACKLING OVERSMOOTHING IN GNNS
- 【FJ 2016 Day5】冷战(coldwar)
- 最近的一些杂感-20220107
- 浏览器开代理后,https地址打不开
热门文章
- 【转】pacs定位线_C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法
- Dynamics 365 CRM 开发架构简介
- php源码查找替换,php 替换模板中的 PHP源码标签字符方法
- java比赛题目_【蓝桥杯2016第七届比赛题目】JAVA A组
- Python3 基础学习笔记 C06【用户输入和 while 循环】
- REVERSE-PRACTICE-BUUCTF-29
- 【2018ACM山东省赛 - E】Sequence(树状数组,思维,优化)
- 【OpenJudge - noi - 7624】山区建小学(dp)
- 【牛客 - 181D】小叶的巡查(树的直径,数学)
- php测试插入,php – 使用Symfony测试数据库插入