Azure 数据工厂中的可靠性

本文介绍了 Azure 数据工厂中的可靠性支持,内容涵盖了通过可用性区域实现的地区内复原能力,以及有关多区域部署的信息。

可靠性是你与 Microsoft 的共同责任,因此本文还介绍了创建满足需求的可靠解决方案的方法。

借助 Azure 数据工厂,可以创建灵活且强大的数据管道,用于无服务器数据集成和数据转换。 因此,在为可靠性制定业务连续性计划时,需要考虑以下方面的可靠性要求和指导原则:

  • Azure 数据工厂管道。
  • 集成运行时,用于连接数据存储并执行管道中定义的活动。
  • 连接到数据工厂的数据存储。 为了确保它们符合业务连续性要求,请查阅其产品可靠性文档和指导原则。

可靠性体系结构概述

Azure 数据工厂由多个基础架构组件组成。 每个组件以不同方式支持基础架构的可靠性。

Azure 数据工厂的组件包括:

  • Azure 数据工厂核心服务,用于管理管道触发器并协调管道执行。 核心服务还管理数据工厂中每个组件的元数据。 核心服务由 Microsoft 管理。

  • 集成运行时,用于在管道中执行特定活动。 集成运行时有几种不同的类型:

    • Microsoft 托管的集成运行时,包括 Azure 集成运行时和 Azure-SSIS 集成运行时。 Microsoft 管理构成这些运行时的组件。 在某些情况下,可以配置影响集成运行时弹性的设置。

    • 自承载集成运行时。 Microsoft 提供可在你自己的计算基础架构上运行,以执行 Azure 数据工厂管道的某些部分的软件。 你负责部署和管理计算资源,以及这些计算资源的弹性。

暂时性故障

暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 经过短暂的时间后,它们就会自我纠正。 应用程序必须能够处理暂时性故障,处理方式通常是重试受影响的请求。

与任何云托管 API、数据库和其他组件通信时,所有云托管应用程序都应遵循 Azure 的暂时性故障处理指南。 要详细了解如何处理暂时性故障,请参阅暂时性故障处理建议

使用 Azure 数据工厂时,请务必为暂时性故障做好准备,尤其是在设计管道和活动时。

幂等性

管道活动应写入为幂等活动,这意味着它们应该能够重新运行,而不会产生负面影响。 如果出现网络故障甚至可用性区域中断等暂时性故障,Azure 数据工厂可能会重新运行管道活动,因此有可能创建重复记录。

为了避免在暂时性故障后插入重复记录,可以采用以下最佳实践:

  • 在将记录写入数据库之前,为每条记录使用唯一标识符。 这种方法有助于发现和消除重复项。
  • “更新插入策略”选项适用于支持更新插入操作的连接器。 使用此方法在插入前检查记录是否已存在。 如果已存在,则更新它; 如果不存在,则插入它。 例如,MERGEON DUPLICATE KEY UPDATE 等 SQL 命令将使用此更新插入方法。
  • 使用复制活动中的数据一致性验证一文中讨论的复制操作策略

重试策略

借助重试策略,可以配置管道的某些部分,以便在出现问题(如连接的资源出现暂时性故障)时重试。 在 Azure 数据工厂中,可以在以下管道对象类型上配置重试策略:

要了解如何更改或禁用数据工厂触发器和活动的重试策略,请参阅管道执行和触发器

可用性区域支持

可用性区域是每个 Azure 区域内在物理上独立的数据中心组。 当一个区域发生故障时,服务可以转移到其他剩余区域中的一个。

有关 Azure 中可用性区域的详细信息,请参阅什么是可用性区域?

Azure 数据工厂支持区域冗余,该功能可针对可用性区域中的故障提供复原能力。 本节将介绍 Azure 数据工厂服务的每个部分如何支持区域冗余。

支持的区域

支持区域冗余的 Azure 数据工厂资源可以部署在支持可用性区域的任何区域

注意事项

核心服务:Microsoft 管理 Azure 数据工厂核心服务中的组件,并将它们分布在各个可用性区域中。

