suse ha集群多节点异常重启故障案例一则

  关键词

  • suse linux hae 、pacemaker
  • oracle、nfs
  • crm_failcount、timeout、trace

一、问题现象

接故障反馈,某业务几套suse ha集群系统,在某天不同时间点,分别发生了oracle数据库及主机异常切换重启的故障现象,数据库切换重启期间,业务作业受到影响。需排查具体切换原因,及故障风险问题解决。

二、问题分析

好几套集群差不多时间共同出现问题,从经验判断应该是某种共性问题导致。先跟一线了解下相关基础环境,得知,是有个6套suse ha的高可用集群,底层虚拟化平台支撑,业务使用oracle+nfs。梳理每套集群异常现象和时间点,发现有的集群只是重启了数据库,有的集群重启过主机,有的集群啥也没重启,之间是有些区别。

三、处理过程

了解完基本信息后,上每台主机看看日志吧,系统层优先检查/var/log/message。

多台主机日志中均记录了每次故障时HA双机资源超时事件日志:并且伴随有CPU高负
载告警;资源监控拉起失败多次后,节点发生切换SBD事件,主机节点操作系统被强制重启。

部分告警信息如下:

pacemaker-controld[7556]: error: Result of monitor operation for rsc_db_XXX on node1: Timed out---集群监测到资源监控超时

pacemaker-attrd[7554]: notice: Setting last-failure rsc_db_XXX monitor_3000[node1]: 1685340011 -> 1685341059----超时后对资源计数值加1

pacemaker-controld[7556]:notice: Hig CPU load detected: 147.410004---集群伴随着有CPU负载异常增高的情况

sbd[7325]:emerg: do_exit: Rebooting system: reboot---最后切换失败的集群触发了sbd强制重启操作

分析到此,不难看出故障跟集群自身有些关联,都是有同类资源监控超时触发后续一系列问题现象,查看数据库双机资源参数配置情况,资源的定义如下,超时时间为180秒,每隔30秒探测一次,on-failed的动作为自动重启

primitive rsc_db_XXX  oracle \

        params sid=XXX \

        op monitor interval=30 on-fail=restart timeout=180 \

双机日志中可以看到在3分钟的时间里monitor监控没有获取到返回值。从HA的角度来看就意味着这个资源异常会尝试拉起资源,在尝试拉起的过程中,如果正常启动那么就会fail-count计数,如果尝试很多次依然失败就会触发切换动作,甚至会触发SBD将节点置于unclean的状态fence掉节点。 

并且在其中一套集群切换此次事件日志中,发现在资源异常的时间节点,作为nfs客户端也有无法连接到NFS 服务器的告警。检查NFS服务端,发现服务端也有异常告警。怀疑此次切换事件与nfs异常有一定关联。

再次核对6套集群架构中nfs的部署情况,得知有5套nfs部署在同一服务端,1套是另外nfs服务端,而出问题的集群均发生在这5套共用nfs集群上,这更加证实了nfs导致异常切换的可能性。

随后对nfs重点监控,发现此后每次集群日志出现异常后,nfs均伴随有相关短暂告警,最后业务在暂时无法调整nfs的情况下,把集群资源监控monitor超时时间从180s调整到300s后,临时解决了由于nfs短暂性异常导致的切换问题。最终根据评估,业务对nfs实施迁移调整,彻底根治这一隐患问题。

四、知识拓展

1、关于suse ha的failcount的机制

crm_failcount 命令可查询指定节点上每个资源的故障计数。此工具还可用于重设置故障计数,同时允许资源在它多次失败的节点上再次运行。
Heartbeat实现了一种复杂的方法来计算资源,并在资源出现故障时强制将其故障转移到另一个节点在当前节点上。资源带有resource_stickness属性,以确定它更喜欢在某个节点上运行的程度。它还携带resource_failure_stickness,该值确定资源应故障转移到另一个节点的阈值。
failcount属性将添加到资源中,并在资源监视失败时增加。故障计数的值乘以resource_failure_stickness的值决定了该资源的故障转移分数。如果此数字超过为此设置的首选项资源,则资源被移动到另一个节点,并且在重置故障计数之前不会在原始节点上再次运行。

生产上配置
rsc_defaults rsc-options: \
        resource-stickiness=100 \
        migration-threshold=3

primitive rsc_db_XXX oracle \
        params sid=XXX \
        op monitor interval=30 on-fail=restart timeout=180 \
        meta priority=1000 target-role=Started


生产上当前配置,资源在出现故障时会自动重启动。如果在当前节点上无法实现此操作,或者此操作在当前节点上失败了 3次,它将尝试故障转移到其他节点。每次资源失败时,其失败计数都会增加。您可以定义资源的故障次数(migration-threshold),在该值之后资源会迁移到新节点。如果群集中存在两个以上的节点,则特定资源故障转移的节点由 High Availability 软件选择。
   
