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. Java多线程之读写锁机制

    Java多线程中有很多的锁机制,他们都有各自的应用场景,例如今天我说的这种锁机制:读写锁 读写锁,见名知意,主要可以进行两种操作,读和写操作,他们之间结合使用起来又是各不相同的.比如多个线程之间可以同 ...

  2. Ubuntu18 用新用户登录后退格键/方向键/制表键 乱码

    Ubuntu18新建用户后,用新用户登录,此时 退格键Backspace 变成了 ^H,且方向键.制表键.Del键等均失效 这样会造成很多的麻烦,解决方式有两种: 方式1:Ctrl + Backspa ...

  3. Solution -「ABC 213H」Stroll

    \(\mathcal{Description}\)   Link.   给定一个含 \(n\) 个结点 \(m\) 条边的简单无向图,每条边的边权是一个常数项为 \(0\) 的 \(T\) 次多项式, ...

  4. Solution -「BZOJ #3786」星系探索

    \(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个点的有根树,点有点权,支持 \(q\) 次操作: 询问 \(u\) 到根的点权和: 修改 \(u\) ...

  5. Spring AOP应用之一:声明式事务

    所有数据访问技术都提供事务处理机制,这些技术提供了API用来开启事务.提交事务完成数据操作,或者在发生错误的时候回滚数据.Spring本身并不支持事务实现,同时只是负责提供标准接口来处理不同数据访问技 ...

  6. Android蓝牙扫码连接时,防止Activity重启

    集成了一个蓝牙的扫码枪,发现每次连接时,应用的当前Activity会销毁再次创建.调试了下, 没有监听到任何的事件,非常困惑.搜了一阵了解到是Android的一个机制. 某些设备配置可能会在运行时发生 ...

  7. 主流的商业智能BI工具推荐,学会数据分析没难度

    伴随着大数据概念的深入企业越来越重视大数据,商业智能BI工具已经成为许多企业数据分析的首选.也许有些小伙伴对商业智能BI工具还是有些陌生,在了解商业智能BI工具之前,先来了解一下什么是商业智能. 百度 ...

  8. 解除Ubuntu禁止root远程登录

    编辑SSH服务配置文件 编辑SSH服务的配置文件sshd_config,修改SSH的端口和root用户权限. 使用到的命令:(按字母 i 进入编辑模式,按ESC退出编辑模式, :wq 保存退出). r ...

  9. 【C#基础概念】编程语言:弱类型、强类型、动态类型、静态类型

    一.看图区别编程语言 一般来讲,看第一个图就够了 这图是引用的,有错误,Python是强类型,但是图片中却归为弱类型了. 业界堆静态和动态的区分达到共识. 但是堆强类型和弱类型语言还未达成共识.我个人 ...

  10. Qt:QMap

    0.说明 QMap < Key , T > 一个QMap就是一个K-V对,也可以说是字典对象. 1)构造 构造一个Key是QString,Value是int的QMap: QMap<Q ...