你当前正在访问 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 |
---|---|---|---|
可用 | 否 | 否 | 是 |
Azure Cache for Redis 高级层提供称为被动异地复制的异地复制版本。 被动异地复制提供主动-被动配置。
活动异地复制先决条件
使用活动异地复制时存在一些限制:
- 仅支持 RediSearch 和 RedisJSON 模块
- 在 Enterprise Flash 层上,只能使用“无逐出”逐出策略。 Enterprise 层支持所有逐出策略。
- 不支持数据持久性,因为活动异地复制提供了卓越的体验。
- 无法将现有(即正在运行的)缓存添加到异地复制组。 只能在创建缓存时将缓存添加到异地复制组。
- 异地复制组中的所有缓存必须具有相同的配置。 例如,所有缓存必须具有相同的 SKU、容量、逐出策略、群集策略、模块和 TLS 设置。
- 使用活动异地复制时,不能使用
FLUSHALL
和FLUSHDB
Redis 命令。 禁止命令可防止意外删除数据。 请改用门户中的刷新操作。 - E1 和任何 Flash SKU 都不支持活动异地复制。
创建或加入活动异地复制组
新建 Azure Cache for Redis 资源时,请选择“高级”选项卡。完成包含群集策略的表单的第一部分。 有关选择“聚类分析策略”的详细信息,请参阅聚类分析。
选择“配置”以设置“活动异地复制” 。
为第一个缓存实例新建复制组。 或从列表中选择一个现有复制组。
选择“配置”以完成。
等待第一个缓存创建成功。 完成后,在“活动异地复制”部分,你将看到已设置为“已配置”。 对异地复制组中的每个缓存实例重复执行上述步骤。
从活动异地复制组中删除
若要从活动异地复制组中删除缓存实例,只需删除相应实例即可。 其余实例随后会自动重新配置自身。
在发生区域中断时强制取消链接
如果复制组中的其中一个缓存因区域中断而不可用,你可以将不可用的缓存强制从复制组中删除。 将强制取消链接应用到缓存后,在强制取消链接后,无法将写入该缓存的任何数据同步回复制组。
应移除不可用的缓存,因为复制组中剩余的缓存将开始存储未共享到不可用缓存的元数据。 发生这种情况时,复制组中的可用缓存可能会耗尽内存。
转到 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default" --linked-databases id="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}', '{id:"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"}'
与以前一样,需要使用 -LinkedDatabase
参数列出 Cache1 和 Cache2。
缩放异地复制组中的实例
可以扩展配置为使用活动异地复制的实例。 但是,具有不同缓存大小的异地复制组可能会引发问题。 若要防止出现这些问题,异地复制组中所有缓存的大小和容量必须相同。
由于很难同时扩展异地复制组中的所有实例,因此 Azure Cache for 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 Cache for Redis 的 Enterprise 层中的异地复制运行状况指标有助于监视异地复制群集的运行状况。 使用此指标监视异地副本之间的同步状态。
若要在 Azure 门户中监视异地复制运行状况指标,请执行以下操作:
打开 Azure 门户并选择 Azure Cache for Redis 实例。
在“资源”菜单上,选择“监视”部分下的“指标”。
选择“添加指标”,然后选择“异地复制运行状况”指标。
如果需要,请为特定的异地副本应用筛选器。
可以配置警报,以便在异地复制运行状况指标超过 60 分钟连续发出不正常值 (0) 时通知你。
选择“新建预警规则”。
定义条件,以便当指标值为 0 持续至少 60 分钟(建议的时间)时触发。
为通知添加操作组,例如:电子邮件、短信等。
保存警报。
有关如何为 Redis Enterprise 缓存设置警报的详细信息,请参阅监视 Redis 缓存中的警报部分。
重要
此指标可能由于 Azure 或客户启动的例行操作(如维护事件或缩放)而暂时显示为不正常。 为避免误报,我们建议设置 60 分钟的观察窗口,在该窗口中,指标若继续保持不正常状态,则会生成警报,因为它可能指示需要干预的问题。
可能导致异地副本之间的同步问题的常见客户端问题
使用自定义哈希标签 – 在 Redis 中使用自定义哈希标签可能会导致数据在分片之间分布不均匀,这可能会导致异地副本中的性能问题和同步问题,因此,除非数据库需要执行多个关键操作,否则避免使用自定义哈希标签。
大型键大小 - 大型键可以在异地副本中带来同步问题。 为了保持平稳的性能和可靠的复制,我们建议在使用异地复制时将键大小保持在 500MB 以下。 如果单个键大小接近 2GB,缓存将面临异地复制运行状况问题。
使用 Azure CLI 或 PowerShell 刷新缓存
Azure CLI 和 PowerShell 还可用于触发刷新操作。 有关使用 Azure CLI 的详细信息,请参阅 az redisenterprise database flush。 有关使用 PowerShell 的详细信息,请参阅 Invoke-AzRedisEnterpriseCacheDatabaseFlush。
重要
使用“刷新缓存”功能时要小心。 选择该按钮会删除当前缓存和异地复制组中链接的所有缓存中的所有数据。
使用 Azure 基于角色的访问控制管理对功能的访问。 应仅向授权用户授予刷新所有缓存的访问权限。
后续步骤
了解有关 Azure Cache for Redis 功能的详细信息。