一.哨兵简介

哨兵介绍

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中Sentinel可以自动对主从进行检测,当一个有问题后,将会自动切换从节点为主。

哨兵适合使用单点的redis,并有高可用需求的。因为始终是单台的redis,性能是有限度的,有更高需求可以选择集群。

在代码中,用jedis之类工具读取 Sentinel 的信息,获取当前没问题的主节点,进行写入操作即可。当主挂掉,Sentinel会自动切换,只要对最新的主节点进行读写即可。

如果将主从做高可用,需要监控Sentinel的信息输出,将所有从节点做一个资源池,读将从资源池里找从节点进行。

哨兵原理

Sentinel系统时刻监控着主和从,当主挂掉后选择其中一个从来升任成主,可以启动多个Sentinel来避免监控挂掉,但多个Sentinel它们要投票。

Sentinel作用

1.Master状态检测

2.如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave

3.Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

Sentinel工作方式

1.在一般情况下,每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令来获得redis主从的节点信息

2.当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次

3.每2秒,会订阅获取一下主节点的哨兵信息,来了解哨兵们的信息,有新的哨兵加入,将会记录新哨兵信息,并与他建立连接

4.每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令

5.如果一个 实例 距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线

6.当主观下线的节点是 Master 时,则询问其他哨兵,超过一定个数则判断主节点挂掉,进行客观下线

7.当需要对一个 Master 进行客观下线,就需要在 Sentinel 们中选举一个领导者来执行这个操作,对 Master 进行下线,选举才用Raft算法

8.若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除

9.若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除

10 当对一个 Master 进行客观下线后,会从其它从中选择出一个执行slaveof no one命令,使其升级为主节点

11.向其它从节点发送命令,指定新主,并对新主进行数据复制

12.当原坏掉的主恢复后,将会作为新主的从节点

13.如果原坏掉的主删除不恢复,Sentinel依然会定期检测,会造成一定资源浪费

主观下线和客观下线

主观下线:

Subjectively Down,简称SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断,这个判断只是认为,但并不做任何动作

客观下线:

Objectively Down, 简称ODOWN,指的是多个 Sentinel 实例在对Master Server做出 SDOWN 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判断,然后开启failover

二.哨兵部署

环境介绍

[Redis-Server-1]
主机名 = host-1
系统 = centos-7.3
地址 = 1.1.1.1
软件 = redis-3.2.9 6379 26379 [Redis-Server-2]
主机名 = host-2
系统 = centos-7.3
地址 = 1.1.1.2
软件 = redis-3.2.9 6379 26379

哨兵配置

1.参照Redis主从 部署和配置,先搭建一个主从结构

2.每个节点都填写主redis的ip和端口,最后的1代表只要有一个哨兵节点认为主有问题,就切换主从,有3个节点可以写2

vim sentinel.conf

protected-mode yes
bind 1.1.1.1 #监听地址修改
daemonize yes
port 26380
sentinel monitor mymaster 1.1.1.1 6379 1 #这里修改成主的信息
sentinel down-after-milliseconds mymaster 3000
sentinel failover-timeout mymaster 1800

3.启动

sentinel 启动之后,就会从主redis获取它的信息还有从redis的地址,当前可以看到哨兵的日志

src/redis-sentinel sentinel.conf

4.关闭master

我们手动关闭Master 之后,sentinel 在监听master 确实是断线了之后,将会开始计算权值,然后重新分配主服务器

三.使用验证

连接哨兵,查看信息状态

src/redis-cli -p 26379

INFO

