首页 > 数据库 >Redis——04 学习

Redis——04 学习

时间:2022-12-19 10:45:48浏览次数:39  
标签:04 宕机 Redis redis 哨兵 学习 master sentinel 节点

Redis——04

之前讲了 redis 的主从复制模型的优点以及搭建效果,但是依然有自己的缺陷,如果主节点宕机,那么其他从节点可能还有运行的,如果此时任意一个从节点升级生了主节点那么一切照旧,反之主节点没有了,那么从节点又只能做读操作,那么此时的 redis 服务就只能提供读而不能提供写操作。这就是主从复制模型的缺陷,所以来了解一下哨兵模型。

哨兵(Sentinel)

redis 默认只有 master 具备写的能力,而 slave 只能读,那么为了解决 master 宕机后,redis 依旧可以读写,加入哨兵,简单原理就是:让一个 slave 变成 master,整个节点就可以继续工作。即便之前的 master 恢复过来,也可以做当前 master 的 slave。

redis 的哨兵就是监控整个节点,当 master 宕机的情况下,帮忙重新选取 master。

redis 中的哨兵支持单哨兵和多哨兵。单哨兵只要发现 master 宕机,就直接选取另一个 master。而多哨兵则是根据设定,达到一定哨兵的临界值之后才认为该 master 宕机,会重新选取一个 master。

1. 准备:

创建一个文件夹(redis-sentinel)专门用作 redis 哨兵模型,注意哨兵不做读写,只是单纯的起到一个服务 redis 整个节点的。

一个哨兵同样的像一个 redis 服务一样,需要一个 redis 的安装包。

并且删除 *.rdb 文件,以及 redis.conf,因为 redis 专门提供了一份哨兵的配置文件 sentinel.conf,在 redis 的源码包下。

2. 单哨兵

复制一份 redis 安装包到 redis-sentinel 下。

1. 配置 sentinel.conf

默认情况下哨兵也是一个服务占用端口的,port:26379

设置后台运行:daemonize yes

还需设置日志文件:logfile "当前哨兵安装跟目录下/sentinel.log"

以及哨兵监控的 master 的 ip 地址和端口号:

image-20221216113453838

在下面可以找到一个相同的配置将其注释掉:sentinel monitor mymaster 127.0.0.1 6379 2 这个端口号后面跟的 2,意思是有 2 个及以上的哨兵节点认为 master 宕机了,才重新在从节点中选取 master 节点。

注意:别名最好设置为 mymaster,虽然是自定义但是好像跟其他的参数设置有关联,可能是需要保持别名一致,默认是 mymaster。

2. 启动 sentinel

和 redis 生成的 dump.rdb 文件一样,在哪里运行的在哪生成sentinel.log 文件,所以一般在 redis 的安装根目录下运行

image-20221216172312644

3. 模拟 redis 的 master 宕机效果image-20221216174007198

此时可以通过日志信息看到 master 已经是 7002 端口的 redis 服务了,可以登录 7002 查看信息(info repication)。而如果此时再启动之前被关闭 master,打印信息会发现之前的 master 启动后变成了 slave。

这就是哨兵的作用。

3. 多哨兵

在单哨兵的基础上增加哨兵个数,并且有一个配置需要更改:

sentinel monitor mymaster <masterIP> <6379|masterPort> <2|判定 master 宕机的哨兵个数>

而后面的参数 2,则是判断 master 宕机的哨兵个数,如果有 2 个确定了master 宕机了,就重新选取一个 slave 变成 master 继续服务。而这个数最好是(哨兵个数 - 1) / 2 ,而为了防止出现同票,所以哨兵个数最好是奇数。

效果原理跟单哨兵一样。

标签:04,宕机,Redis,redis,哨兵,学习,master,sentinel,节点
From: https://www.cnblogs.com/cndada/p/16991604.html

相关文章

  • Redis——06 学习
    Redis——06将Redis的基本使用以及三种模式进行了学习和了解。接下来就学习如何在Java中以及SpringBoot框架中使用Redis。JedisRedis在Java上的操作多半是集......
  • 004.查看tomcat版本信息
    查看tomcat版本信息想要查看当前使用的tomcat是哪个版本的,或者想要查看当前tomcat使用的jdk是什么版本的。需要先进入tomcat的文件夹目录,进入bin目录下,执行./version.sh......
  • Markdown学习
     标题#+标题名字+空格+回车#号数量代表几级标题字体helloworld!!两边都加**变成粗体helloworld!!两边都加*变成斜体helloworld!!三个*变成斜体加粗helloworld!!两边......
  • delphi D11编程语言手册 学习笔记(P424-477) 泛型
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf 泛型在C++中叫做类型模板(templateclasses),单从字面上理......
  • pycaret学习之异常检测
    异常检测是识别与大多数数据明显不同的稀有物品、事件或观察结果的任务。通常,异常项目会转化为某种问题,例如银行欺诈、结构缺陷、医疗问题或文本中的错误。存在三大类异常......
  • 高性能Redis服务器注意事项
    摘要昨天简单理了理安装与配置相关的但是很多比较重要的核心性能参数并没有进行学习与探讨就基于昨天理解不深入的地方进行进一步的学习与了解希望能够提高Redis-Serve......
  • Ubuntu 22.04 显示检测到窗口系统采用wayland协议
    解决方法sudovim/etc/gdm3/custom.conf#WaylandEnable=false的注释井号去掉sudoservicegdm3restart参考资料https://zhuanlan.zhihu.com/p/546516064......
  • Redis7.0.7的简单安装与学习
    Redis7.0.7的简单安装与学习摘要2022.12.18世界杯决赛另外是我感染奥密克戎第五天.高烧已经没了,但是嗓子巨疼.睡不着觉,肝胆学习一下最新的Redis7.0.7第一部分......
  • spring的学习
    构造器的注入  这是原始的方法的注入  构造器注入  可以通过两种方法来进行注入 ......
  • ubuntu redis sentinel安装部署
    1.命令行安装sudoaptupdatesudoaptinstallredis-serversudoaptinstallredis-sentinel2.查看安装版本#redis-cli--versionredis-cli5.0.73.配置修改......