我正在使用Cloud Foundry,并将Spring Boot应用程序部署在Cloud上。每当Cloud Foundry上发生一些更新/升级时,我的应用程序就会重新启动,并且某些请求无法到达应用程序,因为重新启动应用程序需要花费更多的时间才能起床。CF中有什么方法可以在升级/重新启动应用程序以处理请求时运行某些应用程序实例。我也想知道,如果CF提供来自不同位置/区域的服务,那么考虑将我的应用程序部署在不同区域可用的2个CF容器上。只要有可用的更新/升级,就可以在一个区域进行Cf升级,以便可以使用另一区域的其他CF服务,并且某些应用程序实例将运行以服务请求,反之亦然。-谢谢。
您正在描述的是CF的预期行为。
如果您有两个或多个应用程序实例,则永远不要将它们同时关闭。即,其中一个将被删除,然后在成功重启后,另一个将被删除并重启。
如果您的运营商为您定位的基础配置了多个可用性区域,那么应用程序实例将分布在这些可用区中,以帮助促进HA和最佳可用性。
如果您没有看到此行为,则应查看以下内容,因为这些项目可能会影响应用程序的正常运行时间:
您是否有多个应用程序实例?如果只有一个应用程序实例,则在将更新应用于基础和其他情况下时,您会期望看到一些小的停机时间窗口。之所以会发生这种情况,是因为迭戈需要撤离在迭戈Cell上运行的应用程序。它会尝试在停止当前实例之前在另一个Cell上启动您的应用程序,但是对此没有任何保证。因此,例如,如果您的应用程序启动缓慢或您的应用程序未配置良好的运行状况检查(例如在应用程序真正启动之前通过了运行状况检查),则可能会导致一些停机时间。
您的操作员是否设置了多个可用区?作为开发人员,您无法真正分辨。这是抽象的,因此您需要询问您的平台运营团队,并确认是否有不止一个,如果有不止一个。为了获得最佳的正常运行时间,请至少具有与可用区一样多的应用程序实例。
经常被忽略的另一件事,您的应用程序是否依赖于任何服务?如果是这样,更新服务时您也可能会看到停机时间。所有这些都取决于您正在使用的服务,以及是否有相关的停机时间来管理和升级这些服务。当无法查看是否存在连接失败或此类错误时,可以通过仔细查看应用程序日志来判断是否是这种情况。您还可以通过查看CF Marketplace中定义的计划来判断。通常,描述会说出是否有关于该计划的规定,例如该计划是否为集群或HA。
UPDATE
可能导致停机的另一件事:
这可能是这里的主题。如果您是应用程序开发人员,则应该与您的平台运营团队联系以对其进行调试。
希望有帮助!