升级

Alauda Cache Service for Redis OSS 旨在为所有受支持版本提供服务连续性和数据安全性。本指南详细说明了版本兼容性,并概述了推荐的升级路径,以便为您的环境实现平滑迁移。

升级提示

在升级生产环境之前,强烈建议先在开发环境或预发布环境中验证升级流程。这一预先步骤有助于在兼容性问题(包括硬件相关冲突)影响生产服务之前识别并缓解这些问题。

版本兼容性原则

Alauda Cache Service for Redis OSS 遵循语义化版本控制原则,并提供以下兼容性保证:

  • 补丁版本(x.y.z)在同一小版本系列内完全向后兼容和向前兼容。
  • 小版本(x.y.z)在同一大版本内保持 API 和功能兼容性。
  • 大版本x.y.z)可能引入需要特定升级操作步骤的破坏性变更。

前提条件

在开始升级之前,请确保满足以下前提条件:

  1. 版本兼容性:当前版本必须处于受支持的升级路径上。
  2. 组件健康状态:所有 Redis 实例都必须报告 Ready 状态。
  3. 资源可用性:集群必须具有足够的 CPU、内存和存储资源,以支持升级。
  4. 备份:所有关键数据和配置都必须有最近的备份可用。

支持的升级路径

下表概述了经过测试的版本组合及其各自依赖关系:

Alauda Cache Service for Redis OSS 版本Redis Server 版本ACP 版本
v5.0.26.0.22, 7.2.15, 8.4.5v4.1, v4.2, v4.3
v5.0.16.0.21, 7.2.14, 8.4.3v4.1, v4.2, v4.3
v5.0.06.0.21, 7.2.12, 8.4.2v4.1, v4.2, v4.3
v4.1.x5.0.14, 6.0.20, 7.2.10v4.1, v4.2
v4.0.x5.0.14, 6.0.20, 7.2.xv4.0
ACP v4.3 兼容性

Alauda Cache Service for Redis OSS v4.1.x 和 v4.0.x 尚未在 ACP v4.3 上进行测试。在升级到 ACP v4.3 之前,请先将 Alauda Cache Service for Redis OSS 升级到 v5.0.0 或更高版本。

在升级到 ACP v4.3 之前先升级 Redis 5.0 实例

升级 Alauda Cache Service for Redis OSS operator 不会自动升级现有实例的 Redis 版本;每个实例的 Redis 版本都必须显式升级。

由于 ACP v4.3 需要 Alauda Cache Service for Redis OSS v5.0.x,而 v5.0.x 不再支持 Redis 5.0,因此在从早于 v4.3 的 ACP 版本升级到 v4.3 之前,必须先将每个 Redis 5.0 实例升级到受支持的版本(6.07.28.4)。

在开始 ACP 升级之前,请确认没有任何实例在 VERSION 列中报告 5.0(例如,运行 kubectl get redis -A)。有关升级操作步骤,请参阅 实例升级指南

升级策略

小版本升级

  • 方式:支持从任何小版本直接升级到同一大版本中的较新发布版本(例如,4.0.x4.1.0)。
  • 优势:这种方式可将运维风险降至最低,并促进版本之间的平滑迁移。

补丁版本升级

  • 兼容性:补丁版本在同一小版本系列内完全兼容。
  • 示例:在同一小版本系列内升级(例如,x.y.0x.y.1)可应用最新的 bug 修复和安全补丁。

大版本升级

  • 要求:在跨大版本升级时(例如,4.1.05.0.0),请直接升级到目标大版本中最新可用的发布版本。
  • 操作步骤:按照以下升级步骤先升级 operator,然后按照 实例升级指南 升级各个实例。
  • 注意事项:大版本升级可能需要修改配置,并对功能兼容性进行全面审查。

升级步骤

  1. 从 AlaudaCloud 下载目标版本的 Alauda Cache Service for Redis OSS 插件到一台能够访问您的 ACP 集群的节点上。
  2. 使用 violet 包管理工具将插件上架到目标集群。有关详细说明,请参阅 上架软件包 文档。
  3. 升级会遵循 Subscription 中配置的策略:
    • Automatic Upgrade:插件在上架后自动升级。

    • Manual Upgrade

      CLI
      Web Console
      # Check for available upgrades
      $ kubectl -n redis-system get subscriptions.operators.coreos.com redis-operator -o go-template='{{ printf "Installed: %s\n  Current: %s" .status.installedCSV .status.currentCSV }}'
      
      # If an upgrade is available, find the corresponding InstallPlan for the Subscription
      $ kubectl -n redis-system get subscriptions.operators.coreos.com redis-operator -o jsonpath='{.status.installplan.name}'
      
      # Approve the InstallPlan to proceed with the upgrade
      $ kubectl -n redis-system patch --type='json' -p='[{"op":"replace","path":"/spec/approved","value":true}]'

      有关升级该插件的更详细说明,请参阅 operator 文档。

  4. 若要升级 Redis 实例本身,请参阅 实例升级指南