ElastiCache 的组件和功能
您可以在下面找到 Amazon ElastiCache 部署的主要组件概览。
主题
ElastiCache 节点
节点是 ElastiCache 部署中的最小构建块。一个节点可独立于其他节点存在,也可与其他节点之间有某种关系。
节点是固定大小、与网络连接的安全 RAM 区块。每个节点都运行在您创建集群时选择的引擎和版本的实例。如果需要,您可以将集群中的节点纵向扩展或缩减到不同的实例类型。有关更多信息,请参阅 扩缩 ElastiCache。
一个集群中的每个节点都是相同的实例类型且运行相同的缓存引擎。每个缓存节点都有自己的域名服务 (DNS) 名称和端口。支持多种缓存节点类型,每种可有不同的关联内存量。有关受支持的节点实例类型的列表,请参阅受支持的节点类型。
您可以按需付费的形式购买节点,这样一来,您只需为使用的节点付费,您也可以相当优惠的小时费率购买预留节点。如果使用率高,则购买预留节点可节省资金。假设您的集群几乎始终在使用中,并且您有时会添加节点来满足使用峰值的需求。在这种情况下,您可以购买大量预留节点以在大多数情况下运行。您也可以在偶尔需要添加节点的情况下购买随用随付节点。有关预留节点的更多信息,请参阅预留节点。
有关节点的更多信息,请参阅在 ElastiCache 中管理节点。
ElastiCache 分片
Valkey 或 Redis OSS 分片(在 API 和 CLI 中称为节点组)是 1 到 6 个相关节点的分组。启用集群模式的 Valkey 或 Redis OSS 集群始终有至少一个分片。
分片是一种数据库分区方法,它将大型数据库分成更小、更快、更易于管理的部分,这些部分称为数据分片。这可以通过在多个独立部分之间分配操作来提高数据库效率。使用分片可以带来许多好处,包括提高性能、可扩展性和成本效益。
Valkey 和 Redis OSS 集群(已启用集群模式)最多可以拥有 500 个分片,并且跨分片对您的数据进行分区。如果引擎为 Valkey 或 Redis OSS 5.0.6 或更高版本,您可以将每个集群的节点或分片限制增至最多 500 个。例如,您可以选择配置一个 500 节点的集群,范围介于 83 个分片(一个主分片和 5 个副本分片)和 500 个分片(一个主分片,无副本分片)之间。确保可提供足够的 IP 地址来满足增长需求。常见的陷阱包括子网组中的子网 CIDR 范围太小,或者子网被其他集群共享和大量使用。有关更多信息,请参阅 创建子网组。对于低于 5.0.6 的版本,每个集群的限制为 250。
若要请求提高限制,请参阅 AWS Service Limits 并选择限制类型 Nodes per cluster per instance type(每个实例类型的每个集群的节点数)。
多节点分区通过指定一个读/写主节点和 1 到 5 个副本节点来实现复制。有关更多信息,请参阅 使用复制组时的高可用性。
有关分片的更多信息,请参阅在 ElastiCache 中使用分片。
ElastiCache 集群
集群是一个或多个节点的逻辑分组。数据在 Memcached 集群的各节点之间进行分区,并在 Valkey 或 Redis OSS 集群(启用集群模式)的各分片之间进行分区。
许多 ElastiCache 操作面向集群:
-
创建集群
-
修改集群
-
为集群拍摄快照(所有版本的 Redis)
-
删除集群
-
查看集群中的元素
-
在集群中添加和删除成本分配标签
有关更多详细信息,请参阅以下相关主题:
在 ElastiCache 中管理集群"and"在 ElastiCache 中管理节点
有关集群、节点和相关操作的信息。
-
AWS Service Limits:Amazon ElastiCache
有关 ElastiCache 限制的信息,如节点或集群的最大数量。若需要高于某些这些限制,您可用使用 Amazon ElastiCache 缓存节点请求表
提出请求。 -
有关增强 Valkey 或 Redis OSS 集群和复制组的容错能力的信息。
典型集群配置
以下是典型的集群配置。
Valkey 或 Redis OSS 集群
Valkey 或 Redis OSS 集群(已禁用集群模式)始终只包含一个分片(在 API 和 CLI 中为一个节点组)。一个 Valkey 或 Redis OSS 分片包含 1 到 6 个节点。如果分区中有多个节点,则该分区支持复制。在这种情况下,一个节点是读/写主节点,其他为只读副本节点。
为了提高容错能力,我们建议在 Valkey 或 Redis OSS 集群中包含至少两个节点,并启用多可用区。有关更多信息,请参阅 缓解故障。
随着对 Valkey 或 Redis OSS(已禁用集群模式)集群的需求发生变化,您可以纵向扩展或纵向缩减。为此,请将您的集群移到其他节点实例类型。如果您的应用程序属于读取密集型,建议您在集群中添加只读副本。通过执行此操作,您可以将读取分布到更多数量的节点上。
您还可以使用数据分层功能。将访问频率更高的数据存储在内存中,而将访问频率较低的数据存储在磁盘上。使用数据分层的优点是可以减少内存需求。有关更多信息,请参阅 ElastiCache 中的数据分层。
ElastiCache 支持将 Valkey 或 Redis OSS(已禁用集群模式)集群节点类型动态地更改为较大的节点类型。有关纵向扩展或缩减的信息,请参阅扩缩 Valkey 或 Redis OSS(已禁用集群模式)集群或扩缩单节点 Valkey 或 Redis OSS(已禁用集群模式)副本节点。
Memcached 典型集群配置
Memcached 支持每个客户在每个 AWS 区域具有最多 300 个节点,每个集群具有 1-60 个节点。您可以跨 Memcached 集群中的节点对数据进行分区。
在运行 Memcached 引擎时,集群可以由 1-60 个节点构成。您可以将数据库分配到多个节点上。应用程序会对每个节点的终端节点进行读写操作。有关更多信息,请参阅自动发现。
要增强容错能力,可以将您的 Memcached 节点放在集群 AWS 区域内的不同可用区 (AZ) 中。这样一来,可最大程度地减小某个可用区内的故障对整个集群和应用程序的影响。有关更多信息,请参阅 缓解故障。
由于 Memcached 集群需求不断变化的,您可通过添加或删除节点来进行向外扩展或向内扩展,从而跨新数量的节点对数据进行重新分区。对数据进行分区时,建议使用一致性哈希处理。有关一致性哈希处理的更多信息,请参阅配置 ElastiCache 客户端以实现高效负载均衡(Memcached)。
ElastiCache 复制
对于 Valkey 和 Redis OSS,您可以通过在一个分片(在 API 和 CLI 中,称为节点组)中对 2 到 6 个节点进行分组来实现复制。在这些节点中,有一个是读取/写入主节点。所有其他节点均为只读副本节点。复制仅适用于 ElastiCache for Valkey 和 ElastiCache for Redis OSS,不适用于 ElastiCache for Memcached。
每个副本节点保留一个主节点中的数据的副本。复制节点使用异步复制机制来与主节点保持同步。应用程序可从集群中的任何节点进行读取,但只能对主节点进行写入。只读副本通过跨多个终端节点分布读取来增强可扩展性。只读副本还通过维护数据的多个副本来增强容错能力。在多个可用区内定位只读副本可进一步增强容错能力。有关容错能力的更多信息,请参阅缓解故障。
Valkey 或 Redis OSS(已禁用集群模式)集群支持一个分片(在 API 和 CLI 中称为节点组)。
从 API 和 CLI 的视角来看,复制使用了不同的术语来维护与之前版本的兼容性,但结果是相同的。下表显示了用于实现复制的 API 和 CLI 术语。
比较复制:Valkey 或 Redis OSS(已禁用集群模式)与 Valkey 或 Redis OSS(已启用集群模式)--> Valkey 或 Redis OSS 集群(已启用集群模式)与 Valkey 或 Redis OSS 集群(已禁用集群模式)
下表所示为 Valkey 或 Redis OSS(已禁用集群模式)与 Valkey 或 Redis OSS(已启用集群模式)复制组的功能对比。
| Valkey 或 Redis OSS 集群(已禁用集群模式) | Valkey 或 Redis OSS 集群(已启用集群模式) | |
|---|---|---|
| 分区(节点组) | 1 | 1-500 |
| 每个分片的副本数 (节点组) | 0-5 | 0-5 |
| 数据分区 | 否 | 是 |
| 添加/删除副本 | 是 | 是 |
| 添加/删除组节点 | 否 | 是 |
| 支持扩展 | 是 | 是 |
| 支持引擎升级 | 是 | 是 |
| 将副本提升为主副本 | 是 | 自动 |
| 多可用区 | 可选 | 必需 |
| 备份/还原 | 是 | 是 |
| 注意: | ||
| 如果任何主副本没有副本,则在主副本失败时,您将失去该主副本的所有数据。 | ||
| 您可以使用备份和还原功能来迁移到 Valkey 或 Redis OSS(已启用集群模式)。 | ||
| 您可以使用备份和还原功能来调整您的 Valkey 或 Redis OSS(已启用集群模式)集群的大小。 |
所有分区(在 API 和 CLI 中称为节点组)和节点必须位于同一 AWS 区域内。但是,您可以将各个节点预置在该 AWS 区域内的多个可用区中。
只读副本可防止潜在的数据丢失,因为数据是在两个或多个节点(主节点和一个或多个只读副本)上复制的。为获得更高可靠性和更快地恢复,建议您在不同可用区内创建一个或多个只读副本。
您还可以利用全局数据存储。使用 Global Datastore for Redis OSS 功能,您可以跨 AWS 区域执行快速、可靠和安全的完全托管式复制。使用此功能,您可以创建 ElastiCache 的跨区域只读副本集群,以跨 AWS 区域启用低延迟读取和灾难恢复。有关更多信息,请参阅使用全局数据存储跨 AWS 区域进行复制。
复制:限制和局限
节点类型 T1 不支持多可用区。
ElastiCache 端点
端点是应用程序用于连接到 ElastiCache 节点或集群的唯一地址。
Valkey 或 Redis OSS(已禁用集群模式)的单节点端点
单节点 Valkey 或 Redis OSS 集群的端点用于连接到用于读取和写入的集群。
Valkey 或 Redis OSS(已禁用集群模式)的多节点端点
多节点 Valkey 或 Redis OSS(已禁用集群模式)集群包含两种类型的端点。主终端节点始终连接到集群中的主节点,即使主角色中的特定节点发生更改也是如此。使用主终端节点执行对集群的所有写入操作。
使用读取器端点 将在所有只读副本之间均匀地分配指向端点的传入连接。使用单独的节点端点 进行读取操作(在 API/CLI 中,它们被称作读取端点)。
Valkey 或 Redis(已启用集群模式)端点
Valkey 或 Redis OSS 集群(已启用集群模式)有一个单配置端点。通过连接到配置端点,您的应用程序可以查找集群中每个分片的主端点和读取端点。
有关更多信息,请参阅 查找 ElastiCache 中的缓存连接端点。
ElastiCache for Memcached 端点
Memcached 集群中的每个节点都有自己的终端节点。该集群还具有一个称为配置终端节点 的终端节点。如果您启用 Auto Discovery 并连接到配置终端节点,则即使是在集群中添加或移除节点后,应用程序仍将自动获知每个节点终端节点。有关更多信息,请参阅自动发现。
有关更多信息,请参阅 查找 ElastiCache 中的缓存连接端点。
ElastiCache 参数组
缓存参数组是为受支持的引擎软件管理运行时设置的简单方法。参数用于控制内存使用率、移出策略、项目大小等。ElastiCache 参数组是可应用于集群的特定于引擎的参数的命名集合。通过这样做,您可以确保该集群中的所有节点都以完全相同的方式进行配置。
有关受支持的参数、其默认值以及其中可以修改的参数的列表,请参阅 DescribeEngineDefaultParameters(CLI:describe-engine-default-parameters)。
有关 ElastiCache 参数组的更多详细信息,请参阅 使用 ElastiCache 参数组配置引擎参数。
ElastiCache 安全性
为增强安全性,ElastiCache 节点访问仅限于在您允许的 Amazon EC2 实例上运行的应用程序。您可以使用安全组控制可访问集群的 Amazon EC2 实例。
默认情况下,所有新 ElastiCache 集群都在 Amazon Virtual Private Cloud (Amazon VPC) 环境中启动。可以使用子网组授予从在特定子网上运行的 Amazon EC2 实例进行集群访问的权限。
除了限制对节点的访问之外,ElastiCache 还支持运行特定版本 ElastiCache 的节点使用 TLS 和就地加密。有关更多信息,请参阅下列内容:
ElastiCache 子网组
子网组是您可为在 Amazon VPC 环境中运行的集群指定的子网(通常为私有子网)集合。
如果您在 Amazon VPC 中创建集群,则必须指定缓存子网组。ElastiCache 使用该缓存子网组选择与缓存节点关联的子网和子网中的 IP 地址。
有关 Amazon VPC 环境中缓存子网组使用情况的更多信息,请参阅以下内容:
ElastiCache 备份
备份是 Valkey 或 Redis OSS 集群或无服务器缓存的时间点副本,或 Memcached 无服务器缓存的时间点副本。备份可用于还原现有集群或为新集群做种。备份包含集群中的所有数据和某些元数据。
根据您集群上运行的 Valkey 或 Redis OSS 版本,备份过程需要不同的预留内存量才能成功。有关更多信息,请参阅下列内容:
ElastiCache 事件
当集群上发生重要事件时,ElastiCache 会将通知发送到特定 Amazon SNS 主题。这些事件可能包括诸如添加节点失败、添加节点成功、修改安全组等内容。通过监控关键事件,您可以了解集群的当前状态,并且在许多情况下,您都可用采取相应的纠正措施。
有关 ElastiCache 事件的更多信息,请参阅 Amazon SNS 监控 ElastiCache 事件。