【Redis】记录一次K8S存储故障导致Redis集群拓扑异常的修复过程

文章目录

  • 背景
  • 处理新节点
  • 遗忘旧节点

背景

集群部署在K8S环境内,存储使用的localpv,有一台K8S主机节点磁盘故障,导致在该节点上的redis节点均出现故障,主要表现为持久化失败、集群拓扑异常,持久化失败可以临时关闭RDB和AOF持久化、等挂载好新的硬盘后,重新创建pvc进行恢复,经过观察,这些redis节点恢复后,operator并不能完成集群自愈,需要手动干预,主要表现为:集群拓扑异常:故障的节点没有被清理掉、新的节点没有以正常的角色加入到集群中。

集群是一个3主3从的规模,3个master,每个master一个slave,这个集群中故障的Pod,在创建pvc后,进行过重启操作,导致现在的拓扑,有4个正常的master,一个无效的节点,原因是恢复的节点没有以slave的角色加入到集群,且集群没有forget掉之前故障的节点

处理新节点

从新的节点上看,没有无效的节点

处理新节点比较简单,只需要对比下哪个master没有slave,将该节点设置为这个master的从节点即可:

执行完命令之后,其他的节点上能看到该节点的角色变了

监控中的拓扑也正常了,现在这种情况,集群是可以正常工作的,但是强迫症,必须要清除掉这个无效的节点。

遗忘旧节点

如果逐台执行cluster forget来遗忘这个无效的节点,由于集群之间会进行通信,同步拓扑信息,如果不是很快同事执行该操作,最后是无法保证成功的,所以写了个脚本,来模拟同时执行:

bath-forget-nodes.sh

