Amazon ElastiCache
ElastiCache for Memcached 用户指南 (API 版本 2015-02-02)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

缓解故障

规划 Amazon ElastiCache 实施时,您应做好计划以最大程度地减小故障对应用程序和数据产生的影响。本部分中的主题涵盖了可用来防止应用程序和数据出现故障的方法。

缓解运行 Memcached 时发生的故障

运行 Memcached 引擎时,您有以下选择来最大程度地减小故障的影响。故障缓解计划中有两类需要解决的故障:节点故障和可用区故障。

缓解节点故障

要缓解节点故障的影响,请将缓存数据分布到多个节点。由于 Memcached 不支持复制,因此节点故障始终会导致集群中的某些数据丢失。

在创建 Memcached 集群时,您可以使用 1 到 20 个节点或更多节点(根据特殊请求)来创建它。跨更多节点对数据进行分区意味着,在节点出现故障时丢失的数据更少。例如,如果您跨 10 个节点对数据进行分区,则任一节点均可存储您的约 10% 的缓存数据。在此情况下,在创建和预配置替换节点时,节点故障会导致丢失约 10% 的需替换的缓存数据。如果在 3 个较大的节点中对相同的数据进行缓存,则节点故障将导致丢失约 33% 的缓存数据。

如果您需要的节点数多于 Memcached 集群中的 20 节点数或 AWS 区域中的总 100 节点数,请填写 http://www.amazonaws.cn/contact-us/elasticache-node-limit-request/ 处的提高 ElastiCache 上限请求表。

有关指定 Memcached 集群中的节点数的信息,请参阅(控制台)创建 Memcached 集群

缓解可用区故障

要缓解可用区故障的影响,请将节点置于尽可能多的可用区中。在出现极少发生的可用区故障时,您将丢失已在该可用区中缓存的数据,而不会丢失在其他可用区中缓存的数据。

为何要使用如此多的节点?

如果我的区域只有 3 个可用区,既然在可用区出现故障时,我会丢失约三分之一的数据,那么为何我需要 3 个以上的节点?

这个问题问得很好。请记住,我们正在尝试缓解两种不同类型的故障,即节点故障和可用区故障。您说得对,如果您的数据跨可用区分布且其中一个区域发生故障,则无论您拥有多少个节点,都只会丢失该可用区中缓存的数据。但是,如果节点出现故障,则拥有更多节点将减少丢失的数据的比例。

没有用于确定集群中拥有的节点数的“神奇公式”。您必须权衡数据丢失的影响、发生故障的可能性与成本,并得出您自己的结论。

有关指定 Memcached 集群中的节点数的信息,请参阅(控制台)创建 Memcached 集群

有关区域和可用区的更多信息,请参阅选择区域和可用区

建议

您需要规划两种类型的故障:单个节点故障和广泛的可用区故障。最佳的故障缓解计划将解决这两种故障。

尽可能减少故障的影响

为了尽可能减少节点故障的影响,我们建议您的实施在每个分片中使用多个节点,并将节点分布在多个可用区上。

如果您正在运行 Memcached 并且正在跨节点对数据进行分区,在任一节点出现故障的情况下,您使用的节点越多,丢失的数据就越少。

最大程度地减小可用区故障的影响

要最大程度地减小可用区故障的影响,建议您在提供的不同可用区内启动节点。跨可用区均匀分布节点将最大程度地减小极少发生的可用区故障的影响。