你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 自动化是代表你运行管理任务的服务。 定义要运行的脚本(称为 Runbook),Azure 自动化提供用于执行这些脚本的基础结构。 本文重点介绍流程自动化,这是服务的核心功能。 混合 Runbook 辅助角色运行在客户管理的基础结构上,不在本文讨论范围内。
使用 Azure 时,可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍如何使Azure 自动化应对各种潜在中断和问题,包括暂时性故障、可用性区域中断、区域中断和服务维护。 它还介绍了备份和还原选项,以及有关Azure 自动化服务级别协议(SLA)的关键信息。
提高可靠性的生产部署建议
对于使用流程自动化的生产工作负荷,请遵循以下建议:
通过向脚本添加适当的重试逻辑来处理 Runbook 与 Azure 服务和 API 交互时发生的暂时性故障。
设计你的 Runbook 以抵御中断。 使用检查点在作业重启过程中保持进度,如果需要存储状态,请使用外部存储。
可靠性体系结构概述
本部分介绍从可靠性的角度来看,服务工作原理最相关的一些重要方面。 本部分介绍逻辑体系结构,其中包括部署和使用的某些资源和功能。 它还讨论了物理架构,该架构提供了服务内部运作方式的详细信息。
逻辑体系结构
部署Azure 自动化时,请创建一个自动化帐户,该帐户是运行自动化的资源的逻辑容器。
- 运行手册,表示要执行的工作内容。 文本运行手册是使用 PowerShell 或 Python 编写的脚本。 图形 Runbook 是使用图形编辑器构建的。
- Runbook 共享的资源,包括模块、连接、凭据、证书和变量。
- 发起 Runbook 执行的资源,包括计划和观察程序。
有关这些资源的详细信息,请参阅 Azure 自动化 中的 Runbook 执行。
本文介绍这些功能的可靠性与复原能力,这些功能是Azure 自动化流程自动化的一部分。
物理体系结构
Runbook 在计算基础结构上执行。 流程自动化存在两个部署模型:
云作业(Microsoft托管):默认情况下,Runbook 在Microsoft提供的云基础结构上运行。 Microsoft负责此基础结构的高可用性和管理。 提交 Runbook 作业时,Azure 自动化从其可用计算资源的池中分配云作业,执行 Runbook,然后将资源返回到池。
云作业有时可能会在运行时中断。 设计 Runbook 时,应假定作业可能会在不同的基础设施上重新启动,并且之前实例中写入临时存储的任何数据都将无法再访问。
混合 Runbook 辅助角色:你可以选择配置自己的计算基础结构(Azure 中的虚拟机、其他云或本地)来运行 Runbook。 当你使用混合 Runbook 辅助角色时,你有责任配置它们以满足你的可靠性要求。 混合 Runbook 辅助角色不在本文讨论范围内。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。
你负责编写运行手册,用于处理其交互的服务和 API 中的瞬时错误。 对于文本运行手册,请通过循环和错误处理实现重试逻辑。 有关指南和示例,请参阅 处理依赖于时间的脚本中的暂时性错误。 对于图形 Runbook,请为工作流中的活动配置重试行为。 有关配置详细信息,请参阅 图形运行簿中的重试活动。
基础结构维护或其他平台事件可能会中断 Runbook 作业。 将运行手册设计为可应对这些中断:
实施检查点。 对于 PowerShell 工作流 Runbook,请使用检查点在工作流的关键点保存进度。 如果作业中断并重启,它可以从最后一个检查点恢复,而不是重新开始。 有关详细信息,请参阅 在工作流中使用检查点。
了解作业限制。 云作业在运行时持续时间上具有公平份额限制。 有关作业执行限制及其实施方式的详细信息,请参阅 Runbook 执行。
在外部存储持久性状态。 作业在运行之间不保留状态。 如果作业中断并在另一个实例上重启,则第一次运行写入临时存储的任何内容都可能会丢失。 如果需要在作业运行之间保留数据,请将其存储在外部存储中,例如Azure Blob 存储或数据库。
应对可用区故障的弹性
可用性区域 是 Azure 区域内物理上独立的数据中心组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
在支持的区域中,自动化帐户和云作业是区域冗余的,这意味着服务会将你的资源分散到多个可用性区域。 Microsoft自动启用区域冗余,并且不需要任何配置。
Requirements
区域支持: 将自动化帐户部署到以下区域之一时,会自动进行区域冗余:
| 美洲 | 欧洲 | 中东 | Africa | 亚太 |
|---|---|---|---|---|
| Brazil South | 法国中部 | 以色列中部 | 南非北部 | Australia East |
| 加拿大中部 | 德国中西部 | 卡塔尔中部 | 印度中部 | |
| 美国中部 | 意大利北部 | 中国北部 3 | ||
| 美国东部 | 北欧 | 东亚 | ||
| 美国东部 2 | 挪威东部 | 日本东部 | ||
| 美国中南部 | 波兰中部 | 韩国中部 | ||
| USGov 弗吉尼亚州政府 | 瑞典中部 | 东南亚 | ||
| 美国西部 2 | 英国南部 | |||
| 美国西部 3 | 西欧 |
有关受支持区域的当前列表,请参阅可用性区域对Azure 自动化的支持。
Cost
区域冗余无需额外付费。 在流程自动化中,计费依据作业和监视器的运行时长而定。 有关详细信息,请参阅 Azure 自动化 定价。
配置可用性区域支持
在支持的区域中创建自动化帐户时,它会自动变为区域冗余。 无法禁用区域冗余。 有关详细信息,请参阅可用性区域对Azure 自动化的支持。
所有区域正常时的行为
本节描述当你的自动化帐户是区域冗余且区域内所有可用性区域都正常运行时可以预期的情况。
跨可用性区域操作: 自动化帐户管理操作和云作业会自动分布到该区域内的各个可用性区域。 请求或作业可由任何可用性区域中的任何实例处理。
跨可用性区域数据复制: 部署到自动化帐户的自动化帐户配置、Runbook 脚本和其他资源会在多个可用性区域之间同步复制。
区域故障期间的行为
本节描述当你的自动化帐户是区域冗余且区域内某个可用性区域发生中断时可以预期的情况。
- 检测和响应:Azure 自动化平台负责检测可用性区域中的故障。 无需执行任何操作即可启动区域故障转移。
- 通知: Microsoft不会在区域关闭时自动通知你。 但是,可以使用 Azure 服务运行状况 来了解服务的总体运行状况,包括任何区域故障,并且可以设置 服务运行状况警报 来通知问题。
活动请求:在不健康区域中正在进行的任何作业运行可能会被中断。 Azure 自动化 会使用运行状况良好的可用区中的基础结构自动启动新的作业运行。 将运行手册设计为能够承受瞬时故障和中断,从而能够安全地重新启动。
预期数据丢失: 作业运行不会保留状态,因此区域故障不应导致正在进行的作业数据丢失。 如果作业需要存储可用于从中断(如检查点)恢复的数据,请将该信息存储在持久性云存储服务(如Azure 存储或数据库)中。
自动化账户配置和运行手册数据会在各可用区之间复制,即使某个可用区不可用,也仍然可以访问。
预期的停机时间: 在区域中断期间,当服务检测到故障并将工作负荷重新分发到正常运行区域时,自动化帐户可能会遇到短暂的中断。
分配: 该服务会在剩余的正常区域中自动重新平衡容量。 新的作业运行、观察程序和计划将继续在健康区域的基础结构上运行。 恢复不依赖于故障区域恢复服务。
区域恢复
当故障区域返回到服务时,Azure 自动化会自动将其重新集成到区域轮换中。 你无需执行任何操作。 服务监视区域的运行状况,并在恢复正常操作后重新分发所有区域的工作负荷。
针对局部区域故障进行测试
Azure 自动化管理区域冗余资源的流量路由、故障转移和区域恢复。 您无需发起任何操作,也无需验证可用区故障处理流程。 测试运行手册,验证其在发生中断时能否恢复。
对区域范围的故障的复原能力
Azure 自动化是单区域服务。 如果区域不可用,则自动化帐户也不可用。
用于复原的自定义多区域解决方案
可以将单独的自动化帐户部署到多个区域,并在需要时在它们之间进行切换。 你负责将各个账户部署到每个区域,对其进行适当配置,在这些账户之间分发请求,并在某个区域不可用时处理故障转移。 有关可以考虑的方法的详细信息,请参阅Azure 自动化的灾难恢复。
备份和还原
对于大多数解决方案,不应只依赖于备份。 请改用本指南中所述的其他功能来支持复原要求。 但是,备份可以防范其他方法没有的一些风险。 有关详细信息,请参阅什么是冗余、复制和备份?。
Azure 自动化 不为自动化帐户配置或运行簿内容提供内置备份。 将自己的副本保留在服务外部,以便根据需要重新部署它们。
使用基础结构即代码(IaC)进行自动化帐户配置。 在Bicep文件、ARM 模板或 Terraform 中定义自动化帐户和相关资源。 将模板存储在源代码管理中,并使用部署管道在同一区域或其他区域中重新创建环境。 在你的构件和部署流程中包含证书、变量、计划和凭据引用。 将机密存储在Azure 密钥保管库等服务中,而不是直接在 Runbook 代码中嵌入值。
将 Runbook 脚本存储在源代码管理中。 在源代码管理系统(如 Git)中保留 PowerShell 的源和Python Runbook。 使用版本控制、分支和拉取请求审查来保护脚本质量并实现回滚到已知良好版本。
从适当的数据存储中备份状态数据。 作业不保留状态。 如果需要保留详细的作业日志或任何其他 Runbook 生成的数据,请将其存储在另一个Azure存储或数据库服务中,并从那里备份。
对意外删除的抵抗力
如果意外删除了自动化帐户,则可以在有限的时间范围内还原它。 有关详细信息,请参阅 还原已删除的自动化帐户。
服务维护期间的系统弹性能力
Microsoft定期应用服务更新并执行其他维护。 Azure平台会自动处理这些活动,确保维护是无缝且透明的。 除非通过 Azure 服务运行状况计划内维护事先通知,否则维护事件期间预计不会出现停机。
服务级别协议
Azure服务的服务级别协议(SLA)描述了每个服务的预期可用性以及解决方案必须满足的条件,以实现该可用性预期。 有关详细信息,请参阅 联机服务的 SLA。