的版本管理 ElastiCache - 亚马逊 ElastiCache

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的版本管理 ElastiCache

管理您希望如何更新 ElastiCache 缓存和为 Valkey、Redis OSS 和 Memcached 引擎更新的自行设计的集群。

ElastiCache 无服务器缓存的版本管理

管理是否以及何时升级 ElastiCache 无服务器缓存,并根据自己的条件和时间表执行版本升级。

ElastiCache Serverless 会自动将最新版本MINOR和PATCH软件版本应用于您的缓存,而不会对您的应用程序造成任何影响或停机。在您的末端不需要执行任何操作。

当有新MAJOR版本可用时, ElastiCache Serverless 将在控制台中向您发送通知,并在中 EventBridge向您发送事件。您可以选择将缓存升级到最新的主要版本,方法是使用控制台修改缓存 CLIAPI,或者选择最新的引擎版本。

为自己设计 ElastiCache 的集群提供版本管理

使用自行设计的 ElastiCache 集群时,您可以控制为缓存集群提供支持的 ElastiCache 软件何时升级到支持的新版本。您可以控制何时将缓存升级到最新的可用MAJORMINOR、和PATCH版本。可以通过修改集群或复制组并指定新的引擎版本,对您的集群或复制组启动引擎版本升级。

您可以控制为缓存集群提供支持的符合协议的软件是否以及何时升级到支持的新版本。 ElastiCache此级别的控制使您能够与特定版本保持兼容、在生产中部署进行之前使用应用程序测试新版本以及根据自己的条件和时间表执行版本升级。

因为版本升级可能会涉及到某些兼容性风险,因此版本升级不会自动发生。您必须启动它们。

Valkey 和 Redis 集群 OSS

注意
  • 如果跨一个或多个区域复制 Valkey 或 Redis OSS 集群,则会先升级辅助区域的引擎版本,然后升级主区域的引擎版本。

  • ElastiCache (RedisOSS) 版本用语义版本标识,语义版本包括MAJOR和组件。MINOR例如,在 Redis OSS 6.2 中,主要版本为 6,次要版本为 2。在操作自己设计的集群时, ElastiCache (RedisOSS) 还会公开PATCH组件,例如 Redis OSS 6.2.1,补丁版本为 1。

    MAJOR版本用于API不兼容的更改,MINOR版本用于以向后兼容的方式添加的新功能。PATCH版本用于向后兼容的错误修复和不起作用的更改。

使用 Valkey 和 RedisOSS,您可以通过修改集群或复制组并指定新的引擎版本来启动集群或复制组的引擎版本升级。有关更多信息,请参阅 修改复制组

内存缓存

使用 Memcached,要升级到新版本,必须修改缓存集群并指定要使用的新引擎版本。升级到更新的 Memcached 版本是一个破坏性过程 – 您会丢失数据并以冷缓存开始。有关更多信息,请参阅 修改集 ElastiCache 群

从旧版本的 Memcached 升级到 1.4.33 版本或更新版本的 Memcached 时,您应注意以下要求。CreateCacheClusterModifyCacheCluster 在下列情况下将失败:

  • 如果 slab_chunk_max > max_item_size

  • 如果 max_item_size modulo slab_chunk_max != 0

  • 如果 max_item_size > ((max_cache_memory - memcached_connections_overhead) / 4)

    (max_cache_memory - memcached_connections_overhead) 值是可用于数据的节点内存。有关更多信息,请参阅 Memcached 连接开销

使用自行设计集群时的升级注意事项

注意

以下注意事项仅在升级自行设计集群时适用。它们不适用于 ElastiCache 无服务器。

Valkey 和 Redis 注意事项 OSS