#!/bin/bashset -e# 查出所有正常的节点(排除状态为fail的),需要在这些节点上执行forget操作 
nodes_addrs=$(redis-cli -a $3 -h $1 -p $2 cluster nodes|grep -v fail| awk '{print $2}')
echo " -------------normal cluster nodes -----------------"
echo " $nodes_addrs "  
echo " --------------------------------------------"  
for addr in ${nodes_addrs[@]}; dohost=${addr%:*}port=${addr#*:}# 查出所有需要forget的节点del_nodeids=$(redis-cli -a $3 -h $host -p $port cluster nodes|grep -E 'handshake|fail'| awk '{print $1}')for nodeid in ${del_nodeids[@]}; doecho " -------------delete nodes info -----------------------"  echo "delete from host: $host $port, delete node id: $nodeid "echo " ------------------------------------------------------"   # 执行forget            redis-cli -a $3 -h $host -p $port cluster forget $nodeiddone
done

一共是需要3个参数,IP、port、密码,最好先把执行forget的一行注释掉,看看输出是否符合预期。

执行完之后,每个节点的拓扑都恢复正常了:

大公告成,虽然是比较简单的操作,还是记录一下,好记性不如烂笔头。

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

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

相关文章

冲鸭~~!10分钟部署清华ChatGLM2-6B,效果测试:不愧是中文榜单第一

来源: AINLPer公众号(每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2023-9-25 引言 今年6月份清华大学发布了ChatGLM2,相比前一版本推理速度提升42%。最近,终于有时间部署测试看看了,部署…

次时代摸鱼骚操作:人在办公室轻松观看家里电脑上的4k电影(移动端公网访问本地群辉存储视频文件)

如何使用iPhone15在办公室观看家里电脑上的4k电影? 文章目录 如何使用iPhone15在办公室观看家里电脑上的4k电影?1.使用环境要求:2.下载群晖videostation:3.公网访问本地群晖videostation中的电影:4.公网条件下使用电脑…

适用于初学者,毕业设计的5个c语言项目,代码已开源

C语言项目集 项目介绍 该项目适用于初学者学习c语言,也适用于高校学生课程设计,毕业设计参考。 项目并不能满足所有人的需求,可进行项目指导,定制开发。 开源地址 c语言项目代码地址 项目列表 该项目包含如下5个管理系统&am…

在线安装qt5.15之后任意版本

下载qt现在安装包: window安装包链接 进入cmd,用命令行打开安装包,并指定组件下载地址(这个是关键,之前用的是腾讯镜像,出现了版本灰色无法选中问题) .\qt-unified-windows-x64-4.6.1-online…

git的基本操作

git的基本操作 一般思路: 新建个人分支加粗样式–克隆远程仓库代码—编辑本地分支代码–合入master分支(先切换到master分支)–master分支代码push到远程仓库 1、安装好git之后必须设置用户和邮箱信息之后才能提交代码到缓存区、本地库 git …

[C++随笔录] list使用

list使用 构造函数insert && 迭代器push_back && pop_back && push_front && pop_fronterasesort && find && reverse list的底层结构就是 带头双向循环链表 构造函数 // 默认构造 list<int> lt; cout << "l…

SolidJs节点级响应性

前言 随着组件化、响应式、虚拟DOM等技术思想引领着前端开发的潮流&#xff0c;相关的技术框架大行其道&#xff0c;就以目前主流的Vue、React框架来说&#xff0c;它们都基于组件化、响应式、虚拟DOM等技术思想的实现&#xff0c;但是具有不同开发使用方式以及实现原理&#…

基于win32实现TB登陆滑动验证

这里写目录标题 滑动验证触发条件&#xff1a;失败条件&#xff1a;解决方法:清除cooKie 滑动验证方式一&#xff1a;win32 api获取窗口句柄&#xff0c;选择固定位置 成功率高方式二&#xff1a; 原自动化滑动&#xff0c;成功率中 案例 先谈理论&#xff0c;淘宝 taobao.com …

ChatGPT详细搭建教程+支持AI绘画

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…

人才测评系统在企业招聘中的应用

人才测评作为招聘工具&#xff0c;已经频繁应用在各大企业中&#xff0c;如今的社会中&#xff0c;人才对于企业而言&#xff0c;可谓是创造产值的基础。换句话说&#xff0c;”企业得人才者、才能得天下”&#xff0c;有了人才之后&#xff0c;企业在行业中才有竞争力。 目前…

ES修改字段的数据类型

-- mysql修改字段数据类型语句 ALTER TABLE 表名 MODIFY COLUMN 列名 修改的字段类型;-- hive 修改字段数据类型语句 ALTER TABLE 表名 CHANGE COLUMN 列名 修改的字段类型;--es修改字段数据类型语句无法通过一个语句进行修改。思路&#xff1a; 1、对修改字段重新建修改类型的…

【Redis】Redis做为缓存,MySQL如何与Redis保持数据一致

Redis的作用 一般情况下Redis是用来实现应用和数据库之间的一个读操作的缓存层&#xff0c;主要目的是减少数据库的io&#xff0c;还可以提升数据库io性能 方法一&#xff1a; 先更新MySQL数据库&#xff0c;再删除缓存&#xff0c;再从数据库查询到的最新的数据同步到redis…

Unity实现角色受到攻击后屏幕抖动的效果

文章目录 实现效果摄像机抖动脚本 玩家受伤其他文章 实现效果 首先看一下实现效果。 摄像机 我们要使用屏幕抖动&#xff0c;使用的是CinemachineVirtualCamera这个组件&#xff0c;这个组件需要在包管理器中进行导入。 导入这个组件之后&#xff0c;创建一个Chinemachine-…

CH2--x86系统架构概览

2.1 OVERVIEW OF THE SYSTEM-LEVEL ARCHITECTURE 图中的实线箭头表示线性地址&#xff0c;虚线表示段选择器&#xff0c;虚线箭头表示物理地址 2.1.1 Global and Local Descriptor Tables 全局描述符表 (GDT) GDT是一个全局的段描述符表&#xff0c;它存储在系统内存中的一个固…

MYSQL逻辑架构

文章目录 MYSQL逻辑架构1. 逻辑架构剖析1.1.1 MYSQL的逻辑架构---三层1.1.2 连接层---第一层1.1.3 服务层---第二层1.1.4 引擎层---第三层 2 服务器处理客户端请求---三部分3. SQL执行流程3.0 SQL语法顺序3.1 MYSQL中的SQL执行流程3.1.1 查询缓存3.1.2. 解析器3.1.3. 优化器3.1…

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录 摘要一、汽车零部件测试的重要性&#xff1f;二、虹科的测试仿真工具如何在汽车零部件测试展露头角&#xff1f;三、应用场景**应用场景1&#xff1a;方向盘开关的功能测试****应用场景2&#xff1a;各类型电机的控制测试****应用场景3&#xff1a;RGB氛围灯的功能测试…

详解MySQL索引+面试题

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、索引概述…

芯片SoC设计你了解吗?

数字IC设计根据岗位性质一般包含SOC设计&#xff0c;前端设计&#xff0c;ASIC设计&#xff0c;逻辑设计&#xff0c;IP设计&#xff0c;CPU设计等。 有人说&#xff1a;做IP设计就是翻译官&#xff0c;做SOC设计就是连连看。 SoC设计是做什么的&#xff1f;与IP设计有什么不同…

docker系列(7) - Dockerfile

文章目录 7. Dockerfile7.1 Dockerfile介绍7.2 指令规则7.3 指令说明7.3.1 RUN命令的两种格式7.3.1 CMD命令覆盖问题7.3.2 ENTRYPOINT命令使用7.3.3 ENV的使用 7.4 构建tomcat Dockerfile案例7.4.1 准备原始文件7.4.2 编写Dockerfile7.4.3 构建镜像7.4.4 验证镜像 7.5 构建jdk基…

【深度学习】ONNX模型多线程快速部署【基础】

【深度学习】ONNX模型CPU多线程快速部署【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】ONNX模型CPU多线程快速部署【基础】前言搭建打包环境python多线程并发简单教程基本教程ONNX模型多线程并发 打包成可执行文件总结 前…