综上failcount只是计数功能,这个计数是会和集群配置里面的migration-threshold值进行比对,如果大于定义的migration-threshold值,会将资源迁移到备机。迁移之前会不断尝试重启资源。

 

 2、监控timeout的机制

生产配置
特定资源的超时
primitive rsc_db_XXX oracle \
        params sid=XXX \
        op monitor interval=30 on-fail=restart timeout=180 \
        meta priority=1000 target-role=Started
全局的超时配置
op_defaults op-options: \
        timeout=600 \
        record-pending=true
Once a resource has a stop failure, the node is supposed to be fenced to recover from the failure. It is taking 10 minutes for the resource to detect and recover from the stop failure.
--一旦资源出现停止故障,就应该对节点进行隔离以从故障中恢复。资源需要10分钟才能检测到停止故障并从中恢复。 

综上,当集群监控资源的role为启动状态的时候,每隔30秒会监测探测一次,
如果您发现系统中包含的资源需要的时间超过了系统允许的执行操作(如启动、停止或监视)的时间,请调查原因,如果预计执行时间过长,则可以增加此值。超时值不是任何类型的延迟,如果操作在超时期完成之前返回,集群也不会等待整个超时期。
资源目前定义是180秒超时,每隔30秒探测一次,当180秒还没有得到返回值时,会将资源置于失败状态。Failcount会增加资源计数一次。
官方手册参考:https://documentation.suse.com/zh-cn/sle-ha/15-SP3/single-html/SLE-HA-administration/#sec-ha-config-basics-monitoring 

3、关于trace资源监控

针对资源无法正常启动的状况,无法排查到原因的,可以打开资源的trace功能,方法如下:

参考 https://www.suse.com/support/kb/doc/?id=000019138
Enable resource tracing:
crm resource trace <resource name> <operation>
              <resource name> - any defined primitive in the cluster
              <operation>  - start, stop, monitor, probe


Disable resource tracing
crm resource untrace <resource name><operation>


