zhoudaiyu

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

  •  
  •   zhoudaiyu · Jul 20, 2020 · 3356 views
    This topic created in 2302 days ago, the information mentioned may be changed or developed.
    用 readinessProbe 去探活 tomcat 端口不是很靠谱,有时候应用启动异常了,端口一样能启动起来;而且现在应用没有暴露出健康检查的接口。现在的想法是用 readinessProbe 去 tail catalina.log ,检查日志里有特定没有异常,如果有,就证明 Tomcat 启动异常。有没有更优雅、靠谱的判断 tomcat 是否正常启动的方法呢?
    11 replies  •  2020-07-28 15:45:04 +08:00
    ypcs03
    ypcs03
    Jul 20, 2020
    1
    exec 一点儿都不优雅,优雅一点儿就是在你的应用里面加 healthcheck 吧
    julyclyde
    julyclyde
    Jul 20, 2020
    2
    “有时候应用启动异常了,端口一样能启动起来”那是应用程序自己的问题…
    lhx2008
    lhx2008
    Jul 20, 2020 via Android
    3
    应用没有就加一个。。
    limuyan44
    limuyan44
    Jul 20, 2020
    4
    有没有想过你应用程序报错关我 tomcat 什么事。
    zhoudaiyu
    zhoudaiyu
    OP
    Jul 20, 2020
    5
    @julyclyde #2
    @limuyan44 #4 是应用的问题,那这时候就应该拦截下来,不让他发布才对啊

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

    非 java 应用(非常简单)的就默认为不出啥问题
    mogging
    mogging
    Jul 28, 2020
    11
    你需要一个探针页面
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   506 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 21:38 · PVG 05:38 · LAX 13:38 · JFK 16:38
    ♥ Do have faith in what you're doing.