redis集群搭建过程遇到的坑

news/2024/5/20 21:51:38/文章来源:https://blog.csdn.net/qq_37831759/article/details/137340878

在上一篇博文中搭建好了redis集群,但是仍然存在很多问题

上一篇:k8s下搭建redis集群

1、springboot服务连接

集群配置好了,spring服务应该怎么连接呢?单点和集群的连接配置写法是不一样的

单点

spring:redis:host: ${BTC_REDIS_HOST}port: ${BTC_REDIS_PORT}password: ${BTC_REDIS_PASSWORD}timeout: 0database: 2jedis:pool:max-idle: 100max-wait: 30000

集群

spring:redis:password: foobaredcluster:nodes:redis-cluster-0.redis-cluster-service.tool-beta:6379,redis-cluster-1.redis-cluster-service.tool-beta:6379,redis-cluster-2.redis-cluster-service.tool-beta:6379,redis-cluster-3.redis-cluster-service.tool-beta:6379,redis-cluster-4.redis-cluster-service.tool-beta:6379,redis-cluster-5.redis-cluster-service.tool-beta:6379

2、集群节点重建后,spring服务连接异常

集群节点重建,在服务器上观察cluster nodes,发现节点ip已经变化,且集群已经更新了节点ip信息,看上去没啥问题,也能够通过命令行方式读写

但是spring服务疯狂报错,检查配置无问题

jedis报错:could not get a resource from the pool

redisson直接报连接ip超时,奇怪的是redisson里面报错的ip不是任何一个redis节点的ip

进入redis-cluster-0的持久卷,查看node.conf,发现其它节点的ip正确,而标记myself的节点ip是重建前的ip !

经过反复实验,确认了:

redis集群在k8上部署时存在bug,redis某个节点重建时,唯独不会更新它自己的node.conf的ip地址!

查阅github的issue,找到了答案:

Redis cluster returns IP address of master which not exist #4289

在这里插入图片描述
这个issue中提到,在redis的启动参数中显式指定ip地址可以解决这个问题

在这里插入图片描述
尝试按照这个配置,重新建立redis集群,再查看node.conf文件,发现能够正确更新自己的ip了,spring服务也能够正常连接了。

3、spring服务只能写入,无法读(真正问题:redis集群主从节点复制异常)

随后出现的问题是,从redis中读取的内容均为null

在命令行里操作依然完全正常,且发现redis中已经有服务写入的信息

使用远程调试尝试定位,在docker的启动参数中添加

          env:- name: JAVA_TOOL_OPTIONSvalue: >--agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

注:这是jdk8的写法,jdk9以上需要使用另一种写法

然后开通对应service的5005端口,映射到宿主机

调试结果:redisTemplate能够写入,但无法获取任何key!

我直接问号,这是什么毛病

看看redis节点有没有什么信息,突然发现节点在不停的报错

MASTER aborted replication with an error: NOAUTH Authentication required

似乎是主从节点的复制过程中,认证出现了问题

查阅资料确认:主从节点在设置了密码的情况下,需要配置masterauth

修改完成后重建集群,这次服务可以获取key了!

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水牛社软件:让网络小白少花冤枉钱,赚取第一桶金

大家好,我是木薯,水牛社赚钱软件的设计者,很感谢你的关注。我掘金互联网行业21年,操作了过去十余年来网上几乎所有的主流赚钱项目。我相信这个软件可以给你带来至少百倍的回报。 今年是软件上线第十个年头,去年底刚刚…

Tesseract 安装与配置及验证码识别

Tesseract 安装与配置 Tesseract 的使用,需要环境的支持,以实现简单的转换和训练。 1.环境 python版本:3.8.3 (python2.7或3以上) 操作系统:windows系统 2.Python安装 详见:Miniconda的…

创建型模式--4.抽象工厂模式【弗兰奇一家】

1. 奔向大海 在海贼世界中,位于水之都的弗兰奇一家是由铁人弗兰奇所领导的以拆船为职业的家族,当然了他们的逆向工程做的也很好,会拆船必然会造船。船是海贼们出海所必备的海上交通工具,它由很多的零件组成,从宏观上看…

Leetcode算法训练日记 | day19

一、最大二叉树 1.题目 Leetcode:第 654 题 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的…

每日Bug汇总--Day01

Bug汇总—Day01 一、项目运行出错 1、问题:运行苍穹外卖后端项目sky-take-out时,maven在install时报错 Maven resources compiler: Failed to copy D:\sky-take-out\sky-server\.....报错原因: 文件或者上级文件夹设置了只读用户没有修改…

【论文精读】| Geometric Multimodal Contrastive Representation Learning

本文并非逐句翻译,添加个人理解与疑惑,如有需要,请自行阅读原文。 Geometric Multimodal Contrastive Representation Learning 几何多模态对比表征学习 发表在 2022 ICML 数据集: 代码地址:GitHub - miguelsvasco/gmc…

ClickHouse 介绍

前言 一个通用系统意味着更广泛的适用性,但通用的另一种解释是平庸,因为它无法在所有场景内都做到极致。 ClickHouse 在没有像三驾马车这样的指导性论文的背景下,通过针对特定场景的极致优化,获得闪电般的查询性能。 ClickHous…

MySQL复制拓扑1

文章目录 主要内容一.安装MySQL服务器1.MySQL 安装程序和其它文件保存在下发的 mysql8-files.iso 镜像文件中,可以使用虚拟光驱来提取到 Linux 文件系统。代码如下(示例): 2.将 MySQL8.0 程序解压到 /opt 目录,再创建到 MySQL 默认…

基于Java+SpringBoot+Vue文学名著分享系统(源码+文档+部署+讲解)

一.系统概述 随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、高效的文学名著分享系统。当前的信息管理…

Spring Boot 切面的一种的测试方法,java中级开发面试

void afterReturnName() { Assertions.assertEquals(studentController.getNameById(123L).getName(), "测试姓名Yz");} } 但往往切面中的逻辑并非这么简单,在实际的测试中其实我们也完成没有必要关心在切面中到底发生了什么(发生了什么应该在…

FreeRTOS任务切换学习

FreeRTOS任务切换学习 所谓任务切换,就是CPU寄存器的切换。假设当由任务A切换到任务B时,主要分为两步: 1:需暂停任务A的执行,并将此时任务A的寄存器保存到任务堆栈,这个过程叫做保存现场; 2&am…

【Redis系列】Redis安装与使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

python 读取txt文件,文本拼接

# 定义你想要拼接的变量 variable_to_concatenate1 """ ,拼接文本,文本一, """ variable_to_concatenate2 """ ,文本二,拼接文本 """# 打开原始文件,并读取每一行 with open(example.txt, r, encodi…

HarmonyOS 开发-图片九宫格封装案例

介绍 本示例介绍使用(Flex) 组件实现图片在不同个数情况下的布局效果(默认布局和自定义布局)。该场景多用于社交类应用。 效果图预览 使用说明 默认布局情况下,传入图片资源imageSource(类型为Resource[]),图片会按照个数进行相…

在Vue2里面加载AntvL7

1、代码块 <template><div ref"mapContainer" style"width: 800vh; height: 100vh; align-items: center; justify-content: center"></div> </template><script> export default {mounted() {this.initMap();},methods: {…

光伏电站运维管理平台功能分析

光伏电站的建设发展&#xff0c;不仅可以满足人们日益增长的用电需求&#xff0c;同时对于减少能源资源消耗也有着十分重要的作用。但是光伏电站因为区域跨度大&#xff0c;分布广泛等原因在建设发展中导致了人员管理困难、运维工作落实不到等问题&#xff0c;直接影响光伏电站…

SQL注入原理与信息获取及常规攻击思路靶场实现

SQL注入原理与信息获取及常规攻击思路靶场实现 很早的时候就写了&#xff0c;权当备份吧 Web程序三层架构 表示层 &#xff1a;与用户交互的界面 , 用于接收用户输入和显示处理后用户需要的数据 业务逻辑层 &#xff1a;表示层和数据库访问层之间的桥梁 , 实现业务逻辑 ,验证、…

pycharm一直打不开

一直处在下面的页面&#xff0c;没有反应 第一种方案&#xff1a; 以管理员身份运行 cmd.exe&#xff1b;在打开的cmd窗口中&#xff0c;输入 netsh winsock reset &#xff0c;按回车键&#xff1b;重启电脑&#xff1b;重启后&#xff0c;双击pycharm图标就能打开了&#xf…

F - 创新型机器猫 高性能战斗机器人(遇到过的题,做个笔记)

我的代码&#xff1a; #include <iostream> #include <vector> using namespace std; int main() {string str;cin >> str;int dxy[][2] { {0,1},{1,0},{0,-1},{-1,0} }; //设置偏移量&#xff0c;按照右转顺序&#xff1a;北->东->南->西int now…

西门子PLC(S7-200 SMART)学习笔记1:初识PLC可编程逻辑器件

今日开始我的西门子PLC学习之路&#xff0c;学习的型号以S7-200 SMART为主 主要认识一下PLC是什么、型号怎么看、 通信相关、编程软件、构造及工作原理 目录 西门子官方PLC手册获取&#xff1a; 1、PLC可编程逻辑器件的基本认识&#xff1a; PLC的结构及各部分的作用&#xff…