AWS在每个区域都有一个维护窗口。 https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/maintenance-window.html ,但找不到有关其如何与同一区域中的多个A-Z一起使用的任何文档。
我配置了Redis缓存,并且在同一区域的不同(A-Z)上有一个副本。如果一个(A-Z)不可用,则在另一个(A-Z)上配置副本的整个目的是从next(A-Z)提供服务 当他们进行维护时,他们将拆除整个区域或单个可用区域
答案 0 :(得分:2)
您应该阅读有关ElastiCache维护的常见问题解答https://aws.amazon.com/elasticache/elasticache-maintenance/
这表示,如果您具有多可用区部署,它将一次删除一个实例,从而触发故障转移到只读副本,然后在删除其余实例之前创建新实例,这样您就不会遇到任何实例服务中断。
答案 1 :(得分:0)
感谢@morras提供上述link,并说明了Elasticache如何在维护时段内发挥作用。我从上面的链接中删除了以下3个问题,并对此进行了解释。
1。节点更换需要多长时间?
替换通常会在几分钟内完成。在某些实例配置和流量模式下,替换可能需要更长的时间。例如,Redis主节点可能没有足够的可用内存,并且可能正在经历高写入流量。当空副本从该主副本同步时,主节点可能会用尽内存,以尝试解决传入的写入以及同步副本。在这种情况下,主服务器将断开副本的连接并重新启动同步过程。副本可能需要多次尝试才能成功同步。如果传入的写入流量继续保持较高水平,则副本可能永远也不会同步。
Memcached节点在替换期间不需要同步,并且无论节点大小如何,替换总是很快。
2。节点替换对我的应用程序有何影响?
对于Redis节点,替换过程旨在尽最大努力保留现有数据,并且需要成功进行Redis复制。对于单节点Redis群集,ElastiCache动态启动副本,复制数据,然后故障转移到该副本。对于由多个节点组成的复制组,ElastiCache会替换现有副本,并将数据从主副本同步到新副本。如果启用了多可用区或群集模式,则替换主数据库将触发故障转移到只读副本。如果禁用了多可用区,则ElastiCache会替换主要数据库,然后同步来自只读副本的数据。主服务器在此期间将不可用。 对于Memcached节点,替换过程将弹出一个空的新节点并终止当前节点。在切换期间,新节点将在短时间内不可用。切换后,在用缓存数据填充空的新节点时,您的应用程序可能会性能下降。
3。我应该遵循哪些最佳实践来获得流畅的更换体验并最大程度地减少数据丢失?
对于Redis节点,替换过程旨在尽最大努力保留现有数据,并且需要成功进行Redis复制。我们尝试一次替换同一集群中足够多的节点,以保持集群稳定。您可以在不同的可用区域中配置主副本和只读副本。在这种情况下,更换节点后,数据将从不同可用性区域中的对等节点同步。对于单节点Redis群集,我们建议Redis可以使用足够的内存,如此处所述。对于具有多个节点的Redis复制组,我们还建议将替换计划安排在传入写入流量较低的时期内进行。 对于Memcached节点,在传入写流量低的时段安排维护窗口,测试应用程序的故障转移,并使用ElastiCache提供的“更智能”的客户端。您无法避免数据丢失,因为Memcached仅在内存中存储数据。