redis哨兵功能

redis-Sentinel(哨兵)

  • 前言

    • 当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户都没有实现主从切换的功能
  • redis-sentinel是redis官方推荐的高可用性解决方案,
  • 而redis-Sentinel就是一个独立运行的进程,用于监控多个master-slave集群,自动发现master宕机,进行自动切换slave>master
  • 功能:
    • 不时的监控redis是否良好运行,如果节点不可达就会对节点进行下线标识
    • 如果被标识的是主节点,Sentinel就会和其他的Sentinel节点'协商',如果其他节点也人为主节点不可达,就会选举一个Sentinel节点来完成自动故障转义
    • 在master-slave(主-从)进行切换后,master_redis.conf,slave_redis.conf和Sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,Sentinel.conf的监控目标会随之调换

redis主从复制背景

  • redis主从复制可将主节点数据同步给从节点,从节点此时有俩个作用:

    • 一旦主节点宕机,从节点作为主节点的备份可以随机顶上来.
    • 扩展主节点的读能力,分担主节点读压力
  • 存在问题:

    • 一旦主节点宕机,从节点上位,那么需要人为修改所有应用方的主节点地址(改为新的master地址),还需要命令所有从节点复制新的主节点

    所以要实现这些功能,redis-sen就可以解决

主从复制架构

  • redis-Sentinel(哨兵功能):

    • 哨兵进行检测,主从架构是否正常,如果主库挂掉,哨兵会自动修复redis.conf,进行添加/删除slaveof 指令
    • 作用:只是监控redis

redis-Sentinel(哨兵)配置

  • 这里是以三个redis为实例,一主俩从
  1. 准备三个redis实例,一主俩从

    # 主配置
    vim redis-6379.conf
    # 插入数据
    port 6379
    daemonize yes
    logfile "6379.log"
    dbfilename "dump-6379.rdb"
    dir "/var/redis/data/"
    #从节点配置
    vim redis-6380.conf
    #插入数据
    port 6380
    daemonize yes
    logfile "6380.log"
    dbfilename "dump-6380.rdb"
    dir "/var/redis/data/"
    slaveof 127.0.0.1 6379 // 从属主节点 # 从节点配置
    vim redis-6381.conf
    #插入数据
    port 6381
    daemonize yes
    logfile "6380.log"
    dbfilename "dump-6380.rdb"
    dir "/var/redis/data/"
    slaveof 127.0.0.1 6379 // 从属主节点
  2. 启动主节点

    redis-server redis-6379.conf
    
    #登录客户端
    redis-cli -p 6380
    # 检测是否通信
    ping # 输出为pong则为正常

    注意问题:这里如果启动客户端显示

    Could not connect to Redis at 127.0.0.1:6379: Connection refused

    解决方法:创建mkdir /var/redis/data/

  3. 启动俩个slave(从)节点

    redis-server  redis-6380.conf
    redis-server redis-6381.conf # 登录客服端验证
    与上述主节点验证方法一样
  4. 检测主从的状态是否正常

    redis-cli  -p 6379 info replication
    
    # 输出内容如下为正常
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=qsmaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3

    注意:

    ​ 如果发现实验不成功,需删掉所有的配置文件,从新来过

    准备三个哨兵,开始监控主从架构

    1. 准备三个配置文件,哨兵文件

      vim redis-26379.conf    # 名字随意起,
      #插入内容
      port 26379
      dir /var/redis/data/
      logfile "26379.log"
      sentinel monitor qsmaster 127.0.0.1 6379 2
      sentinel down-after-milliseconds qsmaster 30000
      sentinel parallel-syncs qsmaster 1
      sentinel failover-timeout qsmaster 180000
      daemonize yes #第二个哨兵
      vim redis-26380.conf port 26380
      dir /var/redis/data/
      logfile "26380.log"
      sentinel monitor qsmaster 127.0.0.1 6379 2
      sentinel down-after-milliseconds qsmaster 30000
      sentinel parallel-syncs qsmaster 1
      sentinel failover-timeout qsmaster 180000
      daemonize yes #第三哨兵
      vim redis-26381.conf port 26381
      dir /var/redis/data/
      logfile "26381.log"
      sentinel monitor qsmaster 127.0.0.1 6379 2
      sentinel down-after-milliseconds qsmaster 30000
      sentinel parallel-syncs qsmaster 1
      sentinel failover-timeout qsmaster 180000
      daemonize yes
    2. 启动三个哨兵

      redis-sentinel redis-26379.conf
      redis-sentinel redis-26380.conf
      redis-sentinel redis-26381.conf

      注意!!如果发现实验不成功,需删掉所有的哨兵配置文件,从新来过

      注意!!如果发现实验不成功,需删掉所有的哨兵配置文件,从新来过

    3. 检查哨兵状态

      redis-cli -p 26379 info sentinel
      
      信息如下为正常
      # Sentinel
      sentinel_masters:1
      sentinel_tilt:0
      sentinel_running_scripts:0
      sentinel_scripts_queue_length:0
      sentinel_simulate_failure_flags:0
      master0:name=qsmaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3
    4. 模拟哨兵自动进行主从切换

      # 查看进程信息
      ps -ef |grep redis
      # 杀死6379的进程
      kill -9 6379的进程号 # 查看6380和6381的身份信息,看是否进行主从切换
      redis-cli -p 6380 info replication
      redis-cli -p 6381 info replication # 手动启动6379挂掉的数据库,看是否会被哨兵,添加进信息主从集群
      redis-server redis-6379.conf redis-cli -p 6379 info replication

