繁体   English   中英

当 Cloud Foundry 更新/升级时,Spring Boot 应用程序会自动重新启动

[英]Spring boot application restart automatically when Cloud foundry updates/upgrade

我正在使用 Cloud Foundry,并在 Cloud 上部署了我的 Spring Boot 应用程序。 每当 Cloud Foundry 发生某些更新/升级时,我的应用程序都会重新启动,并且由于应用程序的重新启动需要更多时间才能启动,因此某些请求无法到达应用程序。 在 CF 中是否有任何方法可以在升级/重新启动应用程序以处理请求时运行某些应用程序实例。 另外我想知道,如果 CF 提供来自不同位置/区域的服务,那么请考虑我的应用程序将部署在不同区域可用的 2 个 CF 容器上。 只要有可用的更新/升级,就在一个区域为 Cf 进行升级,这样来自另一个区域的其他 CF 服务将可用,并且一些应用程序实例将运行以服务请求,反之亦然。 -谢谢。

您所描述的是 CF 的预期行为。

  • 如果您的应用程序有两个或多个实例,则它们不应同时关闭。 即一个将被取下,然后在成功重新启动后,然后另一个将被取下并重新启动。

  • 如果您的运营商为您所针对的基础配置了多个可用区,那么应用程序实例将分布在这些可用区之间,以帮助实现 HA 和最佳可用性。

如果您没有看到这种行为,那么您应该查看以下内容,因为这些项目会影响您的应用程序的正常运行时间:

  • 您是否有多个应用程序实例? 如果您只有一个应用程序实例,那么当更新应用于基础和其他场景时,您可能会看到一些小的停机时间窗口。 发生这种情况是因为有时 Diego 需要驱逐在 Diego Cell 上运行的应用程序。 它会在停止当前实例之前尝试在另一个 Cell 上启动您的应用程序,但对此没有提供任何保证。 因此,您可能会遇到一些停机时间,例如,如果您的应用程序启动缓慢或您的应用程序没有配置良好的运行状况检查(就像它在应用程序真正启动之前通过运行状况检查)。

  • 您的运营商是否设置了多个可用区? 作为开发人员,您无法确定。 这是抽象的,因此您需要询问您的平台运营团队并确认是否有多个,如果有,有多少。 为获得最佳的正常运行时间,应用实例的数量至少与 AZ 的数量相同。

  • 另一个经常被忽视的事情是,您的应用程序是否依赖于任何服务? 如果是这样,您也可能会在更新服务时看到停机时间。 这一切都取决于您使用的服务,以及这些服务的管理和升级是否会出现相关的停机时间。 当应用程序日志无法查看是否存在连接故障或类似错误时,您可以通过更仔细地查看应用程序日志来判断是否是这种情况。 您也可以通过查看 CF 市场中定义的计划来判断。 描述通常会说明是否有关于计划的规定,比如它是或不是集群或 HA。

更新

可能导致停机的另一件事:

  • 如果您的运营商的“飞行中的最大值”值对于 Diego Cell 的数量来说太高,这也会导致停机。 从本质上讲,“飞行中的最大数量”决定了升级期间将停止使用的 Diego Cell 数量。 如果此值过高,您可能会遇到剩余 Cell 中没有足够容量来托管所有应用程序的情况。 这最终会导致应用程序实例停机,因为它们无法及时在另一个 Cell 上重新调度。 作为开发人员,我认为这不是您可以解决的问题,您需要与您的平台运营商合作进行进一步调查。

这可能是这里的一个主题。 如果您是应用程序开发人员,您应该与您的平台运营团队交谈以进行调试。

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM