启用适用于 Azure Cache for Redis 的区域冗余

在本文中,你将了解如何使用 Azure 门户配置区域冗余 Azure 缓存实例。

注意

在不支持区域的地区中,用于启用区域冗余的选项处于禁用状态。 有关支持地区的区域列表,请参阅 Azure Cache for Redis - 支持地区的区域

Azure Cache for Redis 标准层(预览版)和高级层通过将每个缓存托管在两个专用虚拟机 (VM) 上来提供内置冗余。 即使这些 VM 位于单独的 Azure 容错域和更新域中且高度可用,它们也容易受到数据中心级别故障的影响。 Azure Cache for Redis 还支持其标准层(预览版)和高级层中的区域冗余。 区域冗余缓存在分布于多个可用性区域间的 VM 上运行。 它提供更高的复原能力和可用性。

先决条件

创建缓存

若要创建缓存,请执行以下步骤:

  1. 登录到 Azure 门户,然后选择“创建资源”。

  2. 在“新建”页上选择“数据库”,然后选择“Azure Cache for Redis”。

    选择 Azure Cache for Redis。

  3. 在“基本信息”页面上,配置新缓存的设置。

    设置 建议值 描述
    订阅 选择订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。
    资源组 选择一个资源组,或者选择“新建”并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    DNS 名称 输入任何全局唯一的名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名是 >。
    位置 选择一个位置。 选择使用缓存的其他服务附近的区域
    缓存类型 选择高级层缓存。 定价层决定可用于缓存的大小、性能和功能。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
  4. 支持可用性区域的地区中,标准层级缓存始终使用自动区域分配创建为区域冗余的缓存。 显示“高级”选项卡的屏幕截图,其中标准缓存的可用性区域带有红色边框。

  5. 对于高级层缓存,在“资源”菜单中选择“高级”。 在支持地区的区域中,可以通过多种方式为此层级启用区域冗余。

    1. 使用自动区域分配
      • “自动分配区域”是为“可用性区域”选择的默认选项。 显示“高级”选项卡的屏幕截图,其中高级缓存的“可用性区域”带有红色边框。
    2. 使用用户定义的区域分配
      • 对于高级层缓存,“可用性区域”设置可由用户编辑,他们可以使用该设置来选择非区域或者为缓存手动选择区域。
    • 选择“NoZones”:显示“高级”选项卡的屏幕截图,其中“可用性区域”带有红色边框,并为高级缓存选择了“无”选项。
    • 手动选择区域时,可用性区域的数量必须始终小于或等于缓存的节点总数:屏幕截图显示可用性区域计数设置为 1,副本计数设置为 3。
  6. 配置有关群集和/或 RDB 数据存储的设置。

    注意

    在有多个副本的情况下区域冗余不支持仅追加文件 (AOF) 持久性。

  7. 选择创建

    创建缓存需要花费一点时间。 可以在 Azure Cache for Redis 的“概述”页上监视进度。 如果状态显示为正在运行,则表示该缓存可供使用。

自动区域分配

Azure Cache for Redis 会根据每个分片的节点数和区域内的分区支持,自动为用户分配区域,使缓存分布于多个区域,实现高可用性。

使用此类型的分配,用户无需担心手动选择区域。 分配给缓存的实际区域是从用户那里分离出来的。 Azure 确保缓存的主节点和副本节点分布在不同的区域以实现高可用性。

可以在以下位置找到不同类型的区域分配的 REST API 规范:创建 - ZonalAllocationPolicy

如果未在请求中传递属性 ZonalAllocationPolicy,Azure 会根据地区的区域性可支持性和容量为缓存分配其值。

支持的 ZonalAllocationPolicy 属性值包括:

  1. 自动

可以传递此值,让 Azure 自动将区域分配给缓存。

在支持地区的区域中,如果请求中未传递 ZonalAllocationPolicy,则从 2024-11-01 API 版本开始,该选项将作为缓存的默认选项

  1. UserDefined

用户只能为高级缓存传递此值,并且可以在手动选择区域时在请求正文中传递此值。

  1. NoZones

用户只能为高级缓存传递此值。 在不支持分区的地区中,这是唯一支持的值。

  • 用户无法在标准缓存请求中传递此值,因为它们无法显式选择非区域标准缓存。

如果未在请求中传递 ZonalAllocationPolicy,则会选择此值作为缓存的默认选项:

  • 不支持区域的地区(无论使用的 API 版本如何)。
  • 如果使用的 API 版本小于 2024-11-01,则为所有地区(不考虑区域支持)。

重要

一旦为缓存启用“Automatic 区域分配”,将无法修改此设置。

重要

  • 从 2024-11-01 API 版本开始,选择“Automatic 区域分配”作为高级缓存和标准缓存的默认选项。 在极少数情况下,如果没有足够的区域容量而无法至少分配两个区域,并且用户未在请求中传递 ZonalAllocationPolicy,则 Azure 将创建一个非区域缓存,用户可以通过在响应中检查 ZonalAllocationPolicy 属性来进行验证。
    • 因此,建议不要在创建缓存时在请求正文中传递 ZonalAllocationPolicy,因为它将使 Azure 能够基于区域的区域性可支持性和容量在“Automatic”、“NoZones”中为缓存选择最佳选项。 否则,如果用户想要显式使用特定的区域分配策略,则可以传递 ZonalAllocationPolicy

重要

用户可以通过将 ZonalAllocationPolicy 设置为“自动”,将现有的非地区或缓存更新为手动选择的地区以使用自动地区分配。 有关更新过程的更多信息,请参阅将 Azure Cache for Redis 实例迁移到可用性区域支持

区域冗余常见问题解答

为什么在创建高级缓存时无法启用区域冗余?

区域冗余只在具有可用性区域的 Azure 区域中可用。 请参阅具有可用性区域的 Azure 区域,以获取最新列表。

为什么在缓存创建过程中无法选择所有三个区域?

在默认情况下,高级缓存有一个主要节点和一个副本节点。 若要为两个以上可用性区域配置区域冗余,需要将更多副本添加到要创建的缓存。 可用性区域的总数不能超过缓存中节点的组合计数(包括主节点和副本节点)。

是否可以更新现有的标准或高级缓存以使用区域冗余?

  • 是的,支持就地更新现有的标准缓存或高级缓存以使用区域冗余。 用户可以通过导航到“资源”菜单上的“高级设置”,然后选中“自动分配区域”、单击“保存”按钮来启用它。 启用区域冗余后,将会无法禁用区域冗余。

  • 有关详细信息,请参阅将 Azure Cache for Redis 实例迁移到可用性区域支持

  • 还可以在更新缓存时通过在请求正文中将 ZonalAllocationPolicy 传递为 Automatic 来完成此操作。 有关使用 REST API 的更新过程的详细信息,请参阅更新 - ZonalAllocationPolicy

    • 不支持将 ZonalAllocationPolicy 更新为除 Automatic 以外的任何其他值。

    重要

    一旦为缓存启用“Automatic 区域分配”,将无法修改此设置。

    重要

    对于异地复制缓存或带有 VNet 注入的缓存,目前不支持为现有缓存(通过不同的区域分配创建)启用自动区域分配。

跨 Azure 可用性区域复制数据的费用是多少?

如果你的缓存使用的区域冗余配置了多个可用性区域,则数据会从一个区域的主缓存节点复制到另一个区域中的其他节点。 数据传输费用是在所选可用性区域间移动的数据的网络流出费用。 有关详细信息,请参阅带宽定价详细信息

后续步骤

了解有关 Azure Cache for Redis 功能的详细信息。