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

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

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

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

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

  • 如果您的运营商为您定位的基础配置了多个可用性区域,则应用程序实例将分布在这些可用区中,以帮助促进HA和最佳可用性。

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

  • 您是否有多个应用程序实例?如果只有一个应用程序实例,则在将更新应用于基础和其他情况下时,您会期望看到一些小的停机时间窗口。之所以会发生这种情况,是因为迭戈需要撤离在迭戈Cell上运行的应用程序。它会尝试在停止当前实例之前在另一个Cell上启动您的应用程序,但是对此没有任何保证。因此,例如,如果您的应用启动缓慢或未配置良好的运行状况检查(例如在应用真正启动之前通过了运行状况检查),则可能会导致停机。

  • 您的操作员是否设置了多个可用区?作为开发人员,您无法真正分辨。这是抽象的,因此您需要询问您的平台运营团队,并确认是否有不止一个,如果有不止一个。为了获得最佳的正常运行时间,至少要有与可用区一样多的应用程序实例。

  • 通常被忽略的另一件事是,您的应用程序是否依赖于任何服务?如果是这样,更新服务时您也可能会看到停机时间。所有这些都取决于您正在使用的服务,以及是否有相关的停机时间来管理和升级这些服务。当无法查看是否存在连接失败或此类错误时,可以通过仔细查看应用程序日志来判断是否是这种情况。您还可以通过查看CF Marketplace中定义的计划来判断。通常,描述会说出是否有关于该计划的规定,例如该计划是否为集群或HA。

更新

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

  • 如果您的操作员的“最大飞行”值对于Diego Cells的数量而言过高,这也可能导致停机。本质上,“飞行中的最大飞行时间”决定了在升级过程中将有多少个Diego Cells退出服务。如果此值太高,则可能会遇到剩余单元中没有足够容量容纳所有应用程序的情况。这最终导致应用程序实例停机,因为无法及时将其重新安排在另一个单元上。作为开发人员,我认为这不是您可以解决的问题,您需要与平台运营商合作以进一步调查。

这可能是这里的主题。如果您是应用程序开发人员,则应与平台运营团队联系进行调试。

希望有帮助!

本文链接:https://www.f2er.com/3030367.html

大家都在问