Amazon ElastiCache
用户指南 (API Version 2015-02-02)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

ElastiCache 组件和功能

在本部分的主题中,您可以找到 Amazon ElastiCache 部署的主要组件概述。

ElastiCache 节点

节点 是 ElastiCache 部署中的最小构建块。一个节点可独立于其他节点存在,也可与其他节点之间有某种关系。

节点是固定大小、与网络连接的安全 RAM 区块。每个节点都运行一个 Memcached 或 Redis 实例,具体取决于创建集群时的选择。如果需要,您可以将集群中的节点纵向扩展或缩减到不同的实例类型。有关更多信息,请参阅 扩展

一个集群中的每个节点都是相同的实例类型且运行相同的缓存引擎。每个缓存节点都有自己的域名服务 (DNS) 名称和端口。支持多种缓存节点类型,每种可有不同的关联内存量。有关受支持的节点实例类型的列表,请参阅受支持的节点类型

您可以按需付费的形式购买节点,这样一来,您只需为使用的节点付费,您也可以大大降低的小时费率购买预留节点。如果使用率高,则购买预留节点可节省资金。如果您的集群几乎始终在使用中,并且您有时会添加节点来满足使用峰值的需求,则您可以购买大量预留节点以在大多数情况下运行,对于偶尔需要添加节点的情况,可以购买按需付费节点。有关预留节点的更多信息,请参阅ElastiCache 预留节点

Memcached 引擎支持 Auto Discovery,能使客户端程序自动识别缓存集群中的所有节点,并且启动和维护所有这些节点的连接。借助 Auto Discovery,您的应用程序无需手动连接到各个节点,而是连接到一个配置终端节点。配置终端节点 DNS 条目包含各个缓存节点终端的 CNAME 条目;因此,通过连接到配置终端节点,您的应用程序便可立即知道 集群中的所有节点,同时能够连接到所有节点。您无需对应用程序中的单个缓存节点终端节点进行硬编码。有关 Auto Discovery 的更多信息,请参阅节点自动发现 (Memcached)

有关节点的更多信息,请参阅ElastiCache 节点

ElastiCache 分片 (Redis)

Redis 分片 (在 API和 CLI 中称为 节点组) 是 1 到 6 个相关节点的分组。Redis (已禁用集群模式)集群始终只有一个分片。Redis (已启用集群模式)集群可包含 1 到 15 个分片。

多节点分片 通过指定一个读取/写入主节点和 1 到 5 个副本节点来实现复制。有关更多信息,请参阅 ElastiCache 复制 (Redis)

图像:Redis 分片配置

Redis 分片配置

有关分片的更多信息,请参阅分片 (Redis)

ElastiCache 集群

Redis 集群 是一个或多个ElastiCache 分片 (Redis)的逻辑分组。数据分配在 Redis (已启用集群模式)集群中的分片上。

Memcached 集群 是一个或多个ElastiCache 节点的逻辑分组。跨 Memcached 集群中的节点对数据进行分区。

许多 ElastiCache 操作面向集群:

  • 创建集群

  • 修改集群

  • 为集群拍摄快照(所有版本的 Redis)

  • 删除集群

  • 查看集群中的元素

  • 在集群中添加和删除成本分配标签

有关更多详细信息,请参阅以下相关主题:

典型集群配置

可能的集群配置因选择的引擎而异。

Memcached 支持每个客户在每个区域具有最多 100 个节点,每个集群具有 1 到 20 个节点。您可以跨 Memcached 集群中的节点对数据进行分区。

Redis 集群包含 1 到 15 个分片 (在 API 中称为节点组),每个分片都是数据的一个分区。Redis (已禁用集群模式)始终只有一个分片。

以下是适用于 Memcached 和 Redis 引擎的典型集群配置。

Memcached 集群

在运行 Memcached 引擎时,集群可以由 1 到 20 个节点构成。您可以将数据库分配到多个节点上。应用程序会对每个节点的终端节点进行读写操作。有关更多信息,请参阅 节点自动发现 (Memcached)

要增强容错能力,可以将您的 Memcached 节点放在集群区域内的不同可用区 (AZ) 中。这样一来,可最大程度地减小某个可用区内的故障对整个集群和应用程序的影响。有关更多信息,请参阅 缓解故障

由于 Memcached 集群需求是不断变化的,您可以通过添加或移除节点并跨新数量的节点对数据进行重新分区来进行扩展或收缩。对数据进行分区时,建议使用一致性哈希处理。有关一致性哈希处理的更多信息,请参阅配置 ElastiCache 客户端以实现高效负载均衡

 图像:Memcached 集群:单节点和多节点集群

Memcached 集群:单节点和多节点集群

Redis 集群

Redis (已启用集群模式) 集群包含 1 到 15 个分片 (在 API 和 CLI 中称为节点组)。Redis (已禁用集群模式) 集群始终只包含一个分片 (在 API 和 CLI 中称为节点组)。Redis 分片包含 1 到 6 个节点。如果分片包含多个节点,则该分片支持一个节点作为读取/写入主节点且其他为只读副本节点的复制。

为了提高容错能力,我们建议在 Redis 集群中包含至少两个节点,并启用具有自动故障转移功能的多可用区。有关更多信息,请参阅 缓解故障

由于对 Redis (已禁用集群模式) 集群的需求是不断变化的,您可通过将您的集群移到其他节点实例类型来进行扩展或收缩。如果应用程序是读取操作密集型的,建议添加只读副本 Redis (已禁用集群模式)集群,以便您能跨更多数量的节点分布读取。

ElastiCache 支持将 Redis (已禁用集群模式)集群节点类型动态地更改为较大的节点类型。有关纵向扩展或缩减的信息,请参阅扩展 Redis (已禁用集群模式)群集扩展具有副本节点的 Redis 集群

ElastiCache 复制 (Redis)

在继续阅读以下内容之前,请先参阅面向 Redis 的 ElastiCache 术语,以更好地了解 ElastiCache 控制台与 ElastiCache API、AWS CLI 之间的术语区别。

通过在一个分片 (在 API 和 CLI 中,称为节点组) 中对 2 到 6 个节点进行分组来实现复制。在这些节点中,有一个是读取/写入主节点。所有其他节点均为只读副本节点。

每个副本节点保留一个主节点中的数据的副本。复制节点使用异步复制机制来与主节点保持同步。应用程序可从集群中的任何节点进行读取,但只能对主节点进行写入。只读副本通过跨多个终端节点分布读取来增强可扩展性。只读副本还通过维护数据的多个副本来增强容错能力。在多个可用区内定位只读副本可进一步增强容错能力。有关容错能力的更多信息,请参阅缓解故障

Redis (已禁用集群模式) 集群支持一个分片 (在 API 和 CLI 中称为节点组)。Redis (已启用集群模式) 集群支持 1 到 15 个分片 (在 API 和 CLI 中称为节点组)。

下图使用控制台的视角和术语描绘了 Redis (已禁用集群模式)和 Redis (已启用集群模式)集群的复制。

 图像:Redis 复制(控制台视角)- 单个分片和多个分片。

Redis 复制(控制台视角)- 单个分片和多个分片

从 API 和 CLI 的视角来看,复制使用了不同的术语来维护与之前版本的兼容性,但结果是相同的。下表显示了用于实现复制的 API 和 CLI 术语。

比较 Replication: Redis (已禁用集群模式) 和 Redis (已启用集群模式)

下表比较了 Redis (已禁用集群模式) 和 Redis (已启用集群模式) 复制组的各种功能。

