你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

中断服务部署操作

本文介绍中断处于非终止状态的站点网络服务(SNS)部署作的方法。 此功能仅支持容器网络函数(CNF)。 你可以通过将标签应用于网络功能 (NF) 的托管资源组 (MRG) 来触发该操作。 稍后必须删除此标记才能恢复将来的 SNS操作。

为何中断服务部署操作

Azure 操作员服务管理器部署复杂的 CNF 工作负载,其中包含许多单独的组件(Helm 图表)。 启动 SNS 部署时,将按网络函数设计(NFD)定义的顺序按顺序处理每个组件。 根据部署中涉及的组件数量,SNS操作可能需要较长时间才能完成。

例如,假设 CNF 有 30 个组件。 每个组件部署需要 5 分钟。 此操作的总运行时间将超过 2 小时。 现在,请考虑与长时间运行的部署操作相关的操作性问题:

  • 用户可能只想测试部署操作到某个特定组件。
  • 用户可能会在启动作后意识到组件配置中存在错误。
  • 该作可能会对面向客户的服务产生意外的负面影响。

在这种情况下,能够中断操作是理想的。 在引入此中断功能之前,唯一的选择是等待有缺陷的组件失败。 借助这种中断处理功能,可以主动提前中断长时间执行的部署,以防止其到达有缺陷的组件。 这种中断可最大程度地减少延迟并提高运营敏捷性。

服务部署操作的概述

在 SNS 的首次部署期间,安装操作会创建一个包含 NF 资源的托管资源组 (MRG)。 对于后续的 SNS 部署,升级操作使用此托管者关系来修改 MRG 中的 NF。 作为使用中断功能的先决条件,必须有权访问 NF MRG。

注释

NF MRG 具有不同的默认权限,而 SNS 资源组(RG)通常会限制直接用户访问。

中断服务部署操作

按照此过程执行中断操作。 请记住,中断行为在针对安装操作而非升级操作时有所不同:

  • 中断安装时,工作流仅支持故障暂停恢复方法。
  • 中断升级时,工作流遵循配置的故障恢复方法。 此方法可以是失败时回滚或失败时暂停。

使用标记请求中断

若要中断正在运行的部署,请在 NF MRG 上添加标记 cancel:1 。 可以通过引用 SNS 资源中的 properties.managedResourceGroupConfiguration.name 值来标识 MRG。

该标记是静态键/值对,必须完全匹配。 可以使用任何受支持的方法(例如 Azure 门户、Azure CLI 或 REST SDK)添加它。

以下示例演示如何使用 Azure CLI 添加标记:

az tag update --resource-id {resourceGroup} --operation Merge --tags cancel=1

等待中断被触发

将标签应用于 NF MRG 后,中断将在组件操作之间执行。 当前组件作业不会被中断,必须继续完成。

在工作流启动下一个组件作之前,它会检查 NF MRG 上是否存在标记。 如果存在标记,则不会执行任何剩余组件,并设置为 failed 状态。

如果中断应用于升级作,工作流将遵循配置的故障恢复方法。 故障恢复完成后,部署作的终端状态设置为 failed

监视网络函数组件的状态

使用 NF 组件视图确定执行中断的状态。 请查看最后一个已完成组件的 DeploymentStatusProperties 属性,该属性应处于除 installing 之外的其他状态。

还可以使用组件视图根据配置的故障恢复方法确定组件状态。

通过日志确认中断动作

SNS 部署达到最终状态 failed 后,将中断通知追加到操作的输出日志中。

安装中断期间发出的错误

以下代码演示在第一次安装作期间发出的日志示例。 对 testapp 的引用标识了由于中断请求而未启动的组件。 该字符串 deployment cancelled 指示中断已应用于一次初始安装操作。

{
 "code": "DeploymentFailed",
 "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
 "details": [ 
  { 
   "code": "NetworkFunctionApplicationDeploymentFailed",
   "message": "[Application(testapp): Deployment cancelled for application: testapp due to User cancellation request]"
  }
 ]
}

升级中断期间发出的错误

以下代码演示升级作期间发出的日志示例。 用于识别下一个由于中断请求未启动的组件的引用是 testapp。 该字符串 NF update 表明中断已应用于升级操作。

{
 "code": "DeploymentFailed",
 "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
 "details": [ 
  { 
   "code": "NetworkFunctionApplicationDeploymentFailed", 
   "message": "[Application(testapp) failed to be processed in NF update. Error: Deployment cancelled for application: testapp due to User cancellation request]" 
  } 
 ]
}

在中断完成后删除标记

为了避免意外中断任何将来的 SNS 部署操作,您应从 NF MRG 中删除该标记。 例如,若要使用 Azure CLI 删除标记,请运行以下命令:

az tag update --resource-id {resourceGroup} --operation Delete --tags cancel=1

其他注意事项

中断 SNS 部署操作时,请注意以下事项:

  • 中断部署仅在 CNF 部署中受支持。
  • 将标记添加到 SNS MRG 时,正在进行的组件操作不会中断,且必须在开始中断之前完成。