在升级自己设计的 Valkey 或 Redis OSS 集群时,请考虑以下几点。

  • 引擎版本管理的设计使您可以尽可能多地控制修补的发生方式。但是,如果系统或缓存软件中出现严重安全漏洞,则 ElastiCache 保留代表您修补集群的权利。

  • 从 Valkey 7.2 和 Redis OSS 6.0 开始, ElastiCache 将为每个次要版本提供一个版本,而不是提供多个补丁版本。

  • 从 Redis OSS 引擎版本 5.0.6 开始,您可以在最短的停机时间内升级集群版本。集群在整个升级过程中可供读取,并在大部分升级持续时间内可供写入,但在只持续几秒钟的故障转移操作期间则例外。

  • 您也可以使用低于 5.0.6 的版本升级 ElastiCache 集群。所涉及的过程相同,但在DNS传播期间可能会导致更长的故障转移时间(30s-1m)。

  • 从 Redis OSS 7 开始, ElastiCache 支持在 Valkey 或 RedisOSS(已禁用集群模式)和 Valkey 或 RedisOSS(启用集群模式)之间切换。

  • 亚马逊 ElastiCache (RedisOSS) 引擎升级过程旨在尽最大努力保留您的现有数据,并且需要成功复制 Redis OSS。

  • 升级引擎时, ElastiCache 将终止现有的客户端连接。为了最大限度地减少引擎升级期间的停机时间,我们建议您为具有错误重试和指数级退避的 Redis OSS 客户端实施最佳实践,以及最大限度地减少维护期间的停机时间的最佳实践。

  • 升级引擎时,你无法直接从 Valkey 或 RedisOSS(已禁用集群模式)升级到 Valkey 或 RedisOSS(已启用集群模式)。以下过程向您展示了如何从 Valkey 或 RedisOSS(已禁用集群模式)升级到 Valkey 或 RedisOSS(已启用集群模式)。

    从 Valkey 或 RedisOSS(已禁用集群模式)升级到 Valkey 或 RedisOSS(已启用集群模式)引擎版本
    1. 备份您的 Valkey 或 RedisOSS(已禁用集群模式)集群或复制组。有关更多信息,请参阅 进行手动备份

    2. 使用备份创建具有一个分片(节点组)的 Valkey 或 RedisOSS(已启用集群模式)集群并为其播种。在创建集群或复制组时,指定新的引擎版本并启用集群模式。有关更多信息,请参阅 教程:使用外部创建的备份为自己设计的新集群播种

    3. 删除旧的 Valkey 或 RedisOSS(已禁用集群模式)集群或复制组。有关更多信息,请参阅删除中的集群 ElastiCache删除复制组

    4. 将新的 Valkey 或 RedisOSS(已启用集群模式)集群或复制组扩展到所需的分片(节点组)数量。有关更多信息,请参阅 在 Valkey 或 Redis 中扩展集群OSS(已启用集群模式)

  • 升级主要引擎版本(例如从 5.0.6 升级到 6.0)时,还需要选择一个与新引擎版本兼容的新参数组。

  • 对于单个 Redis OSS 集群和禁用了多可用区的集群,我们建议按中所述OSS为 Redis 提供足够的内存。确保你有足够的内存来制作 Valkey 或 Redis 快照 OSS在这些情况下,主项在升级过程中不可用于处理服务请求。

  • 对于启用了多可用区的 Redis OSS 集群,我们还建议您在传入写入流量较低的时段安排引擎升级。升级到 Redis OSS 5.0.6 或更高版本时,在升级过程中,主集群继续可用于处理服务请求。

    将处理和修补带多个分片的集群和复制组,如下所示:

    • 将并行处理所有分片。在任何时候,仅在分片上执行一次升级操作。

    • 在每个分片中,在处理主副本之前,会先处理所有其他副本。如果一个分片中的副本较少,则可能会在处理完其他分片中的副本之前处理该分片中的主副本。

    • 在所有分片中,主节点都是按顺序处理的。一次只升级一个主节点。

  • 如果已对当前集群或复制组启用了加密,则无法升级到不支持加密的引擎版本,例如,从 3.2.6 升级到 3.2.10。

内存缓存注意事项

在升级自己设计的 Memcached 集群时,请考虑以下几点。

  • 引擎版本管理的设计使您可以尽可能多地控制修补的发生方式。但是,如果系统或缓存软件中出现严重安全漏洞,则 ElastiCache 保留代表您修补集群的权利。

  • 由于 Memcached 引擎不支持持久化,因此 Memcached 引擎版本升级始终是一个中断性过程,将清除集群中的所有缓存数据。