你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure Cache for Redis 企业实例配置活动异地复制
本文介绍了如何使用 Azure 门户配置活动异地复制的缓存。
活动异地复制最多可将 5 个 Azure Cache for Redis 企业实例分组到一个跨 Azure 区域的缓存中。 所有实例都充当本地主缓存。 应用程序决定将哪个或哪些实例用于读取和写入请求。
注意
Azure 区域之间的数据传输按标准带宽费率收费。
可用范围
层 | 基本、标准 | 高级 | Enterprise、Enterprise Flash |
---|---|---|---|
可用 | 否 | No | 是 |
Azure Cache for Redis 高级层提供称为被动异地复制的异地复制版本。 被动异地复制提供主动-被动配置。
活动异地复制先决条件
使用活动异地复制时存在一些限制:
- 仅支持 RediSearch 和 RedisJSON 模块
- 在 Enterprise Flash 层上,只能使用“无逐出”逐出策略。 Enterprise 层支持所有逐出策略。
- 不支持数据持久性,因为活动异地复制提供了卓越的体验。
- 无法将现有(即正在运行的)缓存添加到异地复制组。 只能在创建缓存时将缓存添加到异地复制组。
- 异地复制组中的所有缓存必须具有相同的配置。 例如,所有缓存必须具有相同的 SKU、容量、逐出策略、群集策略、模块和 TLS 设置。
- 使用活动异地复制时,不能使用
FLUSHALL
和FLUSHDB
Redis 命令。 禁止命令可防止意外删除数据。 请改用门户中的刷新操作。 - E1 SKU 不支持活动异地复制。
创建或加入活动异地复制组
新建 Azure Cache for Redis 资源时,请选择“高级”选项卡。完成包含群集策略的表单的第一部分。 有关选择“群集策略”的详细信息,请参阅 Enterprise 上的群集。
选择“配置”以设置“活动异地复制” 。
为第一个缓存实例新建复制组。 或从列表中选择一个现有复制组。
选择“配置”以完成。
等待第一个缓存创建成功。 完成后,在“活动异地复制”部分,你将看到已设置为“已配置”。 对异地复制组中的每个缓存实例重复执行上述步骤。
从活动异地复制组中删除
若要从活动异地复制组中删除缓存实例,只需删除相应实例即可。 其余实例随后会自动重新配置自身。
在发生区域中断时强制取消链接
如果复制组中的其中一个缓存因区域中断而不可用,你可以将不可用的缓存强制从复制组中删除。
应删除不可用的缓存,因为复制组中剩余的缓存将开始存储尚未共享到不可用缓存的元数据。 发生这种情况时,复制组中的可用缓存可能会耗尽内存。
转到 Azure 门户,在复制组中选择一个仍然可用的缓存。
选择左侧“资源”菜单中的“活动异地复制”,查看工作窗格中的设置。
通过选中此框,选择需要强制取消链接的缓存。
选择“强制取消链接”,然后选择“确定”进行确认。
受影响区域的可用性还原后,需要删除受影响的缓存并重新创建该缓存,以将其添加回复制组。
使用 Azure CLI 或 PowerShell 设置活动异地复制
Azure CLI
使用 Azure CLI 创建新的缓存和异地复制组,或将新缓存添加到现有异地复制组。 有关详细信息,请参阅 az redisenterprise create。
使用 Azure CLI 在新的异地复制组中创建新的 Enterprise 实例
此示例在美国东部区域创建一个名为 Cache1 的新 Azure Cache for Redis Enterprise E10 缓存实例。 然后,将缓存添加到名为 replicationGroup 的新活动异地复制组:
az redisenterprise create --location "East US" --cluster-name "Cache1" --sku "Enterprise_E10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"
要正确配置活动异地复制,必须使用 --linked-databases
参数添加正在创建的缓存实例的 ID。 该 ID 的格式为:
/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default
使用 Azure CLI 在现有异地复制组中创建新的 Enterprise 实例
此示例在美国西部区域创建名为 Cache2 的新 Enterprise E10 缓存实例。 然后,该脚本会将缓存添加到在上一过程中创建的 replicationGroup
活动异地复制组。 这样,它就可以通过主动-主动配置与 Cache1 链接。
az redisenterprise create --location "West US" --cluster-name "Cache2" --sku "Enterprise_E10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"
与以前一样,需要使用 --linked-databases
参数列出 Cache1 和 Cache2。
Azure PowerShell
使用 Azure PowerShell 创建新的缓存和异地复制组,或将新的缓存添加到现有异地复制组。 有关详细信息,请参阅 New-AzRedisEnterpriseCache。
使用 PowerShell 在新的异地复制组中创建新的 Enterprise 实例
此示例在美国东部区域创建一个名为 Cache1 的新 Azure Cache for Redis Enterprise E10 缓存实例。 然后,将缓存添加到名为 replicationGroup 的新活动异地复制组:
New-AzRedisEnterpriseCache -Name "Cache1" -ResourceGroupName "myResourceGroup" -Location "East US" -Sku "Enterprise_E10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}'
要正确配置活动异地复制,必须使用 -LinkedDatabase
参数添加正在创建的缓存实例的 ID。 该 ID 的格式为:
/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default
使用 PowerShell 在现有异地复制组中创建新的 Enterprise 实例
此示例在美国西部区域创建名为 Cache2 的新 Enterprise E10 缓存实例。 然后,该脚本会将缓存添加到在上一过程中创建的“replicationGroup”活动异地复制组。 它会链接主动-主动配置中的两个缓存 Cache1 和 Cache2。
New-AzRedisEnterpriseCache -Name "Cache2" -ResourceGroupName "myResourceGroup" -Location "West US" -Sku "Enterprise_E10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}', '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"}'
与以前一样,需要使用 -LinkedDatabase
参数列出 Cache1 和 Cache2。
缩放异地复制组中的实例
可以扩展配置为使用活动异地复制的实例。 但是,具有不同缓存大小的异地复制组可能会引发问题。 若要防止出现这些问题,异地复制组中所有缓存的大小和容量必须相同。
由于很难同时扩展异地复制组中的所有实例,因此 Azure Redis 缓存具有锁定机制。 如果扩展异地复制组中的一个实例,则底层虚拟机也会扩展,但可用内存将限制在原始大小,直到对其他实例完成扩展为止。 其余实例的任何其他扩展操作都将被锁定,直到这些实例具有与扩展的第一个缓存相同的配置。
缩放示例
例如,异地复制组中可能有三个实例,其均为 Enterprise E10 实例:
实例名 | Redis00 | Redis01 | Redis02 |
---|---|---|---|
类型 | Enterprise E10 | Enterprise E10 | Enterprise E10 |
假设要将此异地复制组中的每个实例扩展为 Enterprise E20 实例。 首先,将其中一个缓存扩展到 E20:
实例名 | Redis00 | Redis01 | Redis02 |
---|---|---|---|
类型 | Enterprise E20 | Enterprise E10 | Enterprise E10 |
此时,Redis01
和 Redis02
实例只能纵向扩展到 Enterprise E20 实例。 所有其他缩放操作都会被阻止。
注意
此时 Redis00
实例的进一步扩展尚未受到阻止。 但是在 Redis01
或 Redis02
扩展为 Enterprise E20 后,针对该实例的扩展操作就会被阻止。
将每个实例扩展到同一层级和大小后,将移除所有扩展锁定:
实例名 | Redis00 | Redis01 | Redis02 |
---|---|---|---|
类型 | Enterprise E20 | Enterprise E20 | Enterprise E20 |
刷新操作
由于可能会意外丢失数据,因此不能将 FLUSHALL
和 FLUSHDB
Redis 命令用于驻留在异地复制组中的任何缓存实例。 请改用位于“活动异地复制”工作窗格顶部的“刷新缓存”按钮。
使用 Azure CLI 或 PowerShell 刷新缓存
Azure CLI 和 PowerShell 还可用于触发刷新操作。 有关使用 Azure CLI 的详细信息,请参阅 az redisenterprise database flush。 有关使用 PowerShell 的详细信息,请参阅 Invoke-AzRedisEnterpriseCacheDatabaseFlush。
重要
使用“刷新缓存”功能时要小心。 选择该按钮会删除当前缓存和异地复制组中链接的所有缓存中的所有数据。
使用 Azure 基于角色的访问控制管理对功能的访问。 应仅向授权用户授予刷新所有缓存的访问权限。
后续步骤
了解有关 Azure Cache for Redis 功能的详细信息。