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

使用 Azure 逻辑应用为 Azure 资源创建复制任务(预览版)

重要

此功能为预览版,受 Microsoft Azure 预览版补充使用条款限制。

虽然最大程度地提高可用性和可靠性是 Azure 服务的首要运营任务,但仍有许多方法可以解决由于网络或名称解析问题、错误或暂时无响应而导致通信停止的问题。 这种情况并不是“灾难性的”,还没有糟糕到像在灾难恢复时一样,可能想要完全放弃区域部署。 但是,某些应用的业务方案可能会受到持续时间不超过几分钟甚至几秒钟的可用性事件的影响。

为了减少不可预测的事件可能对 Azure 区域中的 Azure 资源产生的影响,你可以将这些资源中的内容从一个区域复制到另一个区域,以便保持业务连续性。 在 Azure 中,你可以创建一个复制任务,将数据、事件或消息从一个区域中的源移动到另一个区域中的目标。 这样可以确保当源脱机且目标必须接管内容时,目标随时可用。

注意

你还可以使用复制任务在同一区域的实体之间移动内容,但如果整个区域变得不可用或遇到中断,源和目标都会受到影响。

本文概述了由 Azure 逻辑应用提供支持的复制任务,并展示了如何为 Azure 服务总线队列创建示例复制任务。 如果你不熟悉逻辑应用和工作流,请查看什么是Azure 逻辑应用单租户与多租户和集成服务环境,以便Azure 逻辑应用

什么是复制任务?

通常,复制任务从源接收数据、事件或消息,将该容移动到目标,然后从源删除该内容,但源是事件中心实体时除外。 复制任务通常按原样移动内容,但由 Azure 逻辑应用提供支持的复制任务还会添加复制属性。 如果源协议和目标协议不同,这些任务还会执行元数据结构之间的映射。 复制任务是无状态的,这意味着它们不会在任务的并行或顺序执行之间共享状态或其他副作用。

使用可用的复制任务模板时,你创建的每个复制任务在“逻辑应用(标准版)”资源中都有一个基础无状态工作流,其中可以包含多个复制任务工作流。 此资源托管在单租户 Azure 逻辑应用中,这是一种可缩放且可靠的执行环境,用于配置和运行无服务器应用程序,包括复制和联合任务。 单租户 Azure 逻辑应用运行时也采用 Azure Functions 扩展性模型,并作为扩展托管在 Azure Functions 运行时上。 此设计为逻辑应用工作流提供了可移植性、灵活性和更高的性能,以及继承自 Azure Functions 平台和 Azure 应用服务生态系统的其他功能和优势。

有关复制和联合的详细信息,请查看以下文档:

复制任务模板

目前,复制任务模板可用于 Azure 事件中心Azure 服务总线。 下表列出了此预览版中当前可用的复制任务模板:

资源类型 复制源和目标
Azure 事件中心命名空间 - 事件中心实例到事件中心实例
- 事件中心实例到服务总线队列
- 事件中心实例到服务总线主题
Azure 服务总线命名空间 - 服务总线队列到服务总线队列
- 服务总线队列到服务总线主题
- 服务总线主题到服务总线主题
- 服务总线队列到事件中心实例
- 服务总线主题到服务总线队列
- 服务总线主题到事件中心实例

重要提示:当队列是源时,复制任务不会复制消息,而是将消息从源移动到目标,然后从源中删除这些消息。

若要改为镜像消息,请使用主题作为源,其中“主”订阅充当队列终结点。 这样,目标就会从源获取每条消息的副本。

若要跨不同区域路由消息,可以创建一个从应用发送消息的队列。 复制任务将该队列中的消息传输到另一个区域中命名空间中的目标队列。 还可以将主题订阅用作充当传输队列的实体。 有关详细信息,请查看 ServiceBusCopy 的复制拓扑

复制拓扑和工作流

为了帮助你直观地了解由 Azure 逻辑应用(标准版)提供支持的复制任务的工作原理,下图显示了事件中心实例和服务总线队列的复制任务结构和工作流。

事件中心的复制拓扑

下图显示了事件中心实例之间的拓扑和复制任务工作流:

Conceptual diagram showing topology for replication task powered by a

有关 Azure 事件中心内的复制和联合的信息,请查看以下文档:

服务总线的复制拓扑

下图显示了服务总线队列之间的拓扑和复制任务工作流:

Conceptual diagram showing topology for replication task powered by

有关 Azure 服务总线中的复制和联合的信息,请查看以下文档:

元数据和属性映射

