TECS OpenStack资源池时间同步失败的故障分析

描述

故障现象

某运营商TECS OpenStack资源池,在当前告警中显示“时钟同步失败”,以10分钟整数倍为间隔上报“时间同步失败”告警,持续时间30秒-1分钟不等。

查看告警详情为同一台控制节点虚拟机,如图1所示。

虚拟机

故障分析

分析产生该告警的原因:

时间同步失败告警可能是由于外部时钟异常导致,需要检查。

相关告警上报周期性比较强,可能是由某些定时任务触发。

具体分析过程如下:

使用chronyc sources -v命令,检查现场时钟源,未发现异常,如下图所示。

虚拟机

寻找一台正常的控制节点虚机,使用chronyc sources -v命令,检查对比,未发现异常,如下图所示。

虚拟机

执行ping命令,检测时钟源,未发现丢包。

外部时钟正常,时钟同步正常,结合告警出现周期性比较强、告警持续时间较短的特点,分析可能是因为定时任务触发了控制节点虚机的时间修改。

初步推测是宿主机开启了qga服务,控制节点虚机会每10分钟向宿主机同步一次时间。

执行virsh qemu-agent-command --pretty controllervm '{"execute":"guest-get -reverse-command-status"}'|grep minute -A 1 |grep enabled命令,查看现场三个控制节点虚机输出结果,如下图所示。

虚拟机

由上图可见,只有异常节点输出结果是“enabled”: true,说明该节点开启了qga。

执行virsh dumpxml 1|grep -A5 "channel type"命令,发现同步周期为10分钟,与告警周期一致。因此判断该问题是由于虚机除了与外部时钟源同步外,还定时向宿主机同步时间,导致告警上报,如下图所示。

虚拟机

故障处理

临时解决方案:通过在宿主机执行virsh qemu-agent-command --pretty controllervm '{"execute":"guest-set-reverse-command-status", "arguments": {"command": "host-get-time", "enabled":false}}' 命令,临时关闭qga服务。但是在重启虚机中qga服务会恢复。

正式解决方案:执行virsh dumpxml controllervm > controllervm.xml命令,修改xml文件中qga的配置,将interval的值改为never,或者改成和其他节点一样,关闭虚机。执行virsh create controllervm.xml命令,重新创建虚机。

相关操作命令:

a. 判断是否需要qga服务,如果不需要,可以执行如下命令,在不关闭虚机的前提下,在虚机中关闭qga服务。

systemctl stop qga.service,systemctl disalbe qga.service

b. 执行如下命令,确认节点是否有配置qga服务。

virsh dumpxml domain |grep qemu.guest_agent

总结:时钟作为业务运行和命令的时间戳,在运维中稳定至关重要,该类问题需要第一时间重点分析处理,避免时钟跳变导致集群和业务异常。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分