当前位置: 首页 > 知识库问答 >
问题:

OpenShift/Kubernetes中的Spring引导执行器健康检查

巩枫
2023-03-14

我们的情况是,我们有大量的Spring Boot应用程序运行在容器(在OpenShift上)中,这些容器访问集中的基础设施(在pod外部),如数据库、队列等。

如果一个中央基础设施坏了,健康检查会返回“不健康”(这是正确的)。问题是,活跃度检查看到了这一点,并重新启动了pod(就绪检查然后看到它也下降了,所以不会启动应用程序)。当只有几个应用程序可用时,这是很好的,但如果许多(可能有数百个)应用程序都在使用它,它会强制所有应用程序重新启动(崩溃循环)。

  • 如果您被迫使用OpenShift/Kubernetes上容器中运行的Spring Boot应用程序的集中式基础结构,是否仍应为后端启用所有执行器检查?(弹出容器并不能解决后端关闭的问题)
  • 是否应同时为活跃度探针和就绪度探针设置/acture/healthendpoint?
  • 在Spring启动应用程序中,民间使用什么常用设置来进行准备/活跃度探测?(超时/间隔/等)。

共有1个答案

季骏祥
2023-03-14

>

  • 使用促动器检查是否活跃/就绪是检查Spring Boot Pod中是否有健康应用程序的实际方法。您的应用程序,一旦启动,理想情况下应该不会关闭或变得不健康如果一个中心部分,如DB或队列服务关闭,理想情况下,您应该添加某种弹性,可以连接到备用的DR站点,或者等待一定时间,中心服务恢复,应用程序重新连接。这更多的是后端的技术故障,导致应用程序在干净利落地启动后出现功能故障。

    是的,活跃和准备都是必要的,因为它们都有不同的目的。读这个

    在我以前的一个项目中,用于准备就绪的设置大约是30秒,活跃度大约是90秒,但老实说,这完全取决于您的应用程序,如果您的应用程序需要1分钟启动,这就是您的准备就绪时间应该配置的,并且您的活跃度应该考虑到相同的因素,以及您的后端服务进行故障转移切换所需的任何时间。

    希望这有帮助。

  •  类似资料:
    • {“Status”:“Down”} 我需要做什么才能显示自定义健康状况指示器?

    • 对于我一直在开发的一个微服务,我创建了一个自定义健康检查类,扩展了AbstractHealthIndicator,并能够在中获得输出 但当我向领事注册服务时,健康检查状态为失败。 尝试将执行器url配置为领事健康检查为spring。云领事发现健康检查url=http://localhost:8080/actuator/health。但它仍然失败,出现错误http://localhost:8566/

    • 我们正在尝试healthcheck一个Spring Boot应用程序,我们正在计划使用Spring Boot执行器health来获得健康状态。 令人困惑的是,当CassandraHealthIndicator、DiskSpaceHealthIndicator、DataSourceHealthIndicator、ElasticsearchHealthIndicator、JmsHealthIndica

    • 但我想要一些我可以调用从AWS弹性负载均衡器/自动缩放组。默认情况下,如果一个实例未通过健康检查,ELB/ASG将终止它并用一个新的实例替换它。问题是一些健康检查,如DataSourceHealthIndicator,会在数据库关闭时向下报告,但我的应用程序实例在其他方面是完全健康的。如果我使用默认行为,AWS将抛出完全正常的实例,直到数据库重新启动,这将导致我的账单增加。 我可以去掉DataSo

    • 第一次尝试执行器依赖关系时,我将其配置为选入 当我在本地调用时,大约需要1.4秒来响应。请记住,这是一个本地调用,来自服务器的同一台机器。 如果我创建了一个以空响应进行响应的常规endpoint,则请求只需几毫秒。 这正常吗?我能让它回复快一点吗?

    • 目前,我们有一个集群应用程序运行Spring Boot(1.5.2)。有时,命中/health致动器endpoint的健康检查以503响应。但是,日志中没有任何内容表明服务不可用的原因。有没有办法得到一个更准确的原因为什么503是生产?