Debug trace file location:
/var/lib/heartbeat/trace_ra/<resource>/*timestamp
然后根据trace文件看是否可以定位问题发生的原因。

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

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

相关文章

(亲测可行)关于提高IDEA运行速度的方案

1.作者IDEA软件版本和计算机内存 Ultimate 2022.1.2版IDEA&#xff0c;计算机内存为12GB 2.修改配置以提高IDEA运行速度的误区-调高堆内存 很多文章会教调配置的内存&#xff0c;但大多是让你调高堆内存&#xff0c;比如会让你调高-Xms -Xmx &#xff0c;这两种对应的是最…

Java实现城市桥梁道路管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

LabVIEW在金属铜大气腐蚀预测评价系统中的应用

为了应对电子设备和仪器中金属铜因大气腐蚀带来的挑战&#xff0c;开发一种基于LabVIEW平台的先进预测评价系统。这个系统的设计宗旨是准确预测并评估在不同室内外环境中金属铜的腐蚀状况。我们团队在LabVIEW的强大数据处理和图形化编程支持下&#xff0c;结合实际的大气腐蚀数…

Vue实战:两种方式创建Vue项目

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;安装Vue CLI脚手架1、从Node.js官网下载LTS版本2、安装Node.js到指定目录3、配置Node.js环境变量4、查看node版本5、查看npm版本6、安装Vue Cli脚手架7、查看Vue Cli版本 &#xff08;二&#xff09;命令行方式构建…

Linux 入门命令大全汇总 + Linux 集锦大全 【20240115】

文章目录 Linux 入门命令大全汇总Linux 集锦大全更多信息 Linux 入门命令大全汇总 别有一番风趣的alias 刚刚好合适的 apropos 命令 迷你计算器 bc 可看黄道吉日的 cal 全文可查看&#xff1a; Linux入门命令大全全文 Linux 集锦大全 linux终端中最漂亮的几款字体介绍及…

计算机网络安全教程(第三版)课后简答题答案大全[6-12章]

目录 第 6 章 网络后门与网络隐身 第 7 章 恶意代码分析与防治 第 8 章 操作系统安全基础 第 9 章 密码学与信息加密 第 10 章 防火墙与入侵检测 第 11 章 IP安全与Web安全 第 12 章 网络安全方案设计 链接&#xff1a;计算机网络安全教程(第三版)课后简答题答案大全[1-5…

设计模式 代理模式(静态代理 动态代理) 与 Spring Aop源码分析 具体是如何创建Aop代理的

代理模式 代理模式是一种结构型设计模式&#xff0c;它通过创建一个代理对象来控制对真实对象的访问。这种模式可以用于提供额外的功能操作&#xff0c;或者扩展目标对象的功能。 在代理模式中&#xff0c;代理对象与真实对象实现相同的接口&#xff0c;以便在任何地方都可以使…

系统性学习vue-组件及脚手架

书接上文 Vue组件及脚手架 初始化脚手架说明步骤 分析脚手架结构render函数修改默认配置ref属性props配置mixin 混入/混合定义混合局部混合全局混合 插件scoped样式安装less-loader 浏览器的本地存储 webStoragelocalStroage 本地存储sessionStorage 会话存储 组件自定义事件绑…

【方案】世微AP5127平均电流型LED降压恒流IC 12-50V /6V2.5A双色LED灯

这是一款双色切换的LED灯方案&#xff0c;12-50V 降压恒流,输出&#xff1a;6V 2.5A ​ 这是一款PWM工作模式 , 高效率、 外围简单、内置功率管&#xff0c;适用于 输入的 高 精度降压 LED 恒流驱动芯片。输出大功率可 达 25W&#xff0c;电流 2.5A。 可实现全亮/半亮功能切换…

重新认识Word——页眉页脚

重新认识Word——页眉页脚 节设置页脚第X页&#xff0c;共Y页 奇偶页不同页眉包含章节号清除页眉横线 我们之前已经全面的构建了我们的文章&#xff0c;现在我们来了解一下&#xff0c;我们毕业论文的页眉&#xff08;页面信息&#xff09;页脚&#xff08;页码&#xff09;的设…

遥测终端机选择要点:功能、稳定性与成本的综合考量

在当今的智能化时代&#xff0c;遥测终端机作为数据采集、传输和处理的关键设备&#xff0c;广泛应用于水利、气象、环保等领域。然而&#xff0c;面对市场上琳琅满目的遥测终端机产品&#xff0c;如何选择一款性能优良、稳定性高且成本合理的设备成为摆在用户面前的一大难题。…

Dockerfile的ADD和COPY

文章目录 环境ADD规则校验远程文件checksum添加Git仓库添加私有Git仓库ADD --link COPYCOPY --parent 使用ADD还是COPY&#xff1f;参考 环境 RHEL 9.3Docker Community 24.0.7 ADD ADD 指令把 <src> 的文件、目录、或URL链接的文件复制到 <dest> 。 ADD 有两种…

C++核心编程之类和对象---C++面向对象的三大特性--多态

目录 一、多态 1. 多态的概念 2.多态的分类&#xff1a; 1. 静态多态&#xff1a; 2. 动态多态&#xff1a; 3.静态多态和动态多态的区别&#xff1a; 4.动态多态需要满足的条件&#xff1a; 4.1重写的概念&#xff1a; 4.2动态多态的调用&#xff1a; 二、多态 三、多…

散列函数,哈希表hash table

附上一句话&#xff1a;我知道大家可能曾经了解过这个散列表了&#xff0c;我发现&#xff0c;如果多看几个相关的视频&#xff0c;从不同的表述方式和不同的理解角度来理解这个问题&#xff0c;我会明白的更透彻&#xff0c;也有更多新的收获&#xff0c;尤其是对这个算法的应…

【PostgreSQL】安装和常用命令教程

PostgreSQL window安装教程 window安装PostgreSQL 建表语句&#xff1a; DROP TABLE IF EXISTS student; CREATE TABLE student (id serial NOT NULL,name varchar(100) NOT NULL,sex varchar(5) NOT NULL,PRIMARY KEY (id) );INSERT INTO student (id, name, sex) VALUES (…

无人超市系统的设计与实现:从需求分析到实际应用

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Python超详细基础文件操作(详解版)

一、文件操作 1. 文件打开与关闭 1.1 打开文件 在Python中&#xff0c;你可以使用 open() 函数来打开文件。 以下是一个简单的例子&#xff1a; # 打开文件&#xff08;默认为只读模式&#xff09; file_path example.txt with open(file_path, r) as file:# 执行文件操作…

C语言天花板——指针(进阶2)

好久不见了各位&#xff0c;甚是想念啊&#xff01;&#xff01;&#xff01;&#x1f3b6;&#x1f3b6;&#x1f3b6; 文章接上次的指针(进阶1)(http://t.csdnimg.cn/c39SJ)&#xff0c;我们继续发车咯&#x1f697;&#x1f697;&#x1f697; 五、函数指针 上次我们只是浅…

网卡唯一标识你了解吗?MAC地址详解

本文内容&#xff1a; MAC地址概述 MAC地址组成 单播、组播、广播MAC地址 本地管理和全球管理MAC地址 一、MAC地址概述 MAC地址&#xff08;Media Access Control Address&#xff09;的全称叫做媒体访问控制地址&#xff0c;也称作局域网地址&#xff0c;以太网地址或者物…

爆了,AI表情包制作全攻略揭秘

今天来一篇绝对的干货 在AI如火如荼的今天&#xff0c;各行各业各个领域都有AI的身影&#xff0c;今天给大家一篇AI制作表情包的教程&#xff0c;希望大家都能在AI的浪潮中找到自己的位置 一、制作篇 正常来说需要使用 midjourney&#xff0c;但是目前限制比较多&#xff0c…