Redis (已禁用集群模式) Redis (已启用集群模式)
节点组 1 1 到 15 个
每个节点组的副本数目 0 到 5 个 0 到 5 个
数据分区
添加/删除副本
添加/删除组节点
支持扩展
支持引擎升级 不适用
将副本提升为主副本
具有自动故障转移功能的多可用区 可选 必需
备份/还原
备注:
如果任何主副本没有副本,则在主副本失败时,您将失去该主副本的所有数据。
备份和恢复可用于迁移 Redis (已启用集群模式)。
备份和恢复可用于调整您的 Redis (已启用集群模式) 集群的大小。

所有分片 (在 API 和 CLI 中称为节点组) 和节点必须位于同一区域内。但是,您可在该区域内的多个可用区中预配置各个节点。

由于您的数据会在两个或更多节点 (主节点和一个或多个只读副本节点) 中复制,因此只读副本节点会防止可能的数据丢失。为获得更高可靠性和更快的恢复,建议您在不同可用区中创建一个或多个只读副本,并启用具有自动故障转移功能的多可用区而不使用 AOF。启用具有自动故障转移功能的多可用区时,将会禁用 AOF。有关更多信息,请参阅 复制:具有自动故障转移功能的多可用区 (Redis)

复制:限制和局限

  • 节点类型 cache.t1.micro 不支持 AOF。

  • 仅 Redis 版本 2.6.8 和更高版本支持具有自动故障转移功能的多可用区。

  • 节点类型 T1 和 T2 不支持具有自动故障转移功能的多可用区。

有关 AOF 和多可用区的更多信息,请参阅缓解故障

区域和可用区

Amazon ElastiCache 在全球的多个区域中可用。因此,您可在满足您业务需求的位置启动 ElastiCache 集群。例如,您可以在最靠近您客户或者满足特定法规要求的区域启动。

默认情况下,AWS 软件开发工具包、AWS CLI、ElastiCache API 和 ElastiCache 控制台引用的是美国西部(俄勒冈)区域。随着 ElastiCache 不断向新区域扩展,这些区域的新终端节点同样可以在您的 HTTP 请求、AWS 软件开发工具包、AWS CLI 和 ElastiCache 控制台中使用。

从设计而言,每个区域都与其他区域完全隔离。每个区域内有多个可用区。通过在不同的可用区内启动节点,您可以实现可能的最大容错。有关区域和可用区的更多信息,请参阅选择区域和可用区

 图像:区域和可用区

区域和可用区

有关 ElastiCache 及其终端节点支持的区域的信息,请参阅支持的区域和终端节点

ElastiCache 终端节点

终端节点是应用程序用于连接到 ElastiCache 节点或集群的唯一地址。

Memcached 终端节点

Memcached 集群中的每个节点都有自己的终端节点。该集群还具有一个称为配置终端节点 的终端节点。如果您启用 Auto Discovery 并连接到配置终端节点,则即使是在集群中添加或移除节点后,应用程序仍将自动获知每个节点终端节点。有关更多信息,请参阅 节点自动发现 (Memcached)

单节点 Redis 集群终端节点

单节点 Redis 集群的终端节点用于连接到用于读取和写入的集群。

多节点 Redis 集群终端节点

多节点 Redis (已禁用集群模式)集群包含两种类型的终端节点。主终端节点始终连接到集群中的主节点,即使主角色中的特定节点发生更改也是如此。使用主终端节点执行对集群的所有写入操作。

Redis (已禁用集群模式)集群中的读取终端节点始终指向特定节点。当您添加或移除只读副本时,必须更新应用程序中关联的节点终端节点。

Redis (已启用集群模式)集群只有一个配置终端节点。通过连接到配置终端节点,您的应用程序可以查找集群中每个分片的主终端节点和读取终端节点。

有关更多信息,请参阅 查找您的 ElastiCache 终端节点

ElastiCache 参数组

缓存参数组是为受支持的引擎软件管理运行时设置的简单方法。Memcached 和 Redis 具有许多用于控制内存使用率、移出策略、项目大小等的参数。ElastiCache 参数组是特定于 Memcached 或 Redis 的参数的命名集合,您可以将其应用于集群,从而保证该集群中的所有节点都采用完全相同的方法配置。

