如何优雅地判断部署在 k8s 集群中的 Tomcat 正常启动?

2020-07-20 11:33:23 +08:00
 zhoudaiyu
用 readinessProbe 去探活 tomcat 端口不是很靠谱,有时候应用启动异常了,端口一样能启动起来;而且现在应用没有暴露出健康检查的接口。现在的想法是用 readinessProbe 去 tail catalina.log ,检查日志里有特定没有异常,如果有,就证明 Tomcat 启动异常。有没有更优雅、靠谱的判断 tomcat 是否正常启动的方法呢?
2361 次点击
所在节点    Kubernetes
11 条回复
ypcs03
2020-07-20 11:46:06 +08:00
exec 一点儿都不优雅,优雅一点儿就是在你的应用里面加 healthcheck 吧
julyclyde
2020-07-20 11:57:48 +08:00
“有时候应用启动异常了,端口一样能启动起来”那是应用程序自己的问题…
lhx2008
2020-07-20 11:58:22 +08:00
应用没有就加一个。。
limuyan44
2020-07-20 12:25:45 +08:00
有没有想过你应用程序报错关我 tomcat 什么事。
zhoudaiyu
2020-07-20 12:50:00 +08:00
@julyclyde #2
@limuyan44 #4 是应用的问题,那这时候就应该拦截下来,不让他发布才对啊

@lhx2008 #3
@ypcs03 #1 设计到很多很多工程,改动起来比较麻烦
rrfeng
2020-07-20 12:52:50 +08:00
你写个 http probe 探测一个已知的无关紧要的 get 接口判断呗,不一定非得专门的 healthcheck
lazyfighter
2020-07-20 13:47:29 +08:00
应用加 healthCheck
julyclyde
2020-07-20 14:20:57 +08:00
你这是运行时错误,发布的时候咋拦?
szkoda
2020-07-21 10:44:27 +08:00
1. 你这是程序运行报错,就算发布拦截了,运行一段时间又挂了呢,不还得有 healthcheck,发布系统不应该关心程序后续运行逻辑,java 还好,你跑一个 python 应用试试,全公司的业务都在发布,你不得定个应用接入标准?
2.最优雅的方式就是应用改代码,增加 hc 探测,这是 k8s 的原则,也只有应用开发人员知道什么才叫"真的运行正常",
3.不优雅的方式也有,你弄个 sidecar 自己探测日志,探测一个无关紧要的接口( http ),或者 cli 访问都可以,grpc 的服务也是这么搞的,不过这些不满足你要求的"优雅",把这两个字去掉,方法就多了,,(狗头
thinkmore
2020-07-23 09:35:06 +08:00
我们的 springboot 应用,一般 healthCheck 会访问 acutor 的 health 接口。

非 java 应用(非常简单)的就默认为不出啥问题
mogging
2020-07-28 15:45:04 +08:00
你需要一个探针页面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691511

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX