redis cluster配置之read-mode

news2025/7/17 14:55:00

背景

生产部署了redis集群,三台机器(三主三从,主从不在同一台机器上),redission连接使用。当有一个master节点挂掉时,redis整个集群不可用。

解决过程

  1. 运维登上机器上,执行cluster info发现集群OK状态

  1. 执行cluster nodes发现挂掉的master节点fail状态,对应的slave已经变成了master节点(fail over成功)

  1. 手动连接上集群,redis-cli -h -c,指定读写操作正常

  1. 1、2、3操作说明,redis集群是可用且正常故障转移了

  1. 此时,说明应用程序只能从slave节点读取数据,不能正常从master读取数据

  1. 查看apollo上redis cluster的配置发现并未配置相关的参数

  1. 说明应用了默认的redis集群读数据配置

  1. 翻阅redis cluster配置,发现redis.cluster.read-mode有关

  1. read-mode有三个选项

追踪redission的源码发现,默认情况下使用的SLAVE,也就是仅从从节点读取数据,当从节点挂掉后,连接用完后,会导致集群整体不可用状态,非常危险。建议改成MASTER_SLAVE,工作原理可以从redission的源码中看到。

org.redisson.connection.MasterSlaveEntry#connectionReadOp

如果配置的是MASTER那么会去获取写连接,否则会通过负载均衡算法获取从节点的连接,继续追踪从节点获取连接的代码

public boolean isMasterForRead() {

return this.getFreezeReason() == ClientConnectionsEntry.FreezeReason.SYSTEM && this.connectionManager.getConfig().getReadMode() == ReadMode.MASTER_SLAVE && this.getNodeType() == NodeType.MASTER;

}

如果read-mode配置的是MASTER-SLAVE,那么允许应用程序在slave节点异常的情况下,从master中读取数据。

  1. 运维将redis.cluster.read-mode指定为MASTER-SLAVE后,程序运行正常,redis集群正常故障转移,且可以从master中读取数据。

复盘

  1. redis集群配置时一定要注意配置的默认选项,否则会造成重大生产事故

  1. 开发也要引起重视,不能依赖运维人员,这样在出现问题时,才能独立应对,从容有序

  1. 合理推测很重要,依据现场情形,做出合理推断

  1. redis cluster模式下,三主也是可以正常运行的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA开发(数据类型String和HasMap的实现原理)

在JAVA开发中,使用最多的数据类型恐怕是String 和 HasMap两种数据类型。在开发的过程中我们每天都使用的不亦乐乎。但是相信很多人都没有考虑过String数据类型的实现原理或者说是在数据结构中的存储原理,还有一个就是是HashMap,也很少有人去了…

SNAP中根据入射角和相干图使用波段计算计算垂直形变--以门源地震为例

SNAP计算垂直形变0 写在前面1 具体步骤1.1 准备数据1.2 在SNAP中打开波段运算Band Maths1.3 之前计算的水平位移displacement如下图数据的其他处理请参考博文在SNAP中用sentinel-1数据做InSAR测量,以门源地震为例 0 写在前面 如果假设没有平行于传感器视线的水平运…

案例27-单表从9个更新语句调整为2个

目录 一:背景介绍 二:思路&方案 三:过程 1.项目结构 2.准备一个普通的maven项目,部署好mysql数据库 3.在项目中引入pom依赖 5.编写MyBitis配置文件 6.编写Mysql配置类 7.编写通用Update语句 8.项目启动类 四:总…

用GRU实现情感分析:不需要长记忆,也能看懂你的心情

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

JavaScript_Object.keys() Object.values()

目录 一、Object.keys() 二、Object.values() 一、Object.keys() Object.keys( ) 的 用法 : 作用 &#xff1a;遍历对象 { } 返回结果&#xff1a;返回 对象中 每一项 的 key 值 返回值 : 是一个 *** [ 数 组 ] *** 例子 ( 1 ) : <script>// 1. 定义一个对象var obj …

【硬件】P沟道和N沟道MOS管开关电路设计

场效应管做的开关电路一般分为两种&#xff0c;一种是N沟道&#xff0c;另一种是P沟道&#xff0c;如果电路设计中要应用到高端驱动的话&#xff0c;可以采用PMOS来导通。P沟道MOS管开关电路PMOS的特性&#xff0c;Vgs小于一定的值就会导通&#xff0c;当Vgs<0,即Vs>Vg,管…

扬帆优配|高送转+高分红+高增长潜力股揭秘

高送转且高分红的高增加股票&#xff0c;有望跑赢大盘。 此前七连阴的泽宇智能&#xff0c;今日早盘大幅高开。到上午收盘&#xff0c;该股飙涨9.3%&#xff0c;位居涨幅榜前列。音讯面上&#xff0c;3月7日晚间&#xff0c;泽宇智能发表2022年年报&#xff0c;年报显现&#x…

深入学习Spring——笔记

