Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Openshift/Kubernetes中的弹簧靴执行器健康检查_Spring_Spring Boot_Kubernetes_Openshift_Spring Boot Actuator - Fatal编程技术网

Spring Openshift/Kubernetes中的弹簧靴执行器健康检查

Spring Openshift/Kubernetes中的弹簧靴执行器健康检查,spring,spring-boot,kubernetes,openshift,spring-boot-actuator,Spring,Spring Boot,Kubernetes,Openshift,Spring Boot Actuator,在这种情况下,我们有大量的Spring引导应用程序运行在容器(在OpenShift上)中,这些容器访问集中式基础设施(pod外部),如数据库、队列等 如果某个中央基础设施出现故障,健康检查将返回“不健康”(这是理所当然的)。问题是,活跃性检查看到了这一点,并重新启动pod(就绪性检查随后发现pod也关闭了,因此不会启动应用程序)。当只有少数应用程序可用时,这是很好的,但如果许多(可能有数百个)应用程序正在使用它,则会强制所有应用程序重新启动(崩溃循环) 我知道中央基础设施瘫痪是件坏事。它“应该”

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

如果某个中央基础设施出现故障,健康检查将返回“不健康”(这是理所当然的)。问题是,活跃性检查看到了这一点,并重新启动pod(就绪性检查随后发现pod也关闭了,因此不会启动应用程序)。当只有少数应用程序可用时,这是很好的,但如果许多(可能有数百个)应用程序正在使用它,则会强制所有应用程序重新启动(崩溃循环)

我知道中央基础设施瘫痪是件坏事。它“应该”永远不会发生。但是如果真是这样(墨菲定律),它就会把容器扔进一个疯狂的状态。看起来我们不是做错了什么,就是应该重新配置

有几个问题:

  • 如果您被迫从运行在OpenShift/Kubernetes上的容器中的Spring boot应用程序中使用集中式基础设施,是否仍应为后端启用所有执行器检查?(反弹容器实际上不会修复后端的故障)
  • 是否应为活跃度探针和准备度探针设置/执行器/健康端点
  • folk在spring boot应用程序中使用了哪些常见的准备就绪/活力探测设置?(超时/间隔/等)
  • 使用执行器检查活动性/就绪性是检查Spring Boot Pod中健康应用程序的实际方法。您的应用程序,一旦启动,理想情况下不应该出现故障或变得不健康。如果一个中心部件(如DB或排队服务)出现故障,理想情况下,您应该添加某种恢复能力,该恢复能力将连接到备用DR站点,或者等待一定时间,以便中心服务恢复并重新连接应用程序。这更多的是后端的技术故障,导致应用程序在完全启动后出现功能故障

  • 是的,既需要活力又需要准备,因为它们都有不同的用途。阅读

  • 在我以前的一个项目中,准备就绪所用的设置大约为30秒,活跃度大约为90秒,但老实说,这完全取决于你的应用程序,如果你的应用程序需要1分钟启动,那么你的准备就绪时间应该配置为1分钟,您的活跃度应该与后端服务进行故障切换所需的任何时间一起考虑


  • 希望这能有所帮助。

    您知道如何全局配置后端连接以在spring boot中重试吗?它必须以某种方式让健康检查成功,否则Liveity probe中的健康检查超时将在等待它重试直到它恢复时启动。您需要应用高可用性DB或应用断路器模式。阅读更多细节