重要
Azure Cache for Redis宣布其所有 SKU 的停用时间表。 建议尽快将现有Azure Cache for Redis实例移动到Azure托管 Redis。
迁移指南:
有关停用的更多详细信息:
本文介绍如何使用 Azure 门户在一对Azure Cache for Redis实例上配置被动异地复制。
被动异地复制将两个高级层Azure Cache for Redis实例链接在一起,并创建主动-被动数据复制关系。 主备关系指的是两对缓存(主缓存和备缓存),它们的数据是同步的。 但是,只能将数据写入该对的一端,即主要缓存。 该对的另一端(辅助缓存)是只读的。
将“主动-被动”与“主动-主动”进行比较,在后者中,可以写入到该对实例的任一端,并且它将与另一端同步。
使用被动异地复制时,缓存实例通常位于不同的Azure区域中,但这不是必需的。 一个实例充当主实例,另一个实例充当辅助实例。 主缓存负责处理读取和写入请求,并将更改传播到辅助缓存。
故障转移不是自动的。 有关如何使用故障转移的详细信息,请参阅启动从主地理位置到次地理位置的故障转移。
注意
被动异地复制设计为灾难恢复解决方案。
可用范围
| 层 | 基本、标准 | 高级 |
|---|---|---|
| 可用 | 否 | 是 |
Passive 异地复制仅在 Azure Cache for Redis 的高级层中可用。
异地复制先决条件
若要在两个缓存之间配置异地复制,必须满足以下先决条件:
- 这两个缓存是高级层缓存。
- 两个缓存的每个主分片都只应有一个副本。
- 这两个缓存位于同一Azure订阅中。
- 辅助链接缓存的大小等于或大于主链接缓存的大小。 若要使用异地故障转移,两个缓存的大小必须相同。
- 这两个缓存都已创建且处于运行状态。
- 这两个缓存正在运行相同版本的 Redis 服务器。
注意
Azure 区域之间的数据传输按标准 bandwidth rate 收费。
异地复制不支持某些功能:
- 异地复制不支持持久性。
- 具有多个副本的缓存不能进行异地复制。
- 如果这两个缓存都启用了群集功能并且具有相同数目的分片,则支持群集。
- 支持同一虚拟网络(VNet)中的缓存。
- 在不同的 VNet 中支持缓存,但需注意事项。 有关详细信息,请参阅当缓存位于 VNet 中时是否可以使用异地复制?。
完成异地复制配置后,链接的缓存对会受到以下限制:
二级链接缓存为只读。 可以从其中读取数据,但不能向其中写入任何数据。 如果在 Geo-Primary 和 Geo-Secondary 之间进行完整数据同步时选择从 Geo-Secondary 实例读取,则 Geo-Secondary 实例会在对其进行的任何 Redis 操作中引发错误,直到完整的数据同步完成。 错误状态表明正在进行完整的数据同步。 此外,异地主要数据库或异地辅助数据库在某些重启情况下更新时,也会引发错误。 应生成从异地辅助数据库读取的应用程序,以便在异地辅助数据库引发此类错误时回退到异地主数据库。
添加链接前辅助链接缓存中的任何数据都会被删除。 但如果以后删除了异地复制,复制的数据则会保留在辅助链接缓存中。
链接缓存时无法缩放任一缓存。
如果缓存已启用群集功能,则无法更改分片数目。
无法在任一缓存上启用持久化。
可以从任一缓存导出。
无法导入到次级链接缓存。
只有在取消链接缓存之后,才可以删除任一链接缓存或包含它们的资源组。 有关详细信息,请参阅尝试删除链接缓存时为何操作会失败?
如果缓存位于不同的区域,网络传出费用将适用于在区域之间移动的数据。 有关详细信息,请参阅 跨 Azure 区域复制数据的成本是多少?
故障转移不是自动的。 您必须启动从主链接缓存到辅助链接缓存的故障转移过程。 有关如何使用故障转移的详细信息,请参阅启动从地理主节点到地理次节点的故障转移。
无法将专用链接添加到已异地复制的缓存。 若要将专用链接添加到异地复制的缓存,请执行以下操作:1. 取消链接异地复制。 2. 添加专用链接。 3. 最后,重新连接地理复制。
添加异地复制链接
若要将两个缓存链接到一起进行异地复制,请先在要用作主要链接缓存的缓存的“资源”菜单中选择“异地复制”。 接下来,在工作窗格中选择“添加缓存复制链接”。
在“兼容的缓存”列表中,选择所需辅助缓存的名称。 如果列表中未显示辅助缓存,请确认是否符合辅助缓存的异地复制先决条件。 若要按区域筛选缓存,请在地图中选择相应的区域,以便仅显示“兼容的缓存”列表中的缓存。
还可以使用上下文菜单启动链接过程或查看辅助缓存的详细信息。
选择“链接”将两个缓存链接在一起并开始复制过程。
可以使用“资源”菜单中的“异地复制”查看复制过程的进度。
还可以使用“资源”菜单中的“概述”查看主缓存和辅助缓存的链接状态。
复制过程完成后,“链接预配状态”将更改为“已成功”。
在链接过程中,主链接缓存仍然可用。 在链接过程完成之前,辅助链接缓存将不可用。
地理主 URL
链接缓存后,将为每个缓存生成一个始终指向地理主要缓存的 URL。 如果启动从异地主要缓存到异地辅助缓存的故障转移,则 URL 将保持不变,并且基础 DNS 记录将自动更新以指向新的异地主要缓存。
显示了三个 URL:
- “地理主 URL” 是格式为 的代理 URL。 该 URL 始终指向异地复制对中当前的主缓存。
- “当前地理主缓存”是指当前作为地理主缓存的直接地址。 该地址是
redis.cache.chinacloudapi.cn而不是geo.redis.cache.chinacloudapi.cn。 如果启动故障转移,则此字段中列出的地址会更改。 - “当前异地辅助缓存”是当前异地辅助缓存的直接地址。 该地址是
redis.cache.chinacloudapi.cn而不是geo.redis.cache.chinacloudapi.cn。 如果触发故障转移,该字段中列出的地址会更改。
启动从异地主缓存到异地辅助缓存的故障转移
只需选择一次,即可触发从异地主缓存到异地辅助缓存的故障转移。
这会导致执行以下步骤:
- 将地理次级缓存升级为地理主要缓存。
- 更新 DNS 记录以将异地主要缓存 URL 重定向到新的异地主要缓存。
- 旧的异地主要缓存将降级为辅助缓存,并尝试构建指向新异地主要缓存的链接。
异地故障转移过程需要几分钟才能完成。
启动异地故障转移之前要检查的设置
启动故障转移后,异地主缓存和异地辅助缓存会交换。 如果新异地主要缓存的配置不同于异地辅助缓存,则可能会给应用程序造成问题。
请务必检查以下各项:
- 如果在任一缓存中使用防火墙,请确保防火墙设置相似,以免出现连接问题。
- 确保两个缓存使用相同的端口和 TLS/SSL 设置
- 异地主要缓存和异地辅助缓存具有不同的访问密钥。 如果已触发故障转移事件,请确保应用程序可以更新它使用的访问密钥,以匹配新的主地理位置。 或者,使用 Microsoft Entra 令牌进行缓存身份验证,这样就可以对异地主缓存和异地辅助缓存使用相同的身份验证凭据。
在尽量减少数据丢失的前提下进行故障转移
异地故障转移事件可能会在转换期间造成数据不一致性,尤其是客户端在故障转移过程中与旧异地主要缓存保持连接的情况下。 可以使用以下提示最大程度地减少计划性异地故障转移事件中的数据丢失:
- 检查异地复制数据同步偏移量指标。 该指标由当前地理主缓存发出。 该指标表示仍有多少数据尚未复制到地理主节点。 如果可能,请仅在度量显示有待写入的字节数小于 14 时才启动故障转移。
- 在启动故障转移之前,在当前异地主要缓存中运行
CLIENT PAUSE命令。 运行CLIENT PAUSE会阻止任何新的写入请求,而是将超时失败返回给Azure Cache for Redis客户端。CLIENT PAUSE命令要求提供以毫秒为单位的超时期限。 请确保提供足够长的超时时间,以便故障转移能够发生。 将暂停值设置为 30 分钟(1,800,000 毫秒)左右是一个不错的起点。 您可以根据需要降低该数字。
无需运行 CLIENT UNPAUSE 命令,因为新的地理主节点会保留客户端的暂停状态。
注意
在异地故障转移方案中,建议对缓存使用基于 Microsoft Entra ID 的身份验证,因为它消除了管理异地主缓存和异地辅助缓存的不同访问密钥的难度。
删除异地复制链接
若要删除两个缓存之间的链接并停止异地复制,请从左侧的“异地复制”中选择“取消链接缓存”。
取消链接过程完成后,辅助缓存可用于读取和写入。
注意
在删除异地复制链接后,从主链接缓存复制的数据保留在辅助缓存中。
异地复制常见问题解答
- 是否可以通过标准层或基本层缓存使用异地复制?
- 在链接或取消链接过程中是否可以使用缓存?
- 启动故障转移后,何时可以写入新的地理主节点?
- 是否可以跟踪异地复制链接的运行状况?
- 是否可以链接两个以上的缓存?
- 是否可以链接不同Azure订阅中的两个缓存?
- 是否可以链接不同大小的两个缓存?
- 是否可以在启用群集时使用异地复制?
- 当缓存位于 VNet 中时是否可以使用异地复制?
- Redis 异地复制的同步计划是什么?
- 异地复制需要多长时间?
- 复制恢复点是否受保证?
- 可以使用 PowerShell 或 Azure CLI 来管理异地复制?
- 跨Azure区域复制数据的成本是多少?
- 尝试删除链接缓存时为何操作会失败?
- 应为辅助链接缓存选择哪个区域?
- 能否为防火墙配置异地复制?
是否可以通过标准层或基本层缓存使用异地复制?
不,被动异地复制仅在高级版本中可用。
在链接或取消链接过程中是否可以使用缓存?
- 在链接过程完成之前,主链接缓存保持可用。
- 在链接过程完成之前,辅助链接缓存将不可用。
- 在取消链接过程完成之前,这两个缓存保持可用。
启动故障转移后,何时能写入新的地理主服务器?
启动故障转移过程时,会看到链接预配状态更新为“正在删除”,这表示正在清理以前的链接。 完成此过程后,链接预配状态将更新为正在创建。 这表示新的异地主缓存已启动并正在运行,并正在尝试重新建立旧异地主缓存的异地复制链接。 此时,可以立即连接到新的异地主缓存实例进行读取和写入。
是否可以跟踪异地复制链接的运行状况?
是的,可以使用多个指标来帮助跟踪异地复制的状态。 Azure门户中提供了这些指标。
- “异地复制运行状况”显示异地复制链接的健康状态。 如果地理主缓存或地理次缓存关闭,此链接将显示为不正常。 此状态通常是由标准修补操作造成的,但也可能指示出现了故障。
- “异地复制连接滞后时间”显示自上次在异地主要缓存与异地辅助缓存之间成功同步数据以来经过的时间。
- 地理复制数据同步偏移量显示尚未同步到地理辅助缓存的数据量。
- “异地复制完全同步事件已启动”指示已在异地主要缓存与异地辅助缓存之间启动完全同步操作。 如果标准复制进度跟不上新的写入数量,就会发生这种情况。
- “异地复制完全同步事件已完成”表示已完成完全同步操作。
还有一个名为“异地复制仪表板”的预生成工作簿,其中在一个视图内包含了所有异地复制运行状况指标。 建议使用此视图,因为它聚合了仅从异地主缓存实例或异地辅助缓存实例发出的信息。
是否可以链接两个以上的缓存?
不可以,使用被动异地复制时,只能将两个缓存链接到一起。
是否可以链接来自不同Azure订阅的两个缓存?
否,这两个缓存必须位于同一Azure订阅中。
是否可以链接不同大小的两个缓存?
可以,但辅助链接缓存必须大于主链接缓存。 但是,如果缓存的大小不一致,则你无法使用故障转移功能。
是否可以在启用群集时使用异地复制?
可以,但两个缓存的分片数必须相同。
当缓存位于 VNet 中时是否可以使用异地复制?
在大多数情况下,我们建议优先使用 Azure 专用链接,而不是 VNet 注入。 有关详细信息,请参阅从 VNet 注入缓存到 专用链接 缓存。
尽管在技术上仍可以在异地复制缓存时使用 VNet 注入,但我们建议Azure 专用链接。
重要
Azure Cache for Redis建议使用Azure 专用链接,这简化了网络体系结构,并保护Azure中的终结点之间的连接。 可以通过专用终结点从虚拟网络连接到Azure缓存实例,该终结点在虚拟网络中的子网中分配了专用 IP 地址。 Azure 专用链接在所有层级上提供,包括 Azure Policy 支持和简化的网络安全组规则管理。 若要了解详细信息,请参阅 专用链接 文档。 若要将 VNet 注入缓存迁移到 专用链接,请参阅 Migrate 从 VNet 注入缓存迁移到专用链接缓存。
若要详细了解对使用 VNet 进行异地复制的支持,请参阅将 VNet 注入与高级缓存配合使用以进行异地复制。
什么是 Redis 异地复制的复制时间表?
复制为持续和异步。 它不会按特定计划发生。 针对主缓存的所有写入会即时异步复制到辅助缓存。
异地复制需要多长时间?
复制是增量、异步且持续的,所需时间与区域间的延迟并无太大区别。 在某些情况下,辅助缓存可能需要对主缓存中的数据进行完全同步。 在这种情况下,复制时间取决于多个因素,例如:主缓存上的负载、可用网络带宽和区域间的延迟。 我们发现,完整复制 53 GB 的地理复制对可能需要 5 至 10 分钟。 可以使用 Azure 监视器中的 Geo Replication 数据同步 Offset 指标跟踪尚未复制的数据量。
复制恢复点是否受保证?
对于异地复制模式下的缓存,会禁用持久性。 如果取消双向复制对的链接(例如,客户发起了故障转移),那么作为辅助的链接缓存会保留同一时间点之前的同步数据。 在此类情况下,无法保证恢复点。
若要获取某个恢复点,请从任一缓存导出。 以后可以导入到主链接缓存。
是否可以使用 PowerShell 或Azure CLI来管理异地复制?
可以,可以使用Azure门户、PowerShell 或Azure CLI管理异地复制。 有关详细信息,请参阅 PowerShell 文档或 Azure CLI docs。
跨Azure区域复制数据需要花费多少?
使用异地复制时,主链接缓存中的数据会被复制到辅助链接缓存中。 如果两个链接缓存位于同一区域,则数据传输不会产生费用。 如果两个链接缓存位于不同的区域,则数据传输费用是跨任一区域移动数据所产生的网络传出费用。 有关详细信息,请参阅带宽定价详细信息。
尝试删除链接缓存时为何操作会失败?
在删除异地复制链接之前,无法删除已链接的异地复制缓存及其资源组。 如果尝试删除包含一个或两个链接缓存的资源组,则会删除该资源组中的其他资源,但该资源组保持 deleting 状态,而资源组中的任意链接缓存则保持 running 状态。 若要完全删除资源组及其包含的链接缓存,请根据删除异地复制链接中所述取消链接这些缓存。
应为辅助链接缓存选择哪个区域?
一般情况下,我们建议缓存与访问缓存的应用程序位于同一Azure区域中。 对于具有单独主要区域和备用区域的应用程序,我们建议将主缓存和辅缓存设在这些区域。 有关配对区域的详细信息,请参阅 Best Practices - Azure配对区域。
可以为防火墙配置地理复制吗?
能,可以为防火墙配置异地复制。 要使异地复制与防火墙一起工作,请确保将辅助缓存的 IP 地址添加到主缓存的防火墙规则。 但是,如果在缓存上禁用了公用网络访问,并且仅启用了专用终结点,则不支持在缓存上使用防火墙。
后续步骤
详细了解Azure Cache for Redis功能。