【发布时间】:2019-06-13 12:46:49
【问题描述】:
我正在构建一些 Spring Boot 微服务,这些微服务将部署在 Kubernetes(特别是 AKS)集群中。我计划将 liveness & readiness 检查的 probePaths 设置为都指向执行器健康端点,但想知道这是否不是最佳选择。我最初的想法是检查路径会很有用(至少对于准备就绪),因此在 Spring 启动并能够处理请求之前不会将流量发送到它。由于这些服务使用数据库连接,如果无法建立连接,执行器健康指示器将报告状态为关闭,这不是一个好主意吗?
有了活性,我认为它可能会开始一遍又一遍地回收 pod/容器,即使(在数据库关闭的情况下)它可能无法解决任何问题。
准备就绪后,我认为如果数据库关闭,它可能会导致可用应用程序池为 0。如果数据库关闭,应用程序本身很可能不会很有用,但我想部分可能仍然有效。
对于这类事情有推荐的最佳做法吗?
【问题讨论】:
-
我建议的第一件事是让应用程序在给定的时间间隔内多次尝试连接数据库,这样如果之前没有初始化数据库,它就不会中断......
-
您能进一步解释一下吗?不太确定我明白。 IIRC,如果 Spring 无法创建初始连接,Spring 将在启动时存在该进程,或者您的意思是一旦它运行,然后 DB 就会关闭?
-
这取决于你。我将同时为案例以及活跃度和就绪度探测实施“待定 DB conn”。但是对于一个有趣的问题 +1 我希望使用 spring + k8s 的人能进一步解释......
标签: spring-boot kubernetes spring-boot-actuator