内容纲要
概要描述
5.x 的环境上架 sophon 后,由于 metainfo 的 health check 的规则与 Manager 的不 Match ,可能会导致 Manager 的相关日志大量刷报错。本文介绍了一种该问题的解决方法。
详细描述
1、故障现象
Manager的相关日志 /var/log/transwarp-manager/master/transwarp-manager.log 以及 transwarp-manager-healthcheck.log 中频繁抛出如下报错:
ERROR OneForOneStrategy: (Slf4jLogger.scala:66) - null
scala.MatchError: null
at io.transwarp.manager.master.manager.service.health.HealthCheckScheduler$$anonfun$receive$1.applyOrElse(HealthCheckScheduler.scala:64)
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)
at io.transwarp.manager.master.manager.service.health.HealthCheckScheduler.aroundReceive(HealthCheckScheduler.scala:31)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at akka.dispatch.Mailbox.run(Mailbox.scala:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
2、故障原因
出现该问题时的场景均是 TDH 5.x 上架了高版本的 sophon 之后。所以怀疑是 Manager 的健康检查配置和sophon 的版本不 Match,实际解决方案也验证了该猜想。
3、修复方法
- 确认sophon的版本号
docker images | grep sophon
- 修改 Sophon 对应版本的 metainfo.yaml
vim /var/lib/transwarp-manager/master/content/meta/services/SOPHON/<对应版本>/metainfo.yaml
查看healthChecks部分,为以下内容:
在 VITAL_SIGN_CHECK 下添加一行 method: !<K8sPod> {}
,修改后如下图所示:
- 重启 Manager,让修改后的健康检查逻辑生效
/etc/init.d/transwarp-manager restart
重启 Manager 后,再去检查 Manager 相关日志已经没有相关报错信息。