有关受支持的参数、其默认值以及其中可以修改的参数的列表,请参阅 DescribeEngineDefaultParameters (describe-engine-default-parameters)。

有关 ElastiCache 参数组的更多详细信息,请参阅参数和参数组

ElastiCache 安全性

为增强安全性,ElastiCache 节点访问限制为在“白名单”Amazon EC2 实例上运行的应用程序。可以使用子网组或安全组控制可访问集群的 Amazon EC2 实例。

默认情况下,所有新 ElastiCache 集群都在 Amazon Virtual Private Cloud (Amazon VPC) 环境中启动。您可以使用子网组 授予从在特定子网上运行的 Amazon EC2 实例进行集群访问的权限。如果您选择在 Amazon VPC 外部运行您的集群,则可以创建安全组 以向特定 Amazon EC2 安全组中运行的 Amazon EC2 实例授权。

ElastiCache 个安全组

注意

ElastiCache 安全组仅适用于不在 Amazon Virtual Private Cloud (Amazon VPC) 环境中运行的集群。如果您在 Amazon VPC 中运行 ElastiCache 节点,则您可以使用 Amazon VPC 安全组(因 ElastiCache 安全组而异)控制对缓存集群的访问。

有关在 Amazon VPC 中使用 ElastiCache 的更多信息,请参阅Amazon Virtual Private Cloud (Amazon VPC) 与 ElastiCache

ElastiCache 允许您使用安全组控制对集群的访问。安全组 的行为类似于控制对缓存集群的网络访问的防火墙。默认情况下,对集群的网络访问处于关闭状态。如果希望应用程序可以访问您的集群,必须显式启用从特定 Amazon EC2 安全组中主机进行的访问。配置入口规则后,相同规则便会适用于与该安全组关联的所有集群。

要允许对您的集群进行网络访问,请创建一个安全组并使用 AuthorizeCacheSecurityGroupIngress API 或 authorize-cache-security-group-ingress AWS CLI 命令授权所需的 Amazon EC2 安全组 (该组也会指定允许的 Amazon EC2 实例)。您可以在创建安全组时将它与您的集群关联,或使用 ElastiCache 管理控制台、 ModifyCacheCluster 或者 (modify-cache-cluster) AWS CLI for ElastiCache 命令。

重要

当前没有为集群启用基于 IP 范围的访问控制。集群的所有客户端必须处于 Amazon EC2 网络中,并按照之前所述通过安全组授权。

有关安全组的更多信息,请参阅 安全组 [EC2-Classic]

ElastiCache 子网组

子网组是您可为在 Amazon Virtual Private Cloud (Amazon VPC) 环境中运行的集群指定的子网(通常为私有子网)集合。

如果您在 Amazon VPC 中创建集群,则您必须指定缓存子网组。ElastiCache 使用该缓存子网组选择一个子网和此子网内的 IP 地址,以便与您的缓存节点相关。

有关 Amazon VPC 环境中缓存子网组使用情况的更多信息,请参阅Amazon Virtual Private Cloud (Amazon VPC) 与 ElastiCache第 4 步:授权访问子网和子网组

ElastiCache 备份/快照 (Redis)

备份是 Redis 集群的时间点副本。备份可用于还原现有集群或为新集群做种。备份包含集群中的所有数据和某些元数据。Memcached 引擎不支持备份。

根据您集群上运行的 Redis 版本,备份过程需要不同的预留内存量才能成功。有关更多信息,请参阅:

ElastiCache 事件

当缓存集群上发生重大事件(例如,无法添加节点、成功添加节点、修改安全组等)时,ElastiCache 会向特定的 Amazon SNS 主题发送通知。通过监控关键事件,您可以了解集群的当前状态,并且能够根据事件采取相应的纠正措施。

有关 ElastiCache 事件的更多信息,请参阅监控 ElastiCache 事件