다음을 통해 공유

缩放 Azure Cache for Redis 实例

重要

Azure Redis 缓存宣布了所有 SKU 的停用时间线。 建议尽快将现有的 Azure Redis 缓存实例移动到 Azure 托管 Redis

有关停用的更多详细信息:

Azure Cache for Redis 具有不同的产品/服务,可以灵活地选择缓存大小和功能。 通过缩放,可以在创建缓存实例后更改节点的大小、层和数量,以匹配应用程序的需求。 本文演示了如何使用 Azure 门户以及 Azure PowerShell 和 Azure CLI 等工具来缩放缓存。

缩放类型

基本上可以使用两种方法来缩放 Azure Cache for Redis实例:

  • 纵向扩展可增加运行 Redis 服务器的虚拟机 (VM) 大小,从而添加增加更多的内存、虚拟 CPU (vCPU) 和网络带宽。 纵向扩展也称为垂直缩放。 扩展与缩减相反。

  • 横向扩展会将缓存实例划分为更多相同大小的节点,可以通过并行化增加内存、vCPU 和网络带宽。 横向扩展也称为水平缩放分片。 横向扩展与横向缩减相反。 在 Redis 社区中,横向扩展通常称为聚类分析

可用范围

“基本”和“标准” 高级
扩容
缩减规模
横向扩展
收缩规模

何时扩展

可使用 Azure Cache for Redis 的监视功能来监视缓存的运行状况和性能。 使用该信息确定何时缩放缓存。

可以监视以下指标来确定是否需要进行扩展。

  • Redis 服务器负载
    • 高 Redis 服务器负载意味着此服务器无法应对来自所有客户端的请求。 由于 Redis 服务器是单线程进程,因此横向扩展通常比纵向扩展更有帮助。 通过启用集群进行横向扩展有助于跨多个 Redis 进程分担开销任务。 横向扩展还有助于分发 TLS 加密/解密和连接/断开连接,从而使用 TLS 加快缓存实例的速度。
    • 纵向扩展仍有助于降低服务器负载,因为后台任务可以利用更多的 vCPU 并为主 Redis 服务器进程释放线程。
  • 内存使用率
    • 高内存用量指示数据大小对于当前的缓存大小来说太大。 请考虑调整缓存大小以适应更大的内存。 纵向扩展横向扩展在这里都是有效的。
  • 客户端连接
    • 每个缓存大小都有其所能支持的客户端连接数的限制。 如果客户端连接即将达到缓存大小限制,请考虑纵向扩展到更大的层。 横向扩展不会增加支持的客户端连接数。
    • 有关按缓存大小列出的连接限制的详细信息,请参阅 Azure Cache for Redis 定价
  • 网络带宽
    • 如果 Redis 服务器超出可用带宽,则客户端请求可能会超时,因为服务器无法以足够快的速度将数据推送到客户端。 要了解使用的服务器端带宽量,请检查“缓存读取”和“缓存写入”指标。 如果 Redis 服务器超出可用的网络带宽,则应考虑横向扩展或纵向扩展到具有更高网络带宽的更大缓存大小。
    • 若要详细了解缓存大小的网络可用带宽,请参阅 Azure Cache for Redis 规划常见问题解答
  • 内部 Defender 扫描程序
    • 在 C0C1 标准缓存上,当内部 Defender 扫描正在 VM 上运行时,服务器负载可能会出现短暂的峰值(不是由缓存请求数增加导致的)。 当每天在这些层级上多次运行内部 Defender 扫描时,请求延迟更高。 C0C1 层的缓存仅有一个核心用于多任务处理,分担服务于内部 Defender 扫描和 Redis 请求的工作。 可以通过缩放到具有多个 CPU 核心的更高层级产品/服务(例如 C2)来降低影响。
    • 更高层级上增加的缓存大小有助于解决任何延迟问题。 此外,在 C2 级别,可以支持多达 2,000 个客户端连接。

若要详细了解如何确定要使用的缓存定价层,请参阅选择正确的层Azure Cache for Redis 规划常见问题解答

注意