对于事件中心,从源事件中心命名空间获取的以下项将替换为目标事件中心命名空间中新的服务分配值:事件的服务分配元数据、原始排队时间、序列号和偏移量。 但是,对于 helper 函数以及 Azure 提供的示例中的复制任务,原始值保留在用户属性中:repl-enqueue-time(ISO8601 字符串)、repl-sequencerepl-offset。 这些属性具有 string 类型并包含相应原始属性的字符串化值。 如果多次转发事件,则直接来源的服务分配元数据将追加到任何已存在的属性,并以分号分隔值。 有关详细信息,请查看服务分配的元数据 - 事件复制任务模式

对于服务总线,从源服务总线队列或主题获取的以下项将替换为目标服务总线队列或主题中新的服务分配值:消息的服务分配元数据、原始排队时间和序列号。 但是,对于 Azure 提供的示例中的默认复制任务,原始值保留在用户属性中:repl-enqueue-time(ISO8601 字符串)和 repl-sequence。 这些属性具有 string 类型并包含相应原始属性的字符串化值。 如果多次转发消息,则直接来源的服务分配元数据将追加到任何已存在的属性,并以分号分隔值。 有关详细信息,请查看服务分配的元数据 - 消息复制任务模式

当某个任务从服务总线复制到事件中心时,该任务仅将 User Properties 属性映射到 Properties 属性。 但是,当任务从事件中心复制到服务总线时,它会映射以下属性:

从事件中心 到服务总线
ContentType ContentType
CorrelationId CorrelationId
MessageId MessageId
PartitionKey PartitionKey SessionId
属性 用户属性
ReplyTo ReplyTo
ReplyToGroupName ReplyToSessionId
使用者 标签
如果 如果

顺序保留

对于事件中心,相同数量的分区之间的复制将创建 1:1 克隆,事件不会发生变化,但也可能包含重复项。 但是,在不同数量的分区之间进行复制时,仅根据分区键保留事件的相对顺序,但也可能包含重复项。 有关详细信息,请查看流和顺序保留

对于服务总线,你必须启用会话,以便从源检索到的具有相同会话 ID 的消息序列作为原始序列中的一个批次并以相同的会话 ID 提交到目标队列或主题。 有关详细信息,请查看序列和顺序保留

重要

当源遇到中断事件时,复制任务不会跟踪已处理的消息。 若要防止重复处理已处理过的消息,必须设置一种方式来跟踪已处理的消息,以便仅对未处理的消息进行处理。

例如,可以设置一个数据库,用于存储每条消息的处理状态。 消息送达后,检查消息的状态,并仅在消息处于未处理状态时进行处理。 这样,就不会再处理已处理过的消息。

此模式演示了“幂等性”概念,其中针对输入的重复操作将生成相同的结果,且不会产生其他副作用,也不会更改输入的值。

若要详细了解可在其中创建复制任务的 Azure 服务的多站点和多区域联合,请查看以下文档:

定价

在下面,复制任务由托管在单租户 Azure 逻辑应用中的“逻辑应用(标准版)”资源中的无状态工作流提供支持。 当你创建此复制任务时,系统立即开始计费。 使用量、计量、计费和定价模型遵循标准托管计划标准计划定价层

根据事件中心接收的事件数或服务总线处理的消息数,托管计划可能会纵向扩展或缩减,以在活动复制期间保持最低 vCPU 使用率和低延迟。 此行为要求你在创建用于复制任务的逻辑应用资源时,选择适当的标准计划定价层,以便 Azure 逻辑应用不会限制或开始最大化 CPU 使用率,同时仍然能够保证快速执行复制。

注意

如果你的应用从 WS1 计划的一个实例开始,然后横向扩展为两个实例,在假设计划全天运行的情况下,成本将是 WS1 成本的两倍。 如果将应用纵向扩展为 WS2 计划并使用一个实例,则成本实际上与两个 WS1 计划实例相同。 同样,如果将应用纵向扩展为 WS3 计划并使用一个实例,则成本实际上与两个 WS2 计划实例或四个 WS1 计划实例相同。

以下示例演示了托管计划定价层和配置选项,这些选项根据方案是事件中心还是服务总线以及各种配置值,为特定复制任务方案提供最佳的吞吐量和成本。

注意

以下部分中的示例假设事件或消息大小为 1 KB,使用 800 作为预提取计数、事件中心的最大事件批大小和服务总线的最大消息计数的默认值。 根据事件大小,你可能需要调整预提取计数、最大事件批大小或最大消息计数。 例如,如果事件大小或消息大小超过 1 KB,你可能需要将预提取计数和最大事件批大小或消息计数的值从 800 减小。

