Redis的高级特性哨兵
一、哨兵介绍
Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入。哨兵的核心功能是主节点的自动故障转移。下面是Redis官方文档对于哨兵功能的描述:
- 监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。
- 自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
- 配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
- 通知(Notification):哨兵可以将故障转移的结果发送给客户端。
简单来说,主从模式下为了使主从具备高可用性,就需要用哨兵进行监控,在主节点下线后,会通过投票选出新的主节点,在主节点上线后,也只能作为新节点的从节点。哨兵环境也需要高可用,所以一般是三个以上的集群。
架构图如下:
二、哨兵集群搭建
2.1搭建Redis主从集群
方法请看上一篇博客,redis主从集群搭建。
不同的是我在三个配置文件加了访问密码,requirepass "XXX",所以需要在这里也加上master的密码
masterauth "XXX",否则主服务器会拒绝从服务器的复制请求。
2.2修改哨兵配置文件
默认的配置文件是sentinel.conf在主目录下,首先复制两份出来
cp sentinel.conf sentinel-27000.conf
cp sentinel.conf sentinel-27001.conf
然后要修改的内容如下(相同的省略):
sentinel.conf | sentinel-27000.conf | sentinel-27001.conf |
---|---|---|
port 26379 | port 27000 | port 27001 |
pidfile "/var/run/redis-sentinel.pid" | pidfile "/var/run/redis-sentinel2.pid" | pidfile "/var/run/redis-sentinel3.pid" |
sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 127.0.0.1 6379 2 |
sentinel down-after-milliseconds mymaster 3000 | 略 | 略 |
sentinel failover-timeout mymaster 10000 | 略 | 略 |
sentinel auth-pass mymaster XXX | 略 | 略 |
sentinel myid xxx | sentinel myid xxx | sentinel myid xxx |
注意:
- 如果主服务器使用了密码认证,则sentinel auth-pass mymaster XXX是必须的,并且密码与上面的要一致。
- sentinel monitor mymaster 的配置必须要在 其他用到<master-name>的前面,因为读取配置文件时按顺序读取的会报这个名称未定义(坑了我好久)
- 修改 sentinel myid 从而保证三个id都不同。
- 需要在防火墙开启26379、 27000、 27001三个端口。
2.3启动
- 启动redis主从集群,注意顺序是先master再slave
src/redis-server redis-6379.conf
src/redis-server redis-6380.conf
src/redis-server redis-6381.conf
- 启动哨兵有两种方式。
src/redis-sentinel sentinel.conf
src/redis-server sentinel.conf --sentinel
src/redis-sentinel sentinel.conf
src/redis-sentinel sentinel-27000.conf
src/redis-sentinel sentinel-27001.conf
- 如图,哨兵成功监视了master并发现了下面的两个从服务器
2.4测试故障自动转移
- 查看哨兵集群情况,输入命令src/redis-cli -p 27000再info Sentinel
可以看到master是端口6379的,有两个slaves,三个哨兵。 - 这时我们kill掉6379的Redis进程后,再查看集群情况。哨兵日志如下:
6379挂了后进行了一轮的选举投票,最后6380端口的成为了新的master,来看看现在的集群情况是不是这样的。
- 这时如果重新启动6379,它还会不会恢复老大的身份呢?
5020:X 26 Dec 2018 13:46:38.998 # -sdown slave 8.9.8.165:6379 8.9.8.165 6379 @ mymaster 8.9.8.165 6380
5020:X 26 Dec 2018 13:46:48.947 * +convert-to-slave slave 8.9.8.165:6379 8.9.8.165 6379 @ mymaster 8.9.8.165 6380
日志显示6379重新加入了集群,只不过变成了从服务器。
转载于:https://www.cnblogs.com/2YSP/p/10161219.html
Redis的高级特性哨兵相关推荐
- Redis进阶实践之五Redis的高级特性
一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性,虽然 ...
- Redis的高级特性
目录 高级数据类型 支持事务 支持Lua脚本 支持pipeline 管道|流水线 支持发布/订阅 可实现异步队列 | 消息队列 高级数据类型 1.Bitmap 位图 按 bit 位存储信息,常用于实现 ...
- Redis之高级特性
一 慢查询分析 通过慢查询分析,可以扎到有问题命令,然后进行分析.一般而言都是设置一个阀值,当查询时间超过这个阀值,就会将这个语句或者命令记录下来. 而且需要注意的是,慢查询只是针对命令执行阶段,而不 ...
- Redis05:Redis的高级特性:expire 生存时间、pipeline 管道、info命令、Redis的持久化、Redis 的安全策略、Redis监控命令-monitor
一.expire 生存时间 Redis中可以使用expire命令设置一个键的生存时间,到时间后Redis会自动删除它. 它的一个典型应用场景是:手机验证码 我们平时在登录或者注册的时候,手机会接收到一 ...
- 一文通透讲解Redis高级特性,多线程/持久化/淘汰机制等统统搞定
Redis 是一个开源的,基于内存的可持久化的非关系型数据库存储系统.在实际项目中可以用 Redis 做缓存或消息服务器,Redis 也是目前互联网中使用比较广泛的非关系型数据库,下面就来深入分析Re ...
- Redis高级特性介绍及实例分析
本文将为大家介绍Redis的一些高级特性以及结合一个具体的实际案例来对Redis进行设计分析. Redis基础类型回顾 String Redis中最基本,也是最简单的数据类型.注意,VALUE既可以是 ...
- Redis基础用法、高级特性与性能调优以及缓存穿透等分析
目录 一.Redis介绍 二.Redis数据结构及常用的命令 三.Redis持久化策略选择 四.内存管理与数据淘汰机制 五.Redis过期策略及实现原理 1 说明 2 设置过期时间 3 三种过期 ...
- Redis 高级特性(2)—— 发布 订阅模式
Redis 高级特性 -- 发布订阅 1. 发布-订阅介绍 "发布-订阅"模式包含两种角色,分别为发布者和订阅者.订阅者可以订阅一个或者若干个频道(channel),而发布者可以向 ...
- Redis 高级特性(1)—— 事务 过期时间 排序
1. Redis 高级特性 -- 事务 事务概念 Redis 中的事务 (transaction)是一组命令的集合.事务同命令一样是 Redis 的最小执行单位,一个事务中的命令要么都执行,要么都不执 ...
最新文章
- Wifitap是一个WiFi注入工具集常用命令集合大学霸IT达人
- springBoot(19):定时任务
- BCP 导入导出数据库数据
- 像像接入云信,连接真人连接真爱
- boost::io::ostream_put用法的测试程序
- Angular jasmine单元测试框架TestBed.createComponent的实现原理
- max无法创建新的堆栈防护页面_交互设计师,新媒体艺术家们请注意:2019MaxMSP必读书单来袭!...
- VB 获得磁盘的文件系统
- ARMam3354linux系统开发,ARM板移植Linux系统启动(四)配置Kernel
- 佳能打印机清零操作及清零软件
- Java初学01:学习路线,韩顺平java教程百度云
- 计算机u盘序列号,注册表查询usb设备序列号,u盘电序列号注册表
- TypeError: list indices must be integers or slices, not float
- 中华通史.上古史-夏
- 雷鸣的游戏人生(一) --- 三个笑话
- 阿里云企业物联网平台推出千里传音播报服务 高效打造云端一体智能硬件
- 安卓GB28181跨网段语音对讲
- 电脑重装Win10 64位系统的方法
- 前端打包工具webpack和Vite
- 好女人必看行为守则100条----男人也学学吧!
热门文章
- MySQL高可用之mysql-mmm环境搭建
- Tomcat发布Maven项目遇到异常:java.lang.OutOfMemoryError: PermGen space
- HDU-1051 Wooden Sticks
- 软件项目开发流程及配置人员
- 创业星光论坛(上):汇源是否应在万荣建厂
- 带图片的,多列的DropDownList的实现
- jmeter随机参数化不重复_接口测试参数化详解(Jmeter)
- Nginx —— 用HTTP proxy module配置一个反向代理服务器
- 剑指offer 算法 (综合)
- MyEclipse运行tomcat提示严重错误 严重: Error starting endpoint java.lang.Exception: Socket