redis哨兵功能的更多相关文章

  1. Redis哨兵功能与集群搭建

    6.redis哨兵功能 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机, ...

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

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

  3. Redis 哨兵

    作用 Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入. 主要提供了配置提供者,通知,哨兵的监控和自动故障转移功能.哨兵的核心功能是主节点的自动故障转移. 下面是Red ...

  4. 架构师养成记--33.Redis哨兵、redis简单事务

    Redis哨兵 有了主从复制,如果我想想对主从服务器进行监控,在redis2.6后提供了哨兵机制,2.6有哨兵1.0版本,并不稳定.2.8以后的哨兵功能才稳定起来. 顾名思义,哨兵就是监控Redis系 ...

  5. Redis哨兵原理详解

    一.概述 Redis哨兵(以下称哨兵)是为Redis提供一个高可靠解决方案,对一定程序上的错误,可以不需要人工干预自行解决. 哨兵功能还有监视.事件通知.配置功能.以下是哨兵的功能列表: 监控:不间断 ...

  6. Redis哨兵模式实现集群的高可用

    先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel ...

  7. 11.Redis 哨兵集群实现高可用

    作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...

  8. Redis哨兵、复制、集群的设计原理与区别

    一 前言 谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转 ...

  9. redis 哨兵集群原理及部署

    复制粘贴自: https://www.cnblogs.com/kevingrace/p/9004460.html 请点击此链接查看原文. 仅供本人学习参考, 如有侵权, 请联系删除, 多谢! Redi ...

随机推荐

  1. ASP.NET Core 6框架揭秘实例演示[03]:Dapr初体验

    也许你们可能没有接触过Dapr,但是一定对它"有所耳闻",感觉今年它一下子就火了,一时间很多人都在谈论它.我们从其命名(Dapr的全称是"分布式应用运行时Distribu ...

  2. 一次Kafka内存泄露排查经过

    一.现象 服务部署后内存总体呈上升趋势 二.排查过程 通过go tool pprof收集了三天内存数据 2月11号数据: 2月14号数据: 2月15号数据: 可以看到newPartitionProdu ...

  3. Solution -「JOISC 2021」「LOJ #3489」饮食区

    \(\mathcal{Description}\)   Link.   呐--不想概括题意,自己去读叭~ \(\mathcal{Solution}\)   如果仅有 1. 3. 操作,能不能做?    ...

  4. Solution -「洛谷 P4389」付公主的背包

    \(\mathcal{Description}\)   Link.   容量为 \(n\),\(m\) 种物品的无限背包,求凑出每种容量的方案数,对 \(998244353\) 取模.   \(n,m ...

  5. pytest(11)-Allure生成测试报告(一)

    Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...

  6. Python+selenium自动循环发邮件

    Python源代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...

  7. Python中类的两种用法

    第一种用法是使用类生成实例对象.类作为实例对象的模版,每个实例创建后,都将拥有类的所有属性和方法. 第二种用法是用类将多个函数(方法)打包封装在一起,让类中的方法相互配合.

  8. 基于nodejs的阿里云DDNS服务,支持多网卡绑定

    前段几天写的,自用. 想着也许有和我一样需求的同学,所以开源发出来了. 提供阿里云的DDNS设置,支持多网卡多域名绑定. 特性 支持阿里云DDNS设置 支持针对多个线路多个网卡单独设置域名 支持IPv ...

  9. sql注入代码分析及预防

    sql注入的原因,表面上说是因为 拼接字符串,构成sql语句,没有使用 sql语句预编译,绑定变量.但是更深层次的原因是,将用户输入的字符串,当成了 "sql语句" 来执行. 1. ...

  10. 图表制作软件哪家强?当属火爆商业智能圈的Smartbi

    图表制作软件选择多吗? 相对来说,统计图表制作软件还是很多的.比如常见的百度图说还有wps和excel都是可以制作好看的统计图的.关键就是看是在怎样的业务场景下使用.一般情况下,如果你对Excel足够 ...