事件中心横向扩展

以下示例根据分区数量、每秒事件数和其他配置值,演示了同一区域中两个事件中心命名空间之间的复制任务的托管计划定价层和配置选项。

本部分中的示例假设事件大小为 1 KB,使用 800 作为预提取计数和最大事件批大小的默认值。 根据事件大小,你可能需要调整预提取计数和最大事件批大小。 例如,如果事件大小超过 1 KB,你可能需要将预提取计数和最大事件批大小的值从 800 减小。

定价层 分区计数 每秒事件数 最大突发数* 始终就绪的实例数* 预提取计数* 最大事件批大小*
WS1 1 1000 1 1 800 800
WS1 2 2000 1 1 800 800
WS2 4 4000 2 1 800 800
WS2 8 8000 2 1 800 800
WS3 16 16000 2 1 800 800
WS3 32 32000 3 1 800 800

* 有关可为每个定价层更改的值的详细信息,请查看下表:

Value 说明
最大突发数 在承受负载的情况下要横向扩展的弹性辅助角色的最大数量。 如果基础应用所需的实例数超过了下一表行中的“始终就绪的实例数”,则应用可以继续横向扩展,直到实例数达到最大突发数限制。 若要更改此值,请查看本文稍后的编辑托管计划横向扩展设置

注意:超出计划大小的任何实例仅在它们正在运行并已分配给你时,才按秒计费。 平台会尽最大努力将应用横向扩展为定义的最大限制。

提示:建议选择一个高于所需数量的最大值,以便平台可在必要时横向扩展以处理较大的负载,因为未使用的实例不会计费。

有关详细信息,请查看以下文档,因为工作流标准计划与 Azure Functions 高级计划在某些方面是相同的:

- 计划和 SKU 设置 - Azure Functions 高级计划
- 什么是云突发?

始终就绪实例 始终准备就绪并已预热的、可用于托管应用的实例的最小数量。 最小数量始终为 1。 若要更改此值,请查看本文稍后的编辑托管计划横向扩展设置

注意:任何超出计划大小的实例始终会计费,无论它们是否正在运行并已分配给你。

有关详细信息,请查看以下文档,因为工作流标准计划与 Azure Functions 高级计划在某些方面是相同的:始终就绪的实例数 - Azure Functions Premium 计划

预提取计数 逻辑应用资源中 AzureFunctionsJobHost__extensions__eventHubs__eventProcessorOptions__prefetchCount 应用设置的默认值,用于确定基础 EventProcessorHost 类使用的预提取计数。 若要为此应用设置添加或指定不同的值,请查看管理应用设置 - local.settings.json,例如:

- 名称AzureFunctionsJobHost__extensions__eventHubs__eventProcessorOptions__prefetchCount
- 值:800(无上限)

有关 prefetchCount 属性的详细信息,请查看以下文档:

- host.json 设置 - Azure Functions 的 Azure 事件中心触发器和绑定
- EventProcessorOptions.PrefetchCount 属性
- 在应用程序的多个实例之间平衡分区负载
- 事件处理程序主机
- EventProcessorHost 类

最大事件批大小 逻辑应用资源中 AzureFunctionsJobHost__extensions__eventHubs__eventProcessorOptions__maxBatchSize 应用设置的默认值,用于确定每个接收循环接收的最大事件计数。 若要为此应用设置添加或指定不同的值,请查看管理应用设置 - local.settings.json,例如:

- 名称AzureFunctionsJobHost__extensions__eventHubs__eventProcessorOptions__maxBatchSize
- 值:800(无上限)

有关 maxBatchSize 属性的详细信息,请查看以下文档:

- host.json 设置 - Azure Functions 的 Azure 事件中心触发器和绑定
- EventProcessorOptions.MaxBatchSize 属性
- 事件处理程序主机

服务总线横向扩展

以下示例根据每秒消息数和其他配置值,演示了同一区域中两个服务总线命名空间之间的复制任务的托管计划定价层和配置选项。

本部分中的示例假设事件大小为 1 KB,使用 800 作为预提取计数和最大消息计数的默认值。 根据消息大小,你可能需要调整预提取计数和最大消息计数。 例如,如果消息大小超过 1 KB,你可能需要将预提取计数和最大消息计数的值从 800 减小。

定价层 每秒消息数 最大突发数* 始终就绪的实例数* 预提取计数* 最大消息计数*
WS1 2000 1 1 800 800
WS2 2500 1 1 800 800
WS3 3500 1 1 800 800

* 有关可为每个定价层更改的值的详细信息,请查看下表:

Value 说明
最大突发数 在承受负载的情况下要横向扩展的弹性辅助角色的最大数量。 如果基础应用所需的实例数超过了下一表行中的“始终就绪的实例数”,则应用可以继续横向扩展,直到实例数达到最大突发数限制。 若要更改此值,请查看本文稍后的编辑托管计划横向扩展设置

注意:超出计划大小的任何实例仅在它们正在运行并已分配给你时,才按秒计费。 平台会尽最大努力将应用横向扩展为定义的最大限制。

提示:建议选择一个高于所需数量的最大值,以便平台可在必要时横向扩展以处理较大的负载,因为未使用的实例不会计费。

有关详细信息,请查看以下文档,因为工作流标准计划与 Azure Functions 高级计划在某些方面是相同的:

- 计划和 SKU 设置 - Azure Functions 高级计划
- 什么是云突发?

始终就绪实例 始终准备就绪并已预热的、可用于托管应用的实例的最小数量。 最小数量始终为 1。 若要更改此值,请查看本文稍后的编辑托管计划横向扩展设置

注意:任何超出计划大小的实例始终会计费,无论它们是否正在运行并已分配给你。

有关详细信息,请查看以下文档,因为工作流标准计划与 Azure Functions 高级计划在某些方面是相同的:始终就绪的实例数 - Azure Functions Premium 计划

预提取计数 逻辑应用资源中 AzureFunctionsJobHost__extensions__serviceBus__prefetchCount 应用设置的默认值,用于确定基础 ServiceBusProcessor 类使用的预提取计数。 若要为此应用设置添加或指定不同的值,请查看管理应用设置 - local.settings.json,例如:

- 名称AzureFunctionsJobHost__extensions__eventHubs__eventProcessorOptions__prefetchCount
- 值:800(无上限)

有关 prefetchCount 属性的详细信息,请查看以下文档:

- host.json 设置 - Azure Functions 的 Azure 服务总线绑定
- ServiceBusProcessor.PrefetchCount 属性
- ServiceBusProcessor 类

最大消息计数 逻辑应用资源中 AzureFunctionsJobHost__extensions__serviceBus__batchOptions__maxMessageCount 应用设置的默认值,用于确定在触发时要发送的最大消息数。 若要为此应用设置添加或指定不同的值,请查看管理应用设置 - local.settings.json,例如:

- 名称AzureFunctionsJobHost__extensions__serviceBus__batchOptions__maxMessageCount
- 值:800(无上限)

有关 maxMessageCount 属性的详细信息,请查看以下文档:host.json 设置 - Azure Functions 的 Azure 事件中心绑定

先决条件

  • Azure 帐户和订阅。 如果没有订阅,可以注册免费的 Azure 帐户

  • 源和目标资源或实体,它们应该存在于不同的 Azure 区域中,以便测试异地灾难恢复故障转移方案。 这些实体可能因你要使用的任务模板而异。 本文中的示例使用两个服务总线队列,它们位于不同的命名空间和 Azure 区域。

  • 创建复制任务时可以重用的“逻辑应用(标准版)”资源。 这样,你就可以专门为自己的复制任务自定义此资源,例如,根据复制方案的需求(如容量、吞吐量和缩放)选择托管计划和定价层。 虽然可以在创建复制任务时创建此资源,但无法更改区域、托管计划和定价层。 以下列表提供了先前创建的逻辑应用资源的其他原因和最佳做法:

    • 你可以在与复制任务中的源实体和目标实体不同的区域中创建此逻辑应用资源。

      目前,由于复制任务在 Azure 资源中以本机方式集成,因此提供了这一指导。 在实体之间创建复制任务,并选择创建新的逻辑应用资源而不是使用现有资源时,新的逻辑应用将在与源实体相同的区域中创建。 如果源区域变得不可用,复制任务也将无法工作。 在故障转移方案中,该任务也无法从新源(以前的目标实体)开始读取数据,而这正是主动-被动复制模式试图实现的目标。

    • 你可以通过选择托管计划和定价层,提前自定义此逻辑应用资源,而不是使用默认属性。 这样,复制任务每秒可以处理更多事件或消息,从而加快复制速度。 如果在创建复制任务时创建此资源,这些默认属性是固定不变的。

    • 你可以确保此逻辑应用资源仅包含复制任务工作流,尤其是在你要采用主动-被动复制模式时。 使用现有逻辑应用创建复制任务时,此选项会将任务(无状态工作流)添加到该逻辑应用资源。

    有关详细信息,请查看在 Azure 门户中使用单租户 Azure 逻辑应用(标准版)创建集成工作流

  • 可选:目标命名空间的连接字符串。 此选项允许目标存在于不同的订阅中,以便设置跨订阅复制。

    若要查找目标实体的连接字符串,请执行以下步骤:

    1. Azure 门户中,转到目标命名空间。

    2. 在命名空间导航菜单的“设置”下,选择“共享访问策略” 。

    3. 在随即打开的“共享访问策略”窗格中,在“策略”下,选择“RootManageSharedAccessKey”。

    4. 在随即打开的“SAS 策略: RootManageSharedAccessKey”窗格中,复制“主连接字符串”值。

    5. 将连接字符串保存在某处,以便稍后可以使用该字符串连接到目标命名空间。

命名约定

如果尚未创建复制任务或实体,请仔细考虑用于复制任务或实体的命名策略。 确保名称易于识别和区分。 例如,如果使用事件中心命名空间,复制任务将从源命名空间中的每个事件中心实例进行复制。 如果使用服务总线队列,下表提供了一个为实体和复制任务命名的示例:

源名称 示例 复制应用 示例 目标名称 示例
命名空间:<name>-sb-<region> fabrikam-sb-weu 逻辑应用:<name-source-region-target-region> fabrikam-rep-weu-wus 命名空间:<name>-sb-<region> fabrikam-sb-wus
队列:<name> jobs-transfer 工作流:<name> jobs-transfer-workflow 队列:<name> jobs

创建复制任务

此示例说明如何为服务总线队列创建复制任务。

  1. Azure 门户中,找到要用作源的服务总线命名空间。

  2. 在命名空间导航菜单的“自动化”部分中,选择“任务(预览版)”。

    Screenshot showing Azure portal and Azure Service Bus namespace menu with

  3. 在“任务”窗格上,选择“添加任务”,以便选择任务模板。

    Screenshot showing the

  4. 在“添加任务”窗格的“选择模板”下,在要创建的复制任务的模板中,选择“选择”。 如果没有出现下一页,请选择“下一步: 身份验证”。

    此示例继续选择“从服务总线队列复制到队列”任务模板,该模板在服务总线队列之间复制内容。

    Screenshot showing the

  5. 在“身份验证”选项卡的“连接”部分中,为任务中出现的每个连接选择“创建”,以便为所有连接提供身份验证凭据。 每个任务中的连接类型因任务而异。

    此示例显示与目标队列所在的目标服务总线命名空间建立连接的提示。 源服务总线命名空间存在连接。

    Screenshot showing selected

  6. 提供有关目标的必要信息,然后选择“创建”。

    对于此示例,请提供连接的显示名称,然后选择目标队列所在的服务总线命名空间。

    Screenshot showing

    提示

    也可以改为使用连接字符串创建连接。 此选项允许目标存在于不同的订阅中,以便设置跨订阅复制。 基于开始创建复制任务时所在位置的目标或源是动态配置的,因此你只需要连接目标。 若要使用连接字符串,请执行以下步骤:

    1. 在“连接”窗格中,选择“通过连接字符串连接”。

    2. 在“连接字符串”框中,输入目标命名空间的连接字符串。

    以下示例显示成功创建的连接:

    Screenshot showing

  7. 完成所有连接后,选择“下一步: 配置”。

  8. 在“配置”选项卡上,提供任务的名称以及任务所需的任何其他信息。

    注意

    创建后无法更改任务名称,因此请考虑使用一个在编辑基础工作流时仍适用的名称。 你对基础工作流所做的更改仅应用于已创建的任务,而不会应用于任务模板。

    例如,如果将任务命名为 fabrikam-rep-weu-wus,但随后出于不同目的编辑基础工作流,则无法更改任务名称使之匹配。

    1. 若要将任务工作流添加到现有的“逻辑应用(标准版)”资源,请从“逻辑应用”列表中选择现有的逻辑应用。 若要改为创建新的“逻辑应用(标准版)”资源,请在“逻辑应用”列表下,选择“新建”,并提供用于新逻辑应用的名称。

      注意

      如果在复制任务创建期间创建新的逻辑应用资源,逻辑应用将在与源实体相同的区域中创建,这会在源区域不可用且在故障转移方案中不起作用时引发问题。 最佳做法是在与源不同的区域中创建“逻辑应用(标准版)”资源。 创建复制任务时,请改为选择现有逻辑应用并将基础无状态工作流添加到现有逻辑应用。 有关详细信息,请查看先决条件

    2. 完成操作后,选择“查看 + 创建”。

    Screenshot showing

  9. 在“查看 + 创建”选项卡上,确认复制任务执行操作所需的 Azure 资源。

    • 如果选择为复制任务创建新的逻辑应用资源,该窗格将显示复制任务为执行操作而需要创建的 Azure 资源。 例如,这些资源包括 Azure 存储帐户,其中包含逻辑应用资源、工作流和其他运行时操作的配置信息。 例如,对于事件中心,此存储帐户包含检查点信息,以及源实体在源区域中断或不可用时在流中停止的位置或偏移量。

      以下示例显示了选择创建新逻辑应用时的“查看 + 创建”选项卡:

      Screenshot showing

    • 如果选择为复制任务重用现有逻辑应用资源,该窗格会显示复制任务将重用以执行操作的 Azure 资源。

      以下示例显示了选择重用现有逻辑应用时的“查看 + 创建”选项卡:

      Screenshot showing

    注意

    如果源、目标或两者都位于虚拟网络后面,则必须在创建任务后设置权限和访问权限。 在这种情况下,需要权限和访问权限,以便逻辑应用工作流可以执行复制任务。

  10. 准备就绪后,选择“创建”。

    你创建的任务(将自动启动并运行)现在出现在“任务”列表中。

    提示

    如果任务未立即显示,请尝试刷新任务列表或稍等一会再刷新。 在工具栏上,选择“刷新”。

    Screenshot showing

  11. 如果资源位于虚拟网络后面,请记住为逻辑应用资源和工作流设置访问这些资源所需的权限。

设置重试策略

为避免在复制关系任一端的某个可用性事件期间丢失数据,你需要配置重试策略以确保稳定性。 若要为复制任务配置重试策略,请查看有关 Azure 逻辑应用中的重试策略的文档以及编辑基础工作流的步骤。

查看任务历史记录

此示例显示如何查看任务的工作流运行历史记录及其状态、输入、输出和其他信息,并继续使用服务总线队列复制任务示例。

  1. Azure 门户中,找到具有你要查看的任务历史记录的 Azure 资源或实体。

    在此示例中,此资源是服务总线命名空间。

  2. 在资源导航菜单的“设置”下的“自动化”部分中,选择“任务(预览版)”。

  3. 在“任务”窗格中,找到要查看的任务。 在该任务的“运行”列中,选择“查看”。

    Screenshot showing the

    此步骤将为基础无状态工作流打开“概述”窗格,该工作流包含在标准逻辑应用资源中。

  4. 若要查看无状态工作流的运行历史记录,请在“概述”窗格工具栏上选择“启用调试模式”。

    “运行历史记录”选项卡显示该任务之前的、正在进行的和正在等待的运行及其标识符、状态、开始时间和运行持续时间。

    Screenshot showing a task's runs, their statuses, and other information.

    下表描述了运行的可能状态:

    状态标签 说明
    已取消 任务在运行时被取消。
    失败 任务至少有一个失败的操作,但是没有后续操作来处理该失败。
    正在运行 任务目前正在运行。
    成功 所有操作成功。 如果某个操作失败,但是有后续操作来处理该失败,那么,任务仍然可以成功完成。
    正在等待 运行尚未开始,并且已暂停,因为任务的早期实例仍在运行。
  5. 若要查看运行中每个步骤的状态和其他信息,请选择该运行。

    运行详细信息窗格随即打开,并显示已运行的基础工作流。

    • 工作流始终从触发器开始。 对于此任务,工作流将从等待消息到达源服务总线队列的服务总线触发器开始。

    • 每个步骤都会显示其状态和运行持续时间。 持续时间为 0 秒的步骤的运行时间不到 1 秒。

    Screenshot showing each step in the run, status, and run duration in the workflow.

  6. 若要查看每个步骤的输入和输出,请选择该步骤,这会打开一个窗格,其中显示该步骤的输入、输出和属性详细信息。

    此示例显示服务总线触发器的输入。

    Screenshot showing the trigger inputs, outputs, and properties.

若要了解如何生成自己的自动化工作流,以便独立于 Azure 资源的复制任务上下文来集成应用、数据、服务和系统,请查看在 Azure 门户中使用单租户 Azure 逻辑应用(标准版)创建集成工作流

监视复制任务

若要检查复制任务或基础逻辑应用工作流的性能和运行状况,可以使用 Application Insights,这是 Azure Monitor 中的一项功能。 Application Insights 应用程序映射是一种有用的可视化工具,可用于监视复制任务。 此映射是根据捕获的监视信息自动生成的,方便你探索复制任务源和目标传输的性能和可靠性。 若要获得日志详细信息的即时诊断见解和低延迟可视化,可以使用实时指标门户工具,这也是 Azure Monitor 中的一项功能。

编辑任务

若要更改任务,你可以使用以下选项:

内联编辑任务

  1. Azure 门户中,找到包含要更新的任务的资源。

  2. 在资源导航菜单的“自动化”部分中,选择“任务(预览版)”。

  3. 在任务列表中,找到要更新的任务。 打开任务的省略号 (...) 菜单,然后选择“内联编辑”。

    Screenshot showing the opened ellipses menu and the selected option,

    默认情况下,“身份验证”选项卡将出现,并显示现有连接。

  4. 若要为连接添加新的身份验证凭据或选择其他现有的身份验证凭据,请打开连接的省略号 (...) 菜单,然后选择“添加新的连接”或其他身份验证凭据(如果可用)。

    注意

    你只能编辑目标连接,而不能编辑源连接。

    Screenshot showing the

  5. 若要更新其他任务属性,请选择“下一步: 配置”。

    对于本示例中的任务,可以指定不同的源队列和目标队列。 但是,任务名称以及基础逻辑应用和工作流保持不变。

    Screenshot showing the

  6. 完成后,选择“保存”。

编辑任务的基础工作流

你可以编辑复制任务背后的基础工作流,这会更改你创建的任务的原始配置,但不会更改任务模板本身。 进行更改并保存后,编辑过的任务不再执行与原始任务相同的功能。 如果需要一个执行原始功能的任务,可能需要使用相同的模板创建一个新任务。 如果不想重新创建原始任务,请避免使用设计器更改任务背后的工作流。 相反,请创建一个“逻辑应用(标准版)”无状态工作流来满足你的集成需求。 有关详细信息,请查看在 Azure 门户中使用单租户 Azure 逻辑应用(标准版)创建集成工作流

  1. Azure 门户中,找到包含要更新的任务的资源。

  2. 在资源导航菜单的“自动化”部分中,选择“任务”。

  3. 在任务列表中,找到要更新的任务。 打开任务的省略号 (...) 菜单,然后选择“在逻辑应用中打开”。

    Screenshot showing the opened ellipses menu and the selected option,

    Azure 门户将上下文更改为设计器,你现在可以在其中编辑工作流。

    Screenshot showing designer and underlying workflow.

    你现在可以编辑工作流的触发器和操作,以及触发器和操作的属性。

  4. 若要查看触发器或操作的属性,请选择该触发器或操作。

    Screenshot showing the Service Bus trigger properties pane.

    在本示例中,触发器的 IsSessionsEnabled 属性更改为“是”。

  5. 若要保存更改,请在设计器工具栏上选择“保存”。

    Screenshot showing the designer toolbar and the selected

  6. 若要测试和运行已更新的工作流,请打开包含已更新的工作流的逻辑应用资源。 在工作流导航菜单上,选择“概述”>“运行触发器”>“运行”。

    运行完成后,设计器会显示工作流的运行详细信息。 若要查看每个步骤的输入和输出,请选择该步骤,这会打开一个窗格,其中显示该步骤的输入、输出和属性详细信息。

    此示例显示所选服务总线触发器的输入、输出和属性,以及更新的触发器属性值。

    Screenshot showing the workflow's run details with the trigger's inputs, outputs, and properties.

  7. 若要禁用工作流,使该任务不再继续运行,请在“概述”工具栏上选择“禁用”。 有关详细信息,请查看禁用或启用单租户工作流

为 Azure 事件中心设置故障转移

对于相同实体类型之间的 Azure 事件中心复制,异地灾难恢复需要执行从源实体到目标实体的故障转移,然后告知所有受影响的事件使用者和生成者使用变成新源的目标实体的终结点。 因此,如果发生灾难并且源实体发生故障转移,使用者和生成者(包括你的复制任务)将重定向到新源。 由复制任务创建的存储帐户包含检查点信息,以及源实体在源区域中断或不可用时在流中停止的位置或偏移量。

为确保存储帐户不包含来自原始源的任何旧信息,并且复制任务开始从新源流的开始位置读取和复制事件,必须手动清理原始源中的任何旧信息,并重新配置复制任务。

  1. Azure 门户中,打开复制任务背后的逻辑应用资源或基础工作流。

    注意

    逻辑应用资源应仅包含复制任务工作流。

  2. 在资源或工作流的导航菜单中选择“概述”。 在“概述”工具栏中,为工作流选择“禁用”或为逻辑应用资源选择“停止”。

  3. 若要查找由复制任务的基础逻辑应用资源用来存储检查点以及从源实体流式传输偏移量信息的存储帐户,请执行以下步骤:

    1. 在逻辑应用资源菜单中的“设置”下,选择“配置” 。

    2. 在“配置”窗格中的“应用程序设置”选项卡上,选择“AzureWebJobsStorage”应用设置 。

      此设置指定逻辑应用资源使用的连接字符串和存储帐户。

      注意

      如果该应用设置未显示在列表中,请选择“显示值”。

    3. 选择“AzureWebJobsStorage”应用设置,以便可以查看存储帐户名称。

    此示例演示如何查找此存储帐户的名称(此处为 storagefabrikamreplb0c):

    Screenshot showing the underlying logic app resource's

    1. 若要确认存储帐户资源是否存在,请在 Azure 门户搜索框中输入名称,然后选择存储帐户,例如:

    Screenshot showing the Azure portal search box with the storage account name entered.

  4. 现在,使用以下步骤删除包含源实体检查点和偏移量信息的文件夹:

    1. 如果没有最新版本,请下载、安装并打开最新的 Azure 存储资源管理器桌面客户端

      注意

      对于删除和清理任务,目前必须使用 Azure 存储资源管理器客户端,而不能使用 Azure 门户中的存储资源管理器、浏览器、编辑器或管理体验。

      尽管可以使用 PowerShell Remove-AzStorageDirectory 命令删除容器文件夹,但此命令仅对空文件夹有效。

    2. 如果尚未登录,请使用 Azure 帐户登录,并确保为存储帐户资源选择自己的 Azure 订阅。 有关详细信息,请查看存储资源管理器入门

    3. 在“资源管理器”窗口中你的 Azure 订阅名称下,转到“存储帐户”>“{你的存储帐户名称}”>“Blob 容器”>“azure-webjobs-eventhub” 。

      注意

      如果“azure-webjobs-eventhub”文件夹不存在,则表示复制任务尚未运行。 该文件夹仅在复制任务至少运行一次后才会出现。

      Screenshot showing the Azure Storage Explorer with the storage account and blob container open to show the selected

    4. 在打开的“azure-webjobs-eventhub”窗格中,选择事件中心命名空间文件夹,其名称格式如下:<source-Event-Hubs-namespace-name>.servicebus.windows.net

    5. 命名空间文件夹打开后,在“azure-webjobs-eventhub”窗格中选择“<former-source-entity-name>”文件夹。 从工具栏或文件夹的快捷菜单中选择“删除”,例如:

      Screenshot showing the former source Event Hubs entity folder selected with the

    6. 确认是否要删除该文件夹。

  5. 返回到复制任务背后的逻辑应用资源或工作流。 重新启动逻辑应用或再次启用工作流。

为了让生成者和使用者使用新的源终结点,你需要在一个易于访问和更新的位置提供有关新源实体的信息,以便其使用和查找。 如果生成者或使用者遇到频繁或持续出现的错误,他们应检查该位置并调整其配置。 共享该配置的方法有很多,DNS 和文件共享就是其中的两个示例。

有关异地灾难恢复的详细信息,请查看以下文档:

编辑托管计划横向扩展设置

  1. Azure 门户中,打开复制任务的基础逻辑应用资源。

  2. 在逻辑应用资源菜单中的“设置”下,选择“横向扩展(应用服务计划)” 。

    Screenshot showing the hosting plan settings for maximum bursts, minimum instances, always ready instances, and scale out limit enforcement.

  3. 根据你的方案需求,在“计划横向扩展”和“应用横向扩展”下,分别更改最大突发数和始终就绪的实例数的值 。

  4. 完成后,在“横向扩展(应用服务计划)”窗格工具栏上,选择“保存” 。

有关详细信息,请查看以下文档,因为工作流标准计划与 Azure Functions 高级计划在某些方面是相同的:

复制问题和失败

此部分介绍复制可能失败或停止工作的方式:

  • 消息大小限制

    确保发送小于 1 MB 的消息,因为复制任务会添加复制属性。 否则,如果在任务添加复制属性后,消息大小大于可发送到事件中心实体的事件大小,复制过程将失败。

    例如,假设消息大小为 1 MB。 任务添加复制属性后,消息大小大于 1 MB。 尝试发送消息的出站调用将失败。

  • 分区键

    如果事件中存在任何分区键,并且事件中心实例具有相同数量的分区,这些实例之间的复制将失败。

后续步骤