有关如何优化缩放过程的详细信息,请参阅缩放最佳做法指南

缩放 Azure Cache for Redis 的先决条件/限制

可以纵向扩展/缩减到不同定价层,但存在以下限制:

  • 不能从较高的定价层缩放到较低的定价层。
    • 不能从高级缓存向下缩放到标准基本缓存。
    • 不能从标准缓存向下缩放到基本缓存。
  • 可从基本缓存缩放到标准缓存,但不能同时更改大小。 以后如果需要不同的大小,可以执行缩放操作以缩放为所需大小。
  • 不能从基本缓存直接缩放到高级缓存。 首先在一个缩放操作中从“基本”缩放到“标准”,然后在后续的缩放操作中从“标准”缩放到“高级”。
  • 不能将较大的规模缩减为“C0 (250 MB)”大小。 但是,您可以在同一定价层中调整为任何其他大小。 例如,可以从“C5 标准”横向缩减为“C1 标准”。

可以在以下限制条件下进行扩展/缩减:

  • 仅在高级层支持横向扩展
  • 缩减规模仅支持在高级层中。
  • 高级层上,必须先启用聚类分析,然后才能进行横向缩减或横向扩展。
  • 高级层上,对横向扩展到 10 个分片的支持已普遍提供。 支持最多 30 个分片的功能目前处于预览阶段。 (对于具有两个副本的缓存,分片限制为 20。对于具有三个副本的缓存,分片限制为 15。)

如何缩放 - 基本层、标准层和高级层

使用 Azure 门户进行纵向扩展和缩减

  1. 要缩放缓存,请在 Azure 门户浏览到缓存,并从“资源”菜单中选择“缩放”。

    显示“资源”菜单上“缩放”的屏幕截图。

  2. 选择工作窗格中的定价层,然后选择“选择”。

    显示 Azure Cache for Redis 等级的屏幕截图。

  3. 当缓存缩放到新层级时,会显示“缩放 Redis 缓存”通知。

    显示缩放通知的屏幕截图。

  4. 缩放完成后,状态将从正在缩放更改为正在运行

注意

使用门户纵向扩展或缩减缓存时,maxmemory-reservedmaxfragmentationmemory-reserved 设置都会自动根据缓存大小按比例进行缩放。 例如,如果 maxmemory-reserved 在 6 GB 缓存上设置为 3 GB,并且你扩展到 12 GB 缓存,则在扩展期间这些设置会自动更新为 6 GB。 纵向缩减时,将发生相反的行为。

使用 PowerShell 扩展或缩减

修改SizeSku属性时,可以通过使用PowerShell的Set-AzRedisCache cmdlet来缩放Azure Cache for Redis实例。 以下示例演示了如何将名为 myCache 的缓存缩放为同一层中的 6 GB 缓存。

   Set-AzRedisCache -ResourceGroupName myGroup -Name myCache -Size 6GB

有关使用 PowerShell 进行缩放的详细信息,请参阅使用 PowerShell 缩放 Azure Redis 缓存

使用 Azure CLI 纵向扩展和缩减

要使用 Azure CLI 缩放 Azure Cache for Redis 实例,可调用 az redis update 命令。 使用 sku.capacity 属性在层内缩放,例如从标准 C0 到标准 C1 缓存:

az redis update --cluster-name myCache --resource-group myGroup --set "sku.capacity"="2"

使用“sku.name”和“sku.family”属性纵向扩展到不同的层,例如从标准 C1 缓存扩展到高级 P1 缓存:

az redis update --cluster-name myCache --resource-group myGroup --set "sku.name"="Premium" "sku.capacity"="1" "sku.family"="P"

有关使用 Azure CLI 进行缩放的详细信息,请参阅更改现有 Azure Redis 缓存的设置

注意

以编程方式(例如,使用 PowerShell 或 Azure CLI)增加或减少缓存的规模时,作为更新请求的一部分,任何 maxmemory-reservedmaxfragmentationmemory-reserved 都将被忽略。 只有缩放更改会被遵循。 缩放作完成后,可以更新这些内存设置。