閱讀英文

共用方式為

Azure Spring Apps 中的零停机时间部署

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

本文介绍 Azure Spring Apps 中的零停机时间部署支持。

实现零停机时间部署是任务关键型应用程序的基本目标。 即使新版本在营业时间推出,你的应用程序也需要可用。 借助 Azure Spring Apps 中的零停机时间部署支持,可以从头到尾完成部署过程,而不会中断任何工作负载。

使用蓝绿部署策略实现零停机时间

可以在 Azure Spring Apps 中使用蓝绿部署策略实现零停机时间。 蓝绿部署通过运行两个部署版本来消除停机时间,任何时候只有一个部署服务于生产流量。 蓝绿部署允许在实时部署发生中断时切换到其他部署版本,从而实现零停机时间。

执行蓝绿切换时,Azure Spring Apps 将执行以下基础操作:

  • 如果为部署启用了 Eureka 客户端,则会为 production 部署中的实例覆盖 Eureka 注册表状态并将其设置为 UP
  • 如果为部署启用了 Eureka 客户端,则会为 staging 部署中的实例覆盖 Eureka 注册表状态并将其设置为 OUT_OF_SERVICE
  • 如果为应用启用了公共终结点,则更新入口规则以将公共流量路由到 production 部署中的实例。

注意

使用蓝绿部署,即使是对于单副本部署,也可以实现零停机时间。

使用滚动更新策略实现零停机时间

对于有两个或以上副本的部署,可以使用 Azure Spring Apps 的滚动更新策略实现零停机时间。 将新版本部署到现有部署或重启部署时,Azure Spring Apps 会使用基础 Kubernetes 滚动更新来执行更新。

滚动更新通过使用新实例以增量方式更新实例,使部署更新在不停机的情况下进行。 如果部署有两个或以上副本,则在执行滚动更新时,你的应用程序会继续为生产流量提供服务。 有关详细信息,请参阅执行滚动更新

警告

对于单副本部署,在部署更新期间可能会发生停机。 若要确保应用程序可用性,建议为生产工作负载部署至少两个副本。

注意

若要正常启动或关闭应用程序,必须为部署配置运行状况探测。 有关详细信息,请参阅如何为 Azure Spring Apps 中托管的应用配置运行状况探测和正常终止期。 Kubernetes 在滚动更新过程中检查这些探测,Nginx 入口控制器将流量路由到就绪情况探测成功的实例。

当你横向缩减应用程序实例时,Azure Spring Apps 会使用基础 Kubernetes 容器生命周期挂钩来妥善关闭 pod。

在挂钩中,Azure Spring Apps 执行以下操作来关闭应用程序容器:

  • 如果启用了 Eureka 客户端,则覆盖实例的 Eureka 注册表状态并将其设置为 OUT_OF_SERVICE
  • 等待几秒钟以继续处理来自 Nginx 或其他应用程序的任何流量,然后 Kubernetes 关闭应用程序容器。

后续步骤