亚马逊网络服务-我可以在不停机的情况下升级Elasticache Redis引擎版本吗



我在AWS文档中找不到任何信息表明修改Redis引擎版本会或不会导致停机。除了在维护窗口中执行之外,它没有解释升级是如何发生的。

通过AWS控制台升级生产Elasticache Redis实例是否安全?

注意:我们使用的客户端库与Redis的所有版本都兼容,因此应用程序不应注意到升级。

我不确定答案是否仍然相关,因为这个问题是近7年前提出的,但有一些事情。

更改节点类型或引擎版本是一个修改操作,并且您的数据在Elasticache集群上保持不变。我相信有一位医生提到了(如果我找到了,我会把它链接到这里)Elasticache修改的过程。从本质上讲,Elasticache在后端启动一个新节点,并将您所做的修改复制到其中。假设您所做修改是将引擎版本从5.x更改为6.x-

  1. Elasticache将在Engine 6.x的后端推出新的Redis节点
  2. 当节点出现时,Elasticache将从5.x节点读取密钥,并将数据复制到6.x
  3. 复制完成后,Elasticache将更改集群端点的DNS记录

因此,根据应用程序的DNS缓存TTL配置,会有一些停机时间。例如,您的应用程序保持DNS缓存300秒,刷新应用程序/客户端计算机上的DNS缓存可能需要300秒,在此期间,应用程序可能会显示一些错误。

从弹性方面来看,我不认为他们为此提供任何官方SLA。但这篇文献[1]提到;几秒钟";以便此DNS进行比例分配(取决于引擎版本)。

不过,您始终可以拍摄集群的快照作为备份。如果出现问题,可以使用快照启动具有相同数据的新集群。

此外,还有一件事-AWS永远不会自行升级您的发动机版本。Elasicache集群的维护窗口用于安全补丁和引擎上的小型优化。它们不会影响发动机版本。

干杯!

[1]https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html

更改缓存引擎版本是一个中断过程,它会清除群集中的所有缓存数据。**

我现在不符合你特殊申请的要求。但是,如果您不能丢失数据,并且需要进行主要版本升级,则建议迁移到新群集,而不是升级当前设置。

**http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/VersionManagement.html

正如Will上面提到的,AWS的答案已经改变。从理论上讲,你可以在不停机的情况下完成这项工作。参见:

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/VersionManagement.html

关键点是停机时间和对现有使用的影响:

Amazon ElastiCache for Redis引擎升级过程尽最大努力保留现有数据Redis复制成功。

对于单个Redis集群和禁用Multi-AZ的集群,我们建议为Redis提供足够的内存在确保您有足够的内存来创建Redis中进行了描述快照在这些情况下,主服务器无法提供服务升级过程中的请求。

对于启用了Multi-AZ的Redis集群,我们还建议您在低传入写入流量期间调度引擎升级。升级到Redis 5.0.5或更高版本时,主集群将继续以便在升级过程中可用于服务请求。什么时候升级到Redis 5.0.4或更低版本,您可能会注意到一个短暂的中断与DNS更新相关联的几秒钟。

这里没有保证,所以如果失败,您必须自己决定数据丢失的风险

这取决于您当前的版本:

  • 当升级到Redis 5.0.6或更高版本时,主集群在升级过程中继续可用于服务请求(源)
  • 从Redis引擎5.0.5版本开始,您可以在最短的停机时间内升级集群版本。集群在整个升级过程中可用于读取,在升级的大部分时间内可用于写入,但在持续几秒钟的故障转移操作期间除外(源);集群在引擎升级期间可用于读取,写入仅中断<版本为5.0.5的1sec(来源)
  • 您还可以使用5.0.5之前的版本升级您的ElastiCache集群。所涉及的过程是相同的,但在DNS传播期间可能会导致更长的故障转移时间(30s-1m)(源,源)

最新更新