集成运行时:区域冗余支持情况取决于使用的集成运行时类型:

  • Azure 集成运行时支持区域冗余,此功能由 Microsoft 管理。
  • Azure-SSIS 集成运行时要求部署至少两个节点,这些节点会自动分配到不同的可用性区域。
  • 自承载集成运行时要求你负责部署用于托管运行时的计算基础架构。 可以部署多个节点(如单个虚拟机),并对它们进行配置以实现高可用性。 然后,可以将这些节点分布在多个可用性区域中。 要了解更多信息,请参阅高可用性和可扩展性

成本

核心服务:区域冗余不产生额外费用。

集成运行时:区域冗余的成本因使用的集成运行时类型而异:

  • Azure 集成运行时包含区域冗余功能,且不收取额外费用。
  • Azure-SSIS 集成运行时要求你部署至少两个节点以实现区域冗余。 有关每个节点的计费方式的更多信息,请参阅定价示例:在 Azure-SSIS 集成运行时上运行 SSIS 包
  • 自承载集成运行时要求你部署和管理计算基础架构。 为实现区域弹性,需要将计算资源分布在多个区域中。 根据部署的节点数量以及配置方式,可能会产生来自底层计算服务和其他支持服务的额外费用。 在多个节点上运行自承载集成运行时不收取额外费用。

配置可用性区域支持

Azure 数据工厂核心服务:无需配置。 Azure 数据工厂核心服务自动支持区域冗余。

集成运行时:

  • Azure 集成运行时:无需配置。 Azure 集成运行时会自动启用区域冗余。
  • Azure-SSIS 集成运行时:无需配置。 当 Azure-SSIS 集成运行时部署有两个或更多节点时,会自动启用区域冗余。
  • 自承载集成运行时要求你自行配置弹性,包括将节点分布在多个可用性区域中。

容量规划和管理

核心服务:Azure 数据工厂核心服务会根据需求自动扩展,无需进行容量规划或管理。

集成运行时:

  • Azure 集成运行时会根据需求自动扩展,无需进行容量规划或管理。
  • Azure-SSIS 集成运行时要求显式配置使用的节点数量。 要防范可用性区域故障,请考虑过度预配集成运行时的容量。 超额预配使解决方案能够容忍一定程度的容量损失,并且仍然可以继续运行而不会降低性能。 要了解有关过度预配的更多信息,请参阅通过过度预配管理容量
  • 自承载集成运行时要求自行配置容量和扩展。 部署自承载集成运行时时,请考虑进行过度预配。

区域间的流量路由

在正常运行期间,Azure 数据工厂会自动在每个可用性区域的正常运行实例之间分配管道活动、触发器和其他工作。

区域关闭体验

检测和响应。 Azure 数据工厂平台负责检测可用性中的故障并做出响应。 你无需执行任何作,即可在管道或其他组件中启动可用区故障转移。

活动请求。 正在进行的任何管道和触发器将继续执行,你不会注意到可用区故障。 但是,在区域故障期间正在进行的活动可能会失败并重新启动。 请务必将活动设计为幂等活动,这有助于它们从可用区故障和其他故障中恢复。 有关更多信息,请参阅暂时性故障

故障回复

在可用区恢复后,Azure 数据工厂会自动故障回复到原始可用区。 你无需执行任何作,即可在管道或其他组件中启动可用区故障回复。

但是,如果使用自承载集成运行时,可能需要在计算资源停止后重启它们。

对区域故障进行测试

对于核心服务以及 Azure 和 Azure-SSIS 集成运行时,Azure 数据工厂会管理支持区域冗余的资源的流量路由、故障转移和故障回复。 由于此功能是完全托管的,因此你无需启动或验证可用性区域故障流程。

对于自承载集成运行时,可以使用 Azure Chaos Studio 在 Azure 虚拟机上模拟可用性区域故障。

多区域支持

Azure 数据工厂资源部署在单个 Azure 区域中。 如果该区域变得不可用,数据工厂也会不可用。 不过,根据数据工厂所在区域是配对区域还是非配对区域,以及你的要求和配置,可以采用一些方法来应对区域中断。

Microsoft 管理的故障转移(切换到到配对区域)

Azure 数据工厂支持对配对区域(巴西南部和东南亚除外)中的数据工厂进行 Microsoft 管理的故障转移。 在区域长时间故障情况(极不可能发生)下,Microsoft 可能会选择对你的 Azure 数据工厂实例启动区域故障转移。