实习之余多学点&#xff0c;希望一个月之内能够完成这个笔记 Spring笔记3-8BeanFactory && ApplicationContextBeanFactoryApplicationContext3-8 BeanFactory && ApplicationContext BeanFactory 首先&#xff0c;从SpringBoot的主启动类来看 SpringBootA…

JMU软件20 UML复习资料

碎碎念 &#xff08;印象中复习资料漏了的知识点&#xff1a;P175&#xff1a;通信图&#xff0c;P168&#xff1a;UML顺序图的图框&#xff0c;都考完了也懒得再整理了&#xff0c;自己翻书看吧&#xff09; 昂&#xff0c;把下面这些都学会大概率不会不及格&#xff0c;要求…

蓝库云|数字化车间建设,是加速制造业数智化转型的关键因素

什么是制造业的数字化车间&#xff0c;对于传统制造业来说这也许是个新词汇&#xff0c;但在企业数字化转型中&#xff0c;数字化车间的存在至关重要&#xff0c;其意思就是将制造业车间里所有的工作流程数字化&#xff0c;实现设备、生产流程、工人等各环节之间的数字化管理与…

SQL注入——时间盲注

目录 一&#xff0c;时间盲注概述 二&#xff0c;关键函数 sleep() if() 三&#xff0c;注入原理 四&#xff0c;实例 一&#xff0c;时间盲注概述 web页面只返回一个正常页面。利用页面响应时间不同&#xff0c;逐个猜解数据。但是前提是数据库会执行命令代码&#xff…

dashboard疏散主机提示报错:无法疏散主机...处理方法、openstack虚拟机状态卡在重启处理方法、openstack在数据库修改虚拟机状态的方法

文章目录dashboard疏散主机提示报错&#xff1a;无法疏散主机...处理方法报错说明【状态卡在reboot状态】解决方法【登录nova数据库修改虚拟机信息】首先获取nova数据库的密码登录nova数据库并做修改验证信息是否修改成功再次迁移并验证报错说明【虚拟机状态error也会导致疏散失…

二叉树的遍历(前序、中序、后序)| C语言

目录 0.写在前面 1.前序遍历 步骤详解 代码实现 2.中序遍历 步骤详解 代码实现 3.后序遍历 步骤详解 代码实现 0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种特定的规则&#xff0c;对二叉树的每一个节点进行访问&#xff0c;…

QML动画(Animator)

在Qt5.2之后&#xff0c;引入Animator动画元素。这种方式可以直接所用于Qt Quick的场景图形系统&#xff0c;这使得基于Animator元素的动画及时在ui界面线程阻塞的情况下仍然能通过图形系统的渲染线程来工作&#xff0c;比传统的基于对象和属性的Animation元素能带来更好的用户…

CAD如何导入其他图纸的打印设置?CAD打印设置导入步骤

CAD打印设置怎么导入&#xff1f;这个问题相信很多设计师小伙伴在CAD图纸打印过程中都曾想到过&#xff0c;但不知道CAD如何导入其他图纸的打印设置&#xff0c;今天小编就以浩辰CAD软件为例来给大家分享一下CAD打印设置导入的具体操作步骤&#xff0c;一起来看看吧&#xff01…

把第三方sdk放在thinkphp的那个目录

ThinkPHP5.1 如何自动加载第三方SDK&#xff08;非composer包 &#xff09;注意&#xff1a;这里只是针对于非Composer 安装包的自动加载的实现&#xff0c;能用composer安装的自动跳过。由于ThinkPHP5.1 严格遵循PSR-4规范&#xff0c;不再建议手动导入类库文件&#xff0c;所…

应用实战|微信小程序开发示例--多人聊天互动空间

“超能力”数据库&#xff5e;拿来即用&#xff0c;应用开发人员再也不用为撰写API而发愁。MemFire Cloud 为开发者提供了简单易用的云数据库&#xff08;表编辑器、自动生成API、SQL编辑器、备份恢复、托管运维&#xff09;&#xff0c;很大地降低开发者的使用门槛。 本示例是…

[Web]——限流

限流概念&#xff1a;什么是限流呢&#xff1f;限流是限制到达系统的并发请求数量&#xff0c;保证系统能够正常响应部分用户请求&#xff0c;而对于超过限制的流量&#xff0c;则通过拒绝服务的方式保证整体系统的可用性。限流的分类:根据作用范围可以分为单机限流和分布式限流…

Delphi 实现HTML邮件发送

在我们的邮箱里&#xff0c;经常收到HTML格式的邮件。每注册一个网站的时候&#xff0c;总会收到一些他们发来的邮件&#xff0c;打开一后发现和一个网页一样&#xff0c;有图片、链接、文字&#xff0c;甚至有的还有声音和视频和交互。那我们想知道我们怎么才可以给朋友发送这…

【FLY】Java知识点总结

目录认识Java概念图名词解释历史版本基础知识编程规范关键字数据类型运算符数组Stringequals与流程控制引用数据结构常用数据结构HashMapLinkedHashMapWeakHashMapIdentityHashMapEnumMapTreeMapCopyOnWriteArrayList面向对象类反射注解IO异常线程EffectiveJava8JVM运行时数据区…