Redis哨兵 部署和配置的更多相关文章

  1. Redis哨兵模式的配置

    绪论 现有三台设备,192.168.137.11.192.168.137.12和192.168.137.13,要求在三台设备上实现redis哨兵模式,其中192.168.137.11为master,其 ...

  2. redis哨兵集群配置

    redis 集群架构图: 需要先配置redis主从,我这边是单机部署的. 采用一主一从,两个sentinel. redis host: 172.31.11.235 redis-master port: ...

  3. Redis主从 部署和配置

    目录 一.主从简介 主从介绍 主从原理 二.主从部署 环境介绍 主从配置 临时主从 三.主从测试 一.主从简介 主从介绍 Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节 ...

  4. Spring Boot(十三):整合Redis哨兵,集群模式实践

    前面的两篇文章(Redis的持久化方案, 一文掌握Redis的三种集群方案)分别介绍了Redis的持久化与集群方案 -- 包括主从复制模式.哨兵模式.Cluster模式,其中主从复制模式由于不能自动做 ...

  5. Redis哨兵模式高可用部署和配置

    一.Redis 安装配置 1.下载redis安装包 wget http://download.redis.io/releases/redis-4.0.9.tar.gz 2.解压安装包 tar -zxv ...

  6. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  7. redis哨兵架构的基础知识及部署和管理

    一.前言 1.哨兵的介绍 sentinal,中文名是哨兵 哨兵是redis集群架构中非常重要的一个组件,主要功能如下 ()集群监控,负责监控redis master和slave进程是否正常工作 ()消 ...

  8. Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...

  9. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

随机推荐

  1. js中修改this指向的方法(call,apply,bind)

    前言:call.apply和bind都是为了改变某个函数运行时的this指向的,对于前端人员来说,关于this的掌握程度,直接决定了前端水平的高低.下面我们就来简单浅显易懂的来看一下es5中常用的三种 ...

  2. xpath解析案例

    xpath解析百度页面的百度一下 # 1)获取网页的源码 # 2)解析的服务器响应的文件 etree.HTML , 用来解析字符串格式的HTML文档对象,将传进去的字符串转变成 element 对象 ...

  3. 面霸篇:Java 集合容器大满贯(卷二)

    面霸篇,从面试角度作为切入点提升大家的 Java 内功,所谓根基不牢,地动山摇. 码哥在 <Redis 系列>的开篇 Redis 为什么这么快中说过:学习一个技术,通常只接触了零散的技术点 ...

  4. 【Microsoft Azure 的1024种玩法】三.基于Azure云平台构建Discuz论坛

    [简介] Discuz!是一套通用社区论坛软件系统,用户在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能.很强负载能力和可高度定制的论坛服务. [前期文章] [操作步骤] ...

  5. InnoDB 索引详解

    1.什么是索引 索引是存储引擎用于快速找到记录的一种数据结构. 2.索引有哪些数据结构 顺序查找结构:这种查找效率很低,复杂度为O(n).大数据量的时候查询效率很低. 有序的数据排列:二分查找法又称折 ...

  6. 《重学Java高并发》Sempahore的使用场景与常见误区

    大家好,我是威哥,<RocketMQ技术内幕>一书作者,荣获RocketMQ官方社区优秀布道师.CSDN2020博客执之星Top2等荣誉称号.目前担任中通快递技术平台部资深架构师,主要负责 ...

  7. DotNetty实现WebSocket的简单使用

    工作中项目是物联网项目的,管理平台又是bs架构. 如果用 Socket 的话,Web 端还需要转发,就全部统一采用了 WebSocket . DotNet 平台上的 WebSocket 实现有很多种, ...

  8. C#.NET 操作Windows服务(安装、卸载)

    注意点: 1.安装时要请求到管理员权限. 2.卸载前,一定要停止掉Windows服务,否则需要重启或注销电脑.代码无法停止服务时,使用services.msc来停止. 开始: 1.新建一个名为&quo ...

  9. 详解Threejs中的光源对象

    光源的分类 AmbientLight(环境光),PointLight(点光源),SpotLight(聚光源) 和 DirectionalLight(平行光)是基础光源 HemisphereLight( ...

  10. Vue 中使用 TypeScript axios 使用方式

    Vue 中使用 TypeScript axios 使用方式 方式一 import axios from 'axios'; Vue.prototype.$axios = axios; // 在 .vue ...