由于巴西南部和东南亚区域的数据驻留要求,Azure 数据工厂的数据仅通过使用 Azure 存储区域冗余存储 (ZRS) 存储在本地区域。 对于东南亚区域,所有数据都存储在新加坡; 对于巴西南部区域,所有数据都存储在巴西。

对于非配对区域或巴西南部/东南亚的数据工厂,Microsoft 不会代表你执行区域故障转移。

重要

Microsoft 管理的故障转移将由 Microsoft 触发。 很可能在出现重大延迟后发生,并尽最大努力完成。 此过程也存在一些例外情况。 你可能会丢失数据工厂元数据。 Azure 数据工厂资源的故障转移可能与其他 Azure 服务的故障转移发生的时间不同。

如果你需要应对区域中断,请考虑使用一种备选多区域方法

集成运行时的故障转移

为了准备好进行故障转移,可能还需要考虑一些其他注意事项(具体取决于使用的集成运行时):

  • Azure 集成运行时可以配置为自动解析其使用的区域。 如果区域设置为自动解析,并且主要区域中发生中断,Azure 集成运行时会自动故障转移到配对区域,但需遵循 Microsoft 管理的故障转移(切换到到配对区域)中描述的限制。 要在集成运行时设置中为活动执行或调度配置 Azure 集成运行时区域,请将区域设置为“自动解析”。
  • Azure-SSIS 集成运行时的故障转移是与 Microsoft 管理的数据工厂的故障转移分开管理的。 要了解更多信息,请参阅备选多区域方法
  • 自承载集成运行时将在你负责的基础结构上运行,因此 Microsoft 管理的故障转移不适用于自承载集成运行时。 要了解更多信息,请参阅备选多区域方法

故障转移后的重新配置

待 Microsoft 管理的故障转移完成后,即可访问配对区域中的 Azure 数据工厂管道。

但是,在故障转移完成后,可能需要对集成运行时或其他组件执行一些重新配置操作,包括重新建立网络配置。

备选多区域方法

如果需要管道能够应对区域型服务中断,并且需要控制故障转移过程,请考虑使用元数据驱动的管道:

  • 为 Azure 数据工厂设置源代码管理,以跟踪和审核对元数据所做的任何更改。 通过这种方法,还可以访问管道、数据集、链接服务和触发器的元数据 JSON 文件。 Azure 数据工厂支持不同的 Git 存储库类型(Azure DevOps 和 GitHub)。 要了解如何在 Azure 数据工厂中设置源代码管理,请参阅 Azure 数据工厂中的源代码管理

  • 使用持续集成和持续交付 (CI/CD) 系统(如 Azure DevOps)来管理管道元数据和部署. 使用 CI/CD,你可以快速将操作还原到另一个区域中的实例。 如果某个区域不可用,你可以手动或通过自动化方式预配新的数据工厂。 创建新数据工厂后,可以从现有 Git 存储库还原管道、数据集和链接服务 JSON。 有关详细信息,请参阅适用于 Azure 数据工厂和 Azure Synapse Analytics 管道的 BCDR

根据你使用的集成运行时,可能还有其他注意事项:

  • Azure-SSIS 集成运行时使用存储在 Azure SQL 数据库或 Azure SQL 托管实例中的数据库。 你可以为此数据库配置异地复制或故障转移组。 Azure-SSIS 数据库位于具有读写访问权限的主 Azure 区域(主角色)中,并持续复制到具有只读访问权限的辅助区域(辅助角色)中。 如果主区域不可用,则将触发故障转移,导致主数据库和辅助数据库互换角色。

    还可以配置与 Azure SQL 数据库或 Azure SQL 托管实例故障转移组同步工作的双备用 Azure SSIS IR 对。

    有关详细信息,请参阅配置 Azure-SSIS Integration Runtime 以实现业务连续性和灾难恢复 (BCDR)

  • 自承载集成运行时在你管理的基础架构上运行。 如果自承载集成运行时部署到 Azure 虚拟机,则可以使用 Azure 站点恢复触发虚拟机故障转移到另一个区域。

备份和还原

Azure 数据工厂支持通过源代码管理集成实现 CI/CD,以便备份与数据工厂实例关联的元数据,并将其部署到新环境中。 要了解更多信息,请参阅 Azure 数据工厂中的持续集成和持续交付