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

异地复制(公共预览版)

Azure 事件中心中有两项功能可提供异地灾难恢复。

  • 异地灾难恢复(元数据 DR),它只提供仅元数据复制。
  • 异地复制(公共预览版),它提供元数据和数据复制。

这些功能不应与可用性区域混淆。 这两种异地恢复功能都提供了 Azure区域(如美国东部和美国西部)之间的复原能力。 可用性区域支持在特定地理区域中提供复原能力,例如美国东部。 有关可用性区域的详细信息,请参阅事件中心可用性区域支持

重要

  • 此功能目前以公共预览版提供,因此不应在生产方案中使用。
  • 该公共预览版目前支持以下区域。
US 欧洲
美国中部 EUAP 意大利北部
西班牙中部
挪威东部

元数据灾难恢复与元数据和数据异地复制

元数据灾难恢复功能将命名空间的配置信息从主命名空间复制到辅助命名空间。 它支持一次性故障转移到次要区域。 在客户启动的故障转移期间,命名空间的别名将重新指向辅助命名空间,然后配对将会断开。 除了配置信息之外,不会复制任何数据,也不会复制权限分配。

更新的异地复制功能将配置信息和所有数据从主命名空间复制到一个或多个辅助命名空间。 执行故障转移时,所选辅助命名空间将成为主命名空间,而上一个主命名空间将成为辅助命名空间。 如果需要,用户可以执行故障转移回原始主命名空间。

本文的其余部分主要介绍异地复制功能。 有关元数据灾难恢复功能的详细信息,请参阅事件中心元数据的异地灾难恢复

异地复制

事件中心自助缩放专用群集中的命名空间支持异地复制功能的公共预览版。 可以将该功能与专用自助服务群集中的新命名空间或现有命名空间配合使用。 异地复制不支持以下功能:

  • 客户管理的密钥 (CMK)
  • 捕获的托管标识
  • 虚拟网络功能(服务终结点或专用终结点)
  • 大型消息支持(现在处于公开预览状态)
  • Kafka 事务(现在处于公开预览状态)

异地数据复制公共预览版的一些关键方面包括:

  • 主-辅助复制模型 - 异地复制基于主-辅助复制模型构建,在给定时间,只有一个主命名空间为事件生成者和事件使用者提供服务。
  • 事件中心使用配置的一致性级别,跨次要区域执行元数据、事件数据和使用者偏移量的完全托管字节到字节复制。
  • 稳定命名空间完全限定的域名 (FQDN) - 在执行升级时不需要更改 FQDN。
  • 复制一致性 - 有两种复制一致性设置,即同步和异步。
  • 用户管理的从次要区域到新主要区域的提升。

可通过以下两种方法将辅助实例更改为新的主实例:

  • 计划:将次要区域提升为主要区域,在新的主要区域同步前一个主实例拥有的所有数据之前,不会处理流量。
  • 强制:作为故障转移,次要区域将尽可能快地成为主要区域。 异地复制功能将所有数据和元数据从主要区域复制到所选的次要区域。 命名空间 FQDN 始终指向主要区域。

显示区域 A 为主要区域并且 B 为次要区域的示意图。

当你发起次要区域的提升时,FQDN 会指向选择作为新主要区域的区域。 然后,旧的主要区域将成为次要区域。 可以出于故障转移以外的其他原因将次要区域提升为新的主要区域。 这些原因可能包括应用程序升级、故障转移测试或任何其他原因。 在这些情况下,通常需要在这些活动完成后切换回来。

显示 B 为现有主要区域并且 A 将成为新的主要区域的示意图。

次要区域的添加或删除由客户决定。 目前有一些限制值得注意:

  • 无法支持次要区域中的只读视图。
  • 没有自动提升/故障转移功能。 所有提升都是客户发起的。
  • 次要区域必须与主要区域不同。 不能在同一区域中选择其他专用群集。
  • 公共预览版仅支持一个次要区域。

复制一致性

有两种复制一致性配置,即同步和异步。 请务必了解这两种配置之间的差异,因为它们会影响应用程序和数据一致性。

异步复制

启用异步复制后,所有消息都在主要区域中提交,然后发送到次要区域。 用户可以配置次要区域必须跟上的可接受的延隔时间。 当活动次要区域的滞后超出用户滞后配置时,主要区域会限制传入的发布请求。

同步复制

启用同步复制后,已发布的事件将复制到次要区域,它必须在消息提交到主要区域之前进行确认。 使用同步复制,应用程序将以发布、复制、确认和提交的速度进行发布。 这也意味着应用程序与这两个区域的可用性相关。 如果次要区域出现故障,则无法确认或提交消息。

复制一致性比较

使用同步复制:

  • 由于分布式提交,延迟更长。
  • 可用性与两个区域的可用性相关。 如果一个区域出现故障,则命名空间将不可用。
  • 接收的数据始终驻留在至少两个区域中(初始公共预览版中仅支持两个区域)。

同步复制为数据安全提供了最大的保证。 如果你有同步复制,则在提交时,它会提交到为异地复制配置的所有区域中。 但是,启用同步复制后,应用程序可用性可能会因这两个区域的可用性而降低。

启用异步复制不会对延迟产生太大影响,服务可用性也不受次要区域丢失的影响。 异步复制无法像同步复制那样绝对保证所有区域在提交数据之前都有数据。 你还可以设置在传入流量受到限制之前次要区域可以不同步的时间量。 该设置的范围为 5 分钟到 1,440 分钟,即一天。 如果你希望使用相距很远的区域,那么异步复制可能是最佳选择。

在执行异地复制配置后,可以更改复制一致性配置。 可以从同步更改为异步,也可以从异步更改为同步。 如果从同步更改为异步,则延迟和应用程序可用性会提高。 如果从异步更改为同步,则当滞后达到零时,次要区域将配置为同步。 如果你的运行由于任何原因而持续滞后,那么可能需要暂停发布服务器,以便滞后时间达到零,并且你的模式能够切换到同步。

启用同步复制的一般原因与数据的重要性、特定业务需求或合规性原因有关。 如果主要目标是应用程序可用性而不是数据保证,则异步一致性可能是更好的选择。

次要区域选择

若要启用异地复制功能,需要使用已启用异地复制功能的主要区域和次要区域。 还需要在主要区域和次要区域中拥有事件中心群集。

异地复制功能取决于能够将已发布的事件从主要区域复制到次要区域。 如果次要区域位于另一大洲,则会对从主要区域到次要区域的复制延迟产生重大影响。 如果出于可用性和可靠性原因使用异地复制,则最好尽可能让次要区域位于同一大洲。 为了更好地了解地理距离导致的延迟,可以从“Azure 网络往返延迟统计信息 | |Microsoft Learn”了解详细信息。

异地复制管理

使用异地复制功能,可配置要将配置和数据复制到的次要区域。 您可以:

  • 配置异地复制 - 在已启用异地复制功能集的区域中,可以在自助服务专用群集中的任何现有命名空间上配置次要区域。 也可以在同一专用群集上创建命名空间的过程中配置它。 若要选择次要区域,必须在此次要区域中具有专用群集,并且该次要区域还必须启用了异地复制功能集。
  • 配置复制一致性 - 同步和异步复制在配置异地复制时设置,但以后也可以进行切换。 使用异步一致性,可以配置允许次要区域滞后的时间量。
  • 触发提升/故障转移 - 所有提升或故障转移都是由客户发起的。 在提升期间,你可以选择从一开始就强制执行,甚至在提升开始后改变你的主意,并强制执行。
  • 删除次要区域 - 如果你希望随时删除主要区域和次要区域之间的地理配对,则可以这样做,次要区域中的数据将被删除。

监视数据复制

用户可以通过监视应用程序指标日志中的复制滞后指标来监视复制作业的进度。

  • 按照“监视 Azure 事件中心 - Azure 事件中心 | Microsoft Learn”中的说明,在事件中心命名空间中启用应用程序指标日志。

  • 启用应用程序指标日志后,需要先从命名空间生成和使用数据几分钟,然后才能开始查看日志。

  • 若要查看应用程序指标日志,请导航到事件中心页面的“监视”部分,然后选择左侧菜单中的“日志”。 可以使用以下查询查找主命名空间和辅助命名空间之间的复制滞后时间(以秒为单位)。

    AzureDiagnostics
      | where TimeGenerated > ago(1h)
      | where Category == "ApplicationMetricsLogs"
      | where ActivityName_s == "ReplicationLag
    
  • count_d 列指示主要区域和次要区域之间的复制滞后时间(以秒为单位)。

发布数据

事件发布应用程序可以通过异地复制命名空间的稳定命名空间 FQDN 将数据发布到异地复制命名空间。 事件发布方法与非异地灾难恢复情况相同,不需要更改客户端应用程序。

在以下情况下,事件发布可能不可用:

  • 在故障转移宽限期内,现有主要区域会拒绝发布到事件中心的任何新事件。
  • 当主要区域和次要区域之间的复制滞后时间达到最大复制滞后持续时间时,发布服务器入口工作负载可能会受到限制。 发布服务器应用程序无法直接访问次要区域中的任何命名空间。

使用数据

使用事件的应用程序可以通过异地复制命名空间的稳定命名空间 FQDN 来使用数据。 从故障转移启动到完成,不支持使用者操作。

检查点/偏移量管理

使用事件的应用程序可以继续维护偏移量管理,就像使用单个命名空间一样。

Kafka

偏移量将直接提交到事件中心,并且会跨区域复制偏移量。 因此,使用者可以从主要区域中离开的位置开始使用。

事件中心 SDK/AMQP

使用事件中心 SDK 的客户端需要升级到 2024 年 4 月版本的 SDK。 最新版本的事件中心 SDK 支持通过更新检查点进行故障转移。 检查点由具有检查点存储(例如 Azure Blob 存储或自定义存储解决方案)的用户进行管理。 如果存在故障转移,则必须在次要区域中提供检查点存储,以便客户端能够检索检查点数据并避免消息丢失。

定价

事件中心专用群集独立于异地复制进行定价。 对事件中心专用层使用异地复制要求在单独的区域中至少有两个专用群集。 用作异地复制的辅助实例的专用群集可用于其他工作负载。 异地复制的收费标准为:已发布的带宽 * 次要区域的数量。 在早期公共预览版中,将免除异地复制费用。

若要了解如何使用异地复制功能,请参阅使用异地复制