【银河麒麟高级服务器操作系统实际案例分享】数据库资源重启现象分析及处理全过程

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛

https://forum.kylinos.cn


了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://document.kylinos.cn


服务器环境以及配置

|----------|----------------------------------|
| 处理器: | Hygon C86 7285 32-core Processor |
| 整机类型/架构: | x86_64 |

【内核版本】

4.19.90-23.6

【OS镜像版本】

银河麒麟高级服务器操作系统 Kylin-Server-V10-SP3-General-Release-2303-x86_64

【HA版本】

银河麒麟高可用 Kylin-HA-10-SP2-Release-Build10-20211124-x86_64-2021-11-25

【第三方软件】

现象描述

集群中pgsql资源重新启动。

现象分析

心跳连接及vip资源monitor超时

分析日志信息,在Nov 11 13:28:22时集群心跳发现无法连接的问题,之后立即恢复:

20秒之后,集群vip1_sims资源monitor超时:

vip1_sims的monitor超时时间设置是20秒,所以在心跳出现问题的时间vip1资源正好执行监控操作并无法按时返回数据,说明此时系统的网络或者负载可能会有问题,导致HA集群无法及时获取数据。

脚本监控函数分析

vip1_sims资源使用的是IPaddr2脚本实现,该脚本在执行monitor的时候,主要判断和执行方式如下:

  1. 判断函数执行所需要的系统命令ip是否存在
  2. 通过uname命令判断当前系统是否为Linux系统
  3. 识别当前配置的ip地址的family和scope,将给定的netmask转换成对应的数字
  4. 判断是否给定的了网卡参数,如果给定,则通过ip命令 ip -o -f inet route list match ip/netmask scope link |grep "dev nic"命令查找并确认网络信息;
  5. 判断是否能够正确找到nic和netmask;
  6. 使用命令ip -o -f inet addr show |grep ip,判断当前ip是否存在;
  7. 通过/usr/libexec/heartbeat/findif命令获取当前环境变量中的nic netmask brdcast等信息;
  8. 通过ip link show nic命令判断是否为infiniband
  9. 判断是否配置了nic参数
  10. 根据配置的ip和netmask,使用ip -o -f inet addr show命令判断ip和nic是否存在;

如果不存在则monitor返回错误信息;如果存在则monitor返回正常。

如果在设置的超时时间内monitor没有任何返回值,则会报超时time out错误。

组资源先后关系

下图是资源配置中组资源中资源先后关系:

HA组资源是有顺序和依赖要求的,即启动的时候从第一个资源到最后一个资源顺序启动,停止的时候从最后一个资源到第一个资源顺序停止。如果有资源出现问题,则此资源后面的资源是无法启动的。所以当vip1_sims资源监控出现问题要求资源restart的时候,该资源后面的所有资源也要求随之重启,所以导致数据库资源pg_sims资源重启。

小结

如上,由于问题时间的vip1_sims资源出现monitor超时故障,导致组内该资源之后的所有资源必须随之尝试重新启动,所以导致数据库资源pg_sims重启。

vip1_sims出现monitor超时故障的原因,由于日志方面无法获取相关内容,所以猜测可能与当时即时的网络条件或者负载有关系,暂时无法确定原因。进一步的分析可以部署更细粒度的监控脚本获取系统及网络情况。

后续建议方案

  1. 通过分析集群心跳配置发现, 心跳网络和业务网络共用。如果业务负载较高,会影响集群心跳,建议分开。同时建议将HA集群的token设置为6000,降低集群心跳的敏感度。
  2. 由于当前的日志无法判断超时原因,建议给需要监控的资源增加trace_ra配置,监控记录脚本执行过程,方便排查问题原因。由于每次执行会产生一个文件, 需要定期清理,防止占用过多的空间。
  3. 如果vip资源和数据库资源不存在强依赖关系,建议可以将vip资源放在组的最后面,以减少其对其他资源的影响。
相关推荐
巨龙之路1 小时前
C语言中的assert
c语言·开发语言
辛一一2 小时前
neo4j图数据库基本概念和向量使用
数据库·neo4j
2301_776681652 小时前
【用「概率思维」重新理解生活】
开发语言·人工智能·自然语言处理
{{uname}}2 小时前
利用WebSocket实现实时通知
网络·spring boot·websocket·网络协议
水银嘻嘻2 小时前
web 自动化之 KDT 关键字驱动详解
运维·自动化
熊大如如2 小时前
Java 反射
java·开发语言
Vone_662 小时前
node.js 邮箱验证服务器搭建
运维·服务器·node.js
巨龙之路2 小时前
什么是时序数据库?
数据库·时序数据库
蔡蓝3 小时前
binlog日志以及MySQL的数据同步
数据库·mysql
ll7788113 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法