缩放 Azure Cache for Redis 实例

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

缩放类型

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

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

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

可用范围

“基本”和“标准” 高级
按比例增加
纵向缩减
Scale Out
横向缩减

何时缩放

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

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

  • Redis 服务器负载
    • 高 Redis 服务器负载意味着此服务器无法应对来自所有客户端的请求。 由于 Redis 服务器是单线程进程,因此横向扩展通常比纵向扩展更有帮助。 通过启用聚类分析进行横向扩展有助于跨多个 Redis 进程分配开销函数。 横向扩展还有助于分发 TLS 加密/解密和连接/断开连接,从而使用 TLS 加快缓存实例的速度。
    • 纵向扩展仍有助于降低服务器负载,因为后台任务可以利用更多的 vCPU 并为主 Redis 服务器进程释放线程。
  • 内存使用率
    • 高内存用量指示数据大小对于当前的缓存大小来说太大。 请考虑缩放到具有更大内存的缓存大小。 纵向扩展横向扩展在这里都是有效的。
  • 客户端连接
    • 每个缓存大小都有其所能支持的客户端连接数的限制。 如果客户端连接即将达到缓存大小限制,请考虑纵向扩展到更大的层。 横向扩展不会增加支持的客户端连接数。
    • 有关按缓存大小列出的连接限制的详细信息,请参阅 Azure Cache for Redis 定价
  • 网络带宽
    • 如果 Redis 服务器超出可用带宽,则客户端请求可能会超时,因为服务器无法以足够快的速度将数据推送到客户端。 检查“缓存读取”和“缓存写入”指标,了解使用的服务器端带宽量。 如果 Redis 服务器超出可用的网络带宽,则应考虑横向扩展或纵向扩展到具有更高网络带宽的更大缓存大小。
    • 若要详细了解缓存大小的网络可用带宽,请参阅 Azure Cache for Redis 规划常见问题解答

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

注意

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

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

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

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

可以横向扩展/缩减,但存在以下限制:

  • 仅在高级层支持横向扩展
  • 只有高级层支持横向缩减
  • 高级层上,必须先启用聚类分析,然后才能进行横向缩减或横向扩展。
  • 高级层上,正式发布版支持横向扩展到最多 10 个分片。 预览版支持横向扩展到最多 30 个分片。 (对于具有两个副本的缓存,分片限制为 20。对于具有三个副本的缓存,分片限制为 15。)

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

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

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

    Screenshot showing Scale on the resource menu.

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

    Screenshot showing the Azure Cache for Redis tiers.

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

    Screenshot showing the notification of scaling.

  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.capcity 属性在层内缩放,例如从标准 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。 只会遵循缩放更改。 你可以在缩放操作完成后更新这些内存设置。