Azure 事件中心 异地灾难恢复

异地灾难恢复是Azure 事件中心中的灾难恢复功能,它持续将命名空间配置(事件中心、使用者组和设置)从主命名空间复制到辅助命名空间。 在区域性中断期间,您可以使用此功能启动从主命名空间到次要命名空间的故障转移。

注意

本文介绍仅复制元数据的异地灾难恢复功能。

具有可用性区域支持的全活动 Azure 事件中心群集模型针对硬件和数据中心的中断提供复原能力。 但是,如果灾难导致整个区域和所有区域不可用,则可以使用异地灾难恢复来恢复工作负载和应用程序配置。 异地灾难恢复可确保命名空间的整个配置(事件中心、使用者组和设置)在配对时从主命名空间持续复制到辅助命名空间。

本文中所述的概念和工作流适用于灾难方案,而不是临时中断。 有关Azure灾难恢复的详细讨论,请参阅Azure应用程序的灾难恢复。 使用异地灾难恢复,可以随时启动从主数据库到辅助副本的一次性故障转移。 故障转移操作会将该命名空间所选的别名指向次要命名空间。 移动后,将删除配对。 故障转移几乎是启动后立即发生的。

重要

  • 该功能可使用相同的配置即时实现操作连续性,但不会复制事件数据。 除非灾难导致所有区域丢失,否则故障转移后主事件中心保留的事件数据可恢复,并且还原访问后可以从那里获取历史事件。 若要在主动/主动配置中复制事件数据和运行相应的命名空间以应对中断和灾难,请不要依赖于此异地灾难恢复功能集,但请遵循 复制指南
  • 对主命名空间中实体的 Microsoft Entra 基于角色的访问控制 (RBAC) 分配不会复制到辅助命名空间。 在次要命名空间中手动创建角色分配,以保护对它们的访问。

基本概念和术语

灾难恢复功能可实现元数据灾难恢复,并且依赖于主要和次要灾难恢复命名空间。 异地灾难恢复功能仅适用于 标准高级层 。 不需要对连接字符串进行任何更改,因为连接是通过别名建立的。

本文涉及以下术语:

  • 别名:所设置的灾难恢复配置的名称。 该别名提供一个稳定的完全限定域名 (FQDN) 连接字符串。 应用程序使用此别名连接字符串连接到命名空间。
  • 主要/次要命名空间:别名所对应的命名空间。 主要命名空间是主动的,并且会接收消息(可以是现有的命名空间,也可以是新的命名空间)。 次要命名空间是“被动”的,不接收消息。 这两者之间的元数据保持同步,因此这两者可以无缝接受消息,而不必更改任何应用程序代码或连接字符串。 若要确保只有主动命名空间接收消息,必须使用别名。
  • 元数据:与命名空间关联的服务实体(例如事件中心和消费者组)及其属性。 仅自动复制实体及其设置。 消息和事件不会被复制。
  • 故障转移:激活辅助命名空间的过程。

支持的命名空间对

支持以下主要和辅助命名空间的组合:

主命名空间层级 允许的次级命名空间层级
标准 标准
高级 高级

重要

不能将位于同一专用群集中的命名空间进行配对。 可以将不同群集中的命名空间进行配对。

故障转移注意事项

规划故障转移时,请考虑以下几点:

  • 根据设计,事件中心异地灾难恢复不会复制数据。 因此,不能在辅助事件中心重用主事件中心的旧偏移值。 使用以下方法之一重启事件接收器:

    • EventPosition.FromStart() - 如果要读取辅助事件中心中的所有数据。
    • EventPosition.FromEnd() - 如果希望在连接到次要事件中心后读取所有新数据。
    • EventPosition.FromEnqueuedTime(dateTime) - 如果要从给定日期和时间开始读取辅助事件中心收到的所有数据。
  • 在故障转移规划中务必考虑到时间因素。 例如,如果失去连接的时间超过 15 到 20 分钟,你可能会决定启动故障转移。

  • 由于未复制任何数据,因此不会复制当前活动会话。 此外,重复检测和定时消息可能无法正常工作。 新会话、计划消息和新重复项的工作。

  • 应至少对复杂的分布式基础结构进行一次故障转移演练。

  • 同步实体可能需要一些时间,每分钟大约 50-100 个实体。

  • 当异地恢复配对处于活动状态时,辅助命名空间的管理平面的某些方面会变为只读。

  • 异地恢复配对处于活动状态时,辅助命名空间的数据平面为只读。 辅助命名空间的数据平面接受 GET 请求,以启用客户端连接和访问控制的验证。

专用终结点

本部分介绍将异地灾难恢复与使用专用终结点的命名空间配合使用时的注意事项。 若要概括性了解如何将专用终结点与事件中心一起使用,请参阅配置专用终结点

新配对

如果尝试在具有专用终结点的主命名空间与没有专用终结点的辅助命名空间之间创建配对,则配对会失败。 仅当主命名空间和辅助命名空间都具有专用终结点时,配对才会成功。 在主命名空间和辅助命名空间以及在其中创建专用终结点的虚拟网络上使用相同的配置。

注意

尝试将主命名空间与专用终结点和辅助命名空间配对时,验证过程仅检查辅助命名空间上是否存在专用终结点。 它不会检查该端点当前是否可用,或在故障转移后是否可用。 你需要负责确保具有专用终结点的辅助命名空间在故障转移后能够如预期一样工作。

若要测试主命名空间和辅助命名空间上的专用终结点配置是否相同,请从虚拟网络外部将读取请求(例如: Get Event Hub)发送到辅助命名空间,并验证是否从服务收到错误消息。

现有配对

如果主命名空间和辅助命名空间之间已存在配对,则主命名空间上的专用终结点创建会失败。 若要解决此错误,请先在辅助命名空间上创建专用终结点,然后为主命名空间创建一个专用终结点。

注意

虽然您可以以只读方式访问辅助命名空间,但可以更新专用终结点配置。

为应用程序和事件中心命名空间创建灾难恢复配置时,请为主事件中心命名空间和辅助事件中心命名空间创建专用终结点。 这些专用终结点连接到托管应用程序的主实例和辅助实例的虚拟网络。

假设你有两个虚拟网络, VNET-1 以及 VNET-2这些主要命名空间和辅助命名空间: EventHubs-Namespace1-PrimaryEventHubs-Namespace2-Secondary。 完成以下步骤:

  • EventHubs-Namespace1-Primary 上创建两个专用终结点,这两个专用终结点使用 VNET-1VNET-2 中的子网
  • EventHubs-Namespace2-Secondary 上创建两个专用终结点,这两个专用终结点使用 VNET-1VNET-2 中的相同子网

专用终结点和虚拟网络

此方法的优点是,故障转移可以在独立于事件中心命名空间的应用程序层进行。 请考虑下列情形:

仅限应用程序的故障转移: 在此方案中,应用程序在VNET-1中不存在,而是移动到VNET-2。 由于在VNET-1VNET-2上为主命名空间和辅助命名空间配置了两个专用终结点,因此应用程序能够正常运行。

事件中心仅涉及命名空间的故障转移:在此方案中,由于主要命名空间和辅助命名空间的虚拟网络上都配置了专用终结点,因此应用程序可以正常运行。

注意

如需虚拟网络异地灾难恢复的相关指导,请参阅虚拟网络 - 业务连续性

基于角色的访问控制(RBAC)

对主命名空间中实体的 Microsoft Entra 基于角色的访问控制 (RBAC) 分配不会复制到辅助命名空间。 在次要命名空间中手动创建角色分配,以保护对它们的访问。

查看以下示例或参考文档。