AWS ElastiCache - 快速指南

AWS ElastiCache - 概述

ElastiCache 是一种分布式缓存环境,通过使用基于云的缓存来提供更快的数据访问。直接从数据库或通过远程 API 调用查询数据比从缓存查询数据慢得多。AWS 提供的 ElastiCache 服务具有高性能、可扩展性和成本效益。它消除了与管理分布式缓存相关的复杂性。

ElastiCache 的用例

以下是一些利用 ElastiCache 以经济高效的方式快速查询的用例。

  • 实时分析当客户进行在线购物时,必须在客户仍在浏览目录时立即生成产品推荐。这需要将客户已经选择的现有产品存储在缓存中,并进行实时分析,以推荐下一组产品。

  • 消息管理 −当消息通过某些渠道发送给订阅者时,总会有一些订阅者取消订阅,而另一些订阅者加入特定渠道。如果没有缓存机制,可能会因延迟而丢失或放错消息。因此,ElastiCache 有助于保持订阅状态的最新和准确。

  • 排行榜 −在游戏行业中,玩家获得的积分和他们在排行榜上的位置会不断更新。这需要持续更新,而缓存在这里非常需要,以便能够持续显示不断变化的领导位置。

ElastiCache 内容

并非所有东西都可以也不需要缓存。因此,下面将讨论影响需要缓存哪些内容的各种因素。

  • 数据库内容 − 经过复杂且昂贵的查询处理后获取的内容绝对是缓存的候选对象。它通过避免重复查询处理来减少延迟,并降低数据库磁盘读写的成本。

  • 频繁访问的数据 −即使有一种类型的数据不涉及昂贵的查询,如果它比其他数据块访问更频繁,也可能需要缓存。

  • 访问模式 − 如果数据更改太频繁,则缓存没有用。因此,我们需要寻找访问的数据相对静态但用户经常需要的方式。

  • 对陈旧的容忍度 − 一旦缓存,数据就会开始变得陈旧,直到再次读取。在这种情况下,如果需要数据的应用程序对陈旧数据的容忍度很低,那么缓存就无济于事了。例如,当您购买股票时,价格需要当时准确,因此不需要缓存。但昨天的收盘价是静态的,需要缓存,而今天的计算经常会参考昨天的收盘价。

ElastiCache 的组件

AWS 提供的 ElastiCache 具有以下重要组件。我们将在后续章节中看到它们的配置和使用。

  • 节点 − 节点是固定大小的安全网络附加 RAM 块。每个缓存节点都有自己的域名服务 (DNS) 名称和端口。

  • ElastiCache for Redis 分片 − 它是一组一到六个相关节点。一个集群可以有一到 90 个分片。

  • ElastiCache for Redis 集群 − Redis 集群是一个或多个 ElastiCache for Redis 分片的逻辑分组。数据在 Redis(已启用集群模式)集群中的分片中进行分区。

  • ElastiCache for Redis 终端节点 − 这是您的应用程序用于连接 ElastiCache 节点或集群的唯一地址。

ElastiCache 的功能

ElastiCache 的各种功能可帮助我们规划正确的配置和成本估算。重要功能如下。

  • ElastiCache for Redis 复制 − 复制是通过将 2 到 6 个节点分组到分片中来实现的。其中一个节点是读/写主节点。所有其他节点都是只读副本节点。

  • 区域和可用区 − 可以在满足您业务需求的任何位置构建和使用缓存。AWS ElastiCache 服务在全球多个 AWS 区域提供。

  • ElastiCache 参数组 − ElastiCache 参数组是可应用于集群的引擎特定参数的命名集合。它们用于控制内存使用、驱逐策略和项目大小等。

  • ElastiCache for Redis 安全性 −您可以使用子网组或安全组来控制可以访问您集群的 Amazon EC2 实例。

AWS ElastiCache - 环境

要使用任何 AWS 服务,您需要设置一个 AWS 账户。我们假设您已按照 Amazon Web Services aws 主页中提到的指南设置了 AWS 账户。以下是从控制台访问 RDS 服务的初步步骤。

步骤 1

登录亚马逊控制台后,要访问 ElastiCache 服务,我们需要通过在服务标签下的搜索框中搜索 ElastiCache 导航到 Amazon ElastiCache 主页,如下图所示。

Ecache Environment 1

步骤 2

单击上面的链接,我们将获得 Amazon ElastiCache 主页。如果这是您第一次访问 ElastiCache 服务,那么它将向您显示一个显示 ElastiCache 主页的屏幕。但是,如果您已经创建了一些 ElastiCache 资源,则可以通过向下滚动上面的页面来查看这些资源的摘要。屏幕截图如下所示。

Ecache 环境 2

步骤 3

下一个屏幕为我们提供了一个选择所需缓存引擎的选项,这是我们所需缓存服务的配置步骤的开始。

Ecache 环境 3

在下一章中,我们将逐一了解每个 ElastiCache 引擎的配置和使用情况的详细信息。

步骤 4

我们还需要分配适当的策略以授予用户使用 ElastiCache 服务的权限。我们需要将名为 AmazonElastiCacheFullAccess 的 AWS 管理策略附加到现有用户。此角色已预先配置了服务代表您创建服务相关角色所需的权限。

AWS ElastiCache - 接口

上一章中设置的 ElastiCache 也可以通过以下方法之一完成。以下是我们可以通过与 AWS ElastiCache 交互的接口。

AWS 管理控制台

AWS 管理控制台是管理 Amazon ElastiCache 最简单的方法。控制台允许您创建缓存集群、添加和删除缓存节点以及执行其他管理任务,而无需编写任何代码。控制台还提供来自 CloudWatch 的缓存节点性能图表,显示缓存引擎活动、内存和 CPU 利用率以及其他指标。

下图显示了我们登录 AWS 控制台并导航到 ElastiCache 服务后的 ElastiCache 仪表板。

Interface 1

AWS CLI

您还可以使用适用于 ElastiCache 的 AWS 命令​​行界面 (AWS CLI)。AWS CLI 可以轻松执行一次一个操作,例如启动或停止缓存集群。您还可以从您选择的脚本语言调用适用于 ElastiCache 的 AWS CLI 命令,从而自动执行重复任务。

下图显示了 AWS CLI 命令的结果,用于描述我们为创建的 ElastiCache 集群创建的子网组。

Interface 2

AWS SDK

如果您想从应用程序访问 ElastiCache,可以使用 AWS 软件开发工具包 (SDK) 之一。SDK 包装 ElastiCache API 调用,并将您的应用程序与 ElastiCache API 的低级细节隔离开来。您提供凭证,SDK 库负责身份验证和请求签名。

AWS ElastiCache - 启动集群

Redis 集群是一个或多个 ElastiCache 分片的逻辑分组。数据在 Redis 集群中的分片之间进行分区。但您也可以在启用或禁用集群模式的情况下运行 Redis。禁用集群模式后,我们将其称为独立 Redis 集群。启用集群模式后,它被称为具有多个分片的 Redis 集群。

在开始创建集群之前,我们需要确定集群的要求,这将有助于我们在创建集群时对其进行配置。此步骤需要决定的因素如下。

  • 内存 −将数据保存在缓存中所需的总内存。

  • 版本 −您需要运行的 Redis 版本。因为不同版本具有一些功能差异,您可能需要在应用程序中使用这些功能。

  • 写入效率 −如果您的应用程序需要频繁写入新数据或更新现有数据,则需要分配更多的内存。

  • 集群模式 −是独立集群还是具有分片的集群。

在本章中,我们将创建一个独立的 Redis 集群。以下是创建此类集群的步骤。

选择集群类型

登录 Amazon 帐户后,导航到 ElastiCache 主页并选择创建 ElastiCache 集群。弹出以下屏幕,需要我们选择集群引擎。我们选择 Redis,如下所示。

创建集群 1

Redis 设置

接下来,我们选择设置以选择 Redis 引擎版本、节点类型等。此步骤中的重点是选择正确的引擎版本和节点类型,这将决定您为集群使用的计算能力类型,从而决定成本。此步骤中的端口号是平台分配的默认值 6379。下图显示了输入。

创建集群 2

高级 Redis 设置

高级 Redis 设置步骤要求提供详细信息,例如我们将用于此集群的 VPC 和子网。我们选择已在 AWS 账户中创建的现有 VPC ID 之一。我们从其中一个可用区中选择一个子网。

创建集群 3

安全组

在下一步中,我们需要选择安全组和加密选项。为了达到我们的目的,我们选择默认安全组并将加密选项留空。

Create Cluster 4

备份配置

在此步骤中,我们选择如何以及何时备份缓存集群。有一个选项可以启用自动备份,在这种情况下,平台将在没有任何用户干预的情况下执行备份。我们还可以建议一个维护窗口,在其中指定备份的确切时间。我们也可以不设置任何偏好而保留维护窗口。我们还可以选择在此步骤中设置 SNS 通知。在此步骤中,我们将它留空。

创建集群 5

在此步骤结束时,我们单击创建按钮,以便开始创建集群,并将我们上面设置的配置用于此。

下图显示几分钟后集群的状态为可用。

创建集群 6

AWS ElastiCache - 查看集群详细信息

我们可以获取有关集群的详细信息,以规划其他节点或估算成本等。AWS ElastiCache 提供了一个界面,可以在单个网页中访问集群的详细信息,并根据需要使用这些值进行各种调整或估算过程。访问集群详细信息的步骤非常简单,我们可以使用控制台或 AWS CLI。我们将在下面看到这两种方法。

识别集群

在此方法中,我们登录 aws 控制台并转到 ElastiCache 仪表板。从仪表板中,我们选择需要其详细信息的集群的名称。在下图中,访问 ElastiCache 仪表板后,我们会看到集群名称作为超链接。

Viewcluster 1

集群描述

单击上面的集群名称将转到显示两个选项卡的页面,一个选项卡描述节点详细信息,另一个选项卡提供集群描述。接下来,我们单击描述选项卡并获取下面显示的详细信息。您可以发现,下面列出了集群的完整详细信息,其中包括端点、可用区域、安全组和参数组等。我们使用上述端点从 EC2 框访问集群中的节点。

Viewcluster 2

通过 AWS CLI

我们还可以使用 AWS 命令​​行界面或 CLI 获取集群详细信息。我们需要在机器上安装 AWS CLI 工具,以便从那里访问集群详细信息。以下是需要在 EC2 框中执行的命令,它可以为我们提供 json 格式的集群详细信息。输出的格式是作为 AWS CLI 配置过程的一部分配置的。

aws elasticache describe-cache-clusters --cache-cluster-id tpecacheredis

结果可以在下面的屏幕截图中看到。

 Viewcluster 3

AWS ElastiCache - 集群端点

创建集群后,其状态显示为可用,然后您可以采取措施访问集群。但您还必须获得集群的授权访问权限。接下来,您可以登录到 Amazon EC2 实例并连接到集群。为此,您必须首先确定端点。

端点是您可以通过传递缓存引擎所需的命令与集群交互的 URL。我们将在另一章中了解使用这些命令的详细信息。在本章中,我们将看到定位集群端点的步骤。

Redis 端点

要识别 Redis 集群的端点,我们访问 ElastiCache 仪表板并选中我们需要的 Redis 集群名称对应的复选框。它会出现以下屏幕,其中显示了 Redis 集群的主要端点。

访问端点 1

Memcached 端点

它与上面的 Redis 集群的方法相同,只是在 ElastiCache 仪表板中,我们在选择集群名称时选择了 Memcached。在结果中,我们可以看到集群详细信息的描述以及端点的名称。

访问端点 2

AWS ElastiCache - 访问集群

要访问集群中的节点,我们使用与节点关联的端点。我们已经在前面的章节中了解了如何检查端点。在本章中,我们将了解如何配置 EC2 机器安全组和集群的安全组,以便可以从 EC2 访问它。

Redis 集群和 VPC 的配置场景各不相同。集群和 EC2 实例可能位于同一个 VPC 中,也可能位于不同的 VPC 中。当它们位于不同的 VPC 中时,它们可能位于同一个区域,也可能位于不同的区域。此外,ElastiCache 集群可能在客户的数据中心运行。所有这些不同的场景都需要不同的安全组配置方法。

我们考虑最简单的情况,即在同一 VPC 中配置集群和 EC2 实例。以下是实现安全组配置的步骤。

EC2 的安全组

我们创建一个 EC2 实例,它将用于访问集群。此 EC2 实例是创建的默认安全组的一部分。这个想法是使用 AWS CLI 从本地计算机登录到此 EC2 实例。因此,我们为默认安全组配置以下入站条件,以允许本地计算机的 IP 地址通过 SSH 进入 EC2 实例。

访问 Redis 集群 1

集群的安全组

接下来,我们为 Redis 集群配置另一个安全组。目标是允许从 EC2 到包含集群节点的此安全组的入站连接请求。在下图中,我们创建一个名为 sg_redis_cluster 的安全组,并将此安全组分配给 Redis 集群。

在入站条件中,我们选择连接类型为自定义 TCP,并允许默认 VPC 的安全组作为源。

访问 Rredis 集群 2

选择端点

我们从节点的描述选项卡中获取节点的 EbdPoint,如下所示。

访问端点 1

连接到 Redis 端点

接下来,我们使用已安装 AWS CLI 的本地计算机登录到我们上面配置的 EC2 实例。然后导航到如下所示的特定 Redis 目录,并使用 Redis 命令将值填充并检索到 Redis 缓存中。

访问 redis 集群 3

AWS ElastiCache - 修改集群

您需要修改现有集群的原因有很多。例如,您需要将更大的数据集放入缓存中。在这种情况下,您需要将节点类型更改为更高的配置。下面是我们可以修改现有集群配置的步骤。

识别集群

通过这种方法,我们登录到 aws 控制台并转到 ElastiCache 仪表板。从仪表板中,我们选择需要其详细信息的集群的名称。在下图中,我们在访问 ElastiCache 仪表板后看到集群名称作为超链接。

修改集群 1

集群描述

单击上面的集群名称将带我们进入显示两个选项卡的页面,一个选项卡描述节点详细信息,另一个选项卡提供集群描述。接下来,我们单击描述选项卡并获取下面显示的详细信息。您可以发现,下面列出了集群的完整详细信息,包括端点、可用区域、安全组和参数组等。

修改集群 2

修改集群

可以通过单击修改按钮来修改上述集群。弹出以下屏幕,其中包含带有下拉列表的字段,用于更改该字段中的值。修改过程中的一个重要点是立即将更改应用于集群的选项。立即应用框仅适用于节点类型和引擎版本修改。要立即应用更改,请选中"立即应用"复选框。其他修改(例如更改维护窗口)将立即应用。

修改集群 3

AWS ElastiCache - 重新启动集群

很多时候,我们需要更改集群的参数值。要应用新值,需要重新启动集群。这也称为重新启动集群。重启时,集群会刷新所有数据并重新启动引擎,在重启期间无法访问。

以下是重启集群的两个步骤。

识别集群

在此方法中,我们登录到 aws 控制台并转到 ElastiCache 仪表板。从仪表板中,我们选择需要其详细信息的集群的名称。在下图中,我们在 ElastiCache 仪表板中单击集群名称作为超链接后,可以看到集群详细信息的名称。

Reboot Cluster 1

重启集群

选择上图中突出显示的重启按钮。这将显示下一个屏幕,警告集群中的节点几分钟内不可用。单击"重新启动"按钮后,集群重新启动过程将启动,几分钟后集群将再次可用。

重新启动集群 2

AWS ElastiCache - 添加节点

当我们想要扩展集群时,我们可以通过添加更多节点或将现有节点更改为更高的配置来实现。根据所涉及的成本、内存要求等许多因素,我们可以选择其中一种方法。在本章中,我们将了解如何通过向集群添加节点来扩展集群。

要将节点添加到单节点 Redis 集群(未启用复制的集群),我们需要执行两个步骤。第一步是添加复制,第二步是添加副本节点。

以下是将节点添加到现有集群的所有步骤的详细信息。

识别集群

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从仪表板中,我们选择需要其详细信息的集群的名称。在下图中,我们在 ElastiCache 仪表板中单击集群名称作为超链接后,可以看到集群详细信息的名称。

添加节点 1

添加复制

对于未启用复制的单节点 Redis,我们首先添加复制。然后,现有节点将成为启用复制的集群中的主节点。添加复制后,您最多可以向集群添加 5 个副本节点。在"节点"选项卡下,我们选择"添加复制"按钮。然后填写集群复制的描述并单击"创建"。

添加节点 2

添加只读副本

在此步骤中,我们为要添加到集群的节点分配一个名称。单击"添加节点"并输入只读副本的名称。

添加节点 4

单击标有"添加"的按钮,我们得到以下屏幕截图。它显示新节点正在添加到集群。完成需要一段时间。状态显示为正在创建

添加节点 5

刷新网页一段时间后,我们可以看到实际节点已添加到集群中。其端口号和端点随其状态的变化而可用。

添加节点 6

AWS ElastiCache - 删除节点

作为缩小集群或修改集群的一部分,我们可能需要从集群中删除一些现有节点。删除节点的过程与添加节点的过程非常相似。在以下步骤中,我们将了解如何从集群中删除节点。

选择节点

我们登录 AWS 控制台并转到 ElastiCache 仪表板。我们从仪表板中选择要删除其节点的集群的名称。然后,我们会在 ElastiCache 仪表板中看到集群名称的超链接。单击它会显示描述选项卡和节点选项卡。

在节点选项卡中,我们找到操作按钮。单击操作按钮下拉菜单会显示删除节点的选项,如下图所示。

删除节点 1

删除节点

接下来,我们选中要删除的节点对应的复选框,然后按操作按钮上的删除选项。这将启动删除节点的过程。由于该过程需要时间,我们可以在网页上看到删除过程,用红色标记为删除。

删除节点 2

过一会儿,如果我们刷新屏幕,我们可以看到下图中所选节点已从集群中删除。

删除节点 3

AWS ElastiCache - 扩展集群

随着对 ElastiCache 服务的需求增加,我们最终会达到需要增加分配给缓存配置的内存和处理能力的程度。这称为扩展集群。但由于缓存服务器已在运行,因此我们有一定的限制条件,在这种限制条件下,可以进行扩展。

  • 对缓存集群的所有读取和写入均已停止。

  • 在与现有缓存集群相同的可用区中创建具有新节点类型的新缓存集群。

  • 现有缓存集群中的缓存数据将复制到新缓存集群。此过程所需的时间取决于您的节点类型以及缓存集群中的数据量。

  • 使用新缓存集群恢复读取和写入。由于新缓存集群的终端节点与旧缓存集群的终端节点相同,因此无需更新应用程序中的终端节点。

  • ElastiCache 删除旧缓存集群。

以下是我们为实现集群扩展而遵循的两个步骤。

选择集群

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中,我们选择 Redis 作为集群类型。然后,我们在 ElastiCache 仪表板中看到集群名称作为超链接。我们单击集群名称左侧的复选框。这将显示修改集群的选项以及其他选项。

Scalingup cluster

更改节点类型

接下来,我们修改集群以选择所需的更高配置的节点类型。单击修改按钮后,我们可以选择更改节点类型,如下图所示。完成节点类型配置后,单击修改按钮会将新的缓存大小添加到节点。

Scalingup cluster 2

AWS ElastiCache - 删除集群

一旦您实现了使用 ElastiCache 集群的目的,您最终将达到不再需要该集群的程度,因为您有新的设计或正在转向其他设计。因此需要删除集群。一旦集群的状态变为删除,您将不再产生与集群相关的任何费用。

删除集群的步骤与修改集群的步骤非常相似。首先确定要删除的集群名称,然后执行删除操作。以下步骤说明了这一点。

选择集群

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中,我们选择 Redis 作为集群类型。然后,我们在 ElastiCache 仪表板中看到集群名称作为超链接。我们单击集群名称左侧的复选框。这将显示删除集群的选项以及其他选项。

Delete cluster1

删除集群

选中集群左侧的复选框后,我们选择删除按钮。单击删除按钮时,我们会看到一条警告,提示我们确认删除操作的影响。重要的一点是,一旦删除操作开始,就无法停止或撤消。数据将丢失。因此,如果将来有需要,我们应该维护集群的备份。下图显示了删除选项的含义。

删除 cluster2

按下"删除"按钮确认后,我们会看到集群的状态变为删除,如下图所示。刷新屏幕一段时间后,集群将从仪表板中消失。

删除 cluster3

AWS ElastiCache - Redis 分片

分片是 ElastiCache 集群中一个或多个节点的集合。创建它是为了支持将数据复制到 ElastiCache 集群中的各个节点,以便在丢失几个节点的情况下缓存仍然可访问。根据集群模式的配置方式,Redis 集群可以有一个或多个分片。如果禁用集群模式,则 Redis 集群将只有一个分片。

分片 = 主节点 + 只读副本

主节点

分片中的一个节点被指定为主节点。应用程序只能写入主节点。写入主节点的数据将异步传播到所有只读副本。现有主节点可以与其中一个只读副本交换其角色,以获得更好的性能。

只读副本

只读副本维护集群主节点数据的副本。只读副本可提高读取吞吐量,并防止节点发生故障时数据丢失。应用程序可以从集群中的任何节点读取数据,无论是只读副本还是主节点。

禁用集群模式

在此模式下,我们创建一个 Redis 集群,其中只有一个分片包含所有 Redis 节点。其中一个节点被指定为主节点,其他节点称为只读副本节点。

Redis Shards 1

以下是禁用集群模式的 Redis 集群的功能。

  • Redis(已禁用集群模式)集群中的所有节点必须位于同一区域。为了提高容错能力,您可以在该区域内的多个可用区中配置只读副本。

  • 将只读副本添加到集群时,主节点中的所有数据都会复制到新节点。从那时起,每当将数据写入主节点时,更改都会异步传播到所有只读副本。

  • 使用具有副本节点的 Redis(已禁用集群模式)集群来扩展 ElastiCache 的 Redis 解决方案,以处理读取密集型应用程序。

已启用集群模式

在此模式下,我们创建一个 Redis 集群,其中有 1 到 90 个分片。每个分片都有一个主节点和最多五个只读副本节点。分片中的每个只读副本都维护来自分片主节点的数据副本。

Redis Shards 2

以下是禁用集群模式的 Redis 集群的功能。

  • 异步复制机制用于使只读副本与主节点保持同步。应用程序可以从集群中的任何节点读取。应用程序只能写入主节点。

  • 此 Redis 集群中的所有节点必须位于同一区域。

  • 您无法手动将任何副本节点提升为主节点。

  • 您只能通过从备份中恢复来更改集群的结构、节点类型和节点数量。

AWS ElastiCache - 参数组

参数组是控制 ElastiCache 集群行为的参数集合。它们是在创建集群时自动创建的。但很多时候,我们需要将自己的参数列表分组在一起以满足某些特定的配置需求。在这种情况下,我们可以创建自己的自定义参数组。

在我们创建的自定义参数组中,我们可以将参数的值从默认值编辑为所需值。

参数组仪表板

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中选择参数组。然后,我们会看到参数组的名称以及参数组所属的系列。组的系列表示缓存的类型(Redis 或 Memcached)以及引擎的版本。

下面的屏幕显示了从左侧选项卡中选择参数组的结果。

 参数组 1

创建参数组

接下来,我们单击按钮创建参数组来创建参数组。它会提示输入集群的系列,即集群的类型(如 Redis 或 Memcached)以及集群的引擎版本。我们还在输入屏幕中提到了参数组的名称和描述。

 参数组 2

编辑参数

我们可以通过选中参数组左侧的复选框然后单击编辑参数按钮来编辑参数组中的参数,如下所示。

 参数组 3

单击编辑参数按钮后,我们将看到一个窗口,我们可以在其中将自定义值放入列出的各种参数中。更改后,我们可以单击保存更改以使新值生效。

 Parameter Group4

请注意,我们还可以根据需要将参数值恢复为默认值。这样可以让我们返回到原始配置,从而防止我们执行任何错误的参数配置。

AWS ElastiCache - 列出参数

为了控制 Redis 集群节点的运行时行为,我们使用了许多我们在上一章中已经看到的参数。在本章中,我们将看到列出 AWS 平台中不同版本的 Redis 和 Memcached 集群中可用的参数的确切步骤。

参数组仪表板

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中选择参数组。然后,我们会看到参数组的名称以及参数组所属的系列。组的系列表示缓存类型(Redis 或 Memcached)以及引擎版本。

下面的屏幕显示了从左侧选项卡中选择参数组的结果。

Listing parameters 1

我们可以通过将仪表板详细信息滑动到左侧来展开参数组详细信息显示。在下面的屏幕中,我们列出了 AWS 平台中所有可用的最新参数组。描述标签指示集群版本和引擎类型。

Listing Parameters 2

参数列表

接下来,我们可以查看每个参数组下的参数详细信息。单击特定参数组的复选框。这将在屏幕底部显示与该组相关的所有参数的列表。您还可以注意到与该参数组相关的参数数量。

Listing Parameters 3

AWS ElastiCache - 删除参数

参数组是控制 ElastiCache 集群行为的参数集合。但很多时候,我们需要将自己的参数列表分组在一起以满足某些特定的配置需求。在这种情况下,我们可以创建和删除我们自己的自定义参数组。

在本章中,我们将了解如何创建自定义参数组并删除它。

创建参数组

从 ElastiCache 仪表板中,我们选择 Memcached 引擎并转到描述 Memcached 引擎的屏幕。然后我们单击创建参数组按钮并提供以下输入以创建自定义参数组。

Creating Deleting Parameters 1

查看参数组

单击上述屏幕中的创建按钮后,我们创建了自定义参数组。选中自定义组名称左侧的复选框后,我们可以看到此组中的参数列表,如下所示。我们可以看到参数列表及其说明。

创建删除参数 2

删除参数组

接下来,我们可以通过删除参数组来删除参数。我们选择要删除的参数组,然后单击删除按钮。下面的窗口提示确认删除操作,确认后组将被删除。

创建删除参数 3

AWS ElastiCache - 引擎参数

为了控制 Redis 集群节点的运行时行为,我们使用了许多内置于集群的参数。随着集群引擎版本的变化,更多的附加参数也随之出现。许多参数被分组在一起并为该组命名,以便于管理具有依赖关系或相互影响的参数。

特定参数组上的参数值适用于与该组关联的所有节点,无论它们属于哪个集群。为了微调集群的性能,我们可以修改一些参数值或更改集群的参数组。

示例

下面列出了一些参数的外观和控制内容的示例。

名称 用途
cluster-node-timeout 集群节点超时是指节点必须处于不可访问状态的毫秒数,才会被视为处于故障状态。
reserved-memory-percent 为非数据使用而保留的节点内存百分比。通过预留内存,您可以将部分可用内存留作非 Redis 用途,以帮助减少分页量。
cluster-enabled 指示这是集群模式下的 Redis 复制组还是非集群模式下的复制组。
proto-max-bulk-len 单个元素请求的最大大小。
client-query-buffer-limit 单个客户端查询缓冲区的最大大小。
activedefrag 启用主动碎片整理。
maxclients 10000 设置同时连接的最大客户端数量。默认情况下,此限制设置为 10000 个客户端,但是,如果 Redis 服务器无法配置进程文件限制以允许指定的限制,则允许的最大客户端数量将设置为当前文件限制减 32。

参数管理规则

  • 您无法修改或删除默认参数组。如果您需要自定义参数值,则必须创建自定义参数组。

  • 如果您更改集群的参数组,则任何可有条件修改的参数的值在当前参数组和新参数组中都必须相同。

  • 当您更改集群的参数时,更改将立即应用于集群或在集群重新启动后应用。无论您更改的是集群的参数组本身还是集群参数组中的参数值,情况都是如此。

AWS ElastiCache - 备份和恢复

运行 Redis 的 AWS ElastiCache 集群可用于创建备份,然后可用于恢复集群或播种新集群。备份由集群的元数据以及集群中的所有数据组成。所有备份都写入 Amazon Simple Storage Service (Amazon S3)。您可以随时通过创建新的 Redis 集群并使用备份中的数据填充它来恢复数据。每个集群的一个备份都是免费存储的,但额外的备份需要付费。

以下是创建备份的步骤。

选择集群

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中,我们选择集群类型为 Redis。然后,我们在 ElastiCache 仪表板中看到集群名称作为超链接。我们单击集群名称左侧的复选框。这将显示备份集群的选项以及其他选项。

Cluster Backup 1

创建备份

接下来,我们点击备份按钮,通过提供备份集群的名称来配置备份过程。备份方法根据可用内存自动选择。如果有足够的可用内存,则会生成一个子进程,在备份缓存时将所有更改写入缓存的保留内存。

如果可用内存不足,则采用无分支的协作后台进程。无分支方法会影响延迟和吞吐量。

Cluster Backup 2

单击备份按钮后,备份过程开始,并持续一段时间。如下图所示,该过程的状态保持为正在创建。它还提到了缓存大小和备份类型为手动。

Cluster Backup 3

过了一会儿,新备份集群的状态变为可用。这表明备份过程已完成。

Cluster Backup 4

从备份恢复

要使用备份恢复数据,我们从上述备份创建一个新集群。此新副本将用于恢复命令,该命令将数据从备份引入新创建的集群。

Cluster Backup 5

创建新集群后,我们最终使用恢复按钮。在下图中,我们提供了恢复选项的值。

Cluster Backup 6

AWS ElastiCache - 监控节点指标

为了监控集群的使用情况和运行状况,ElastiCache 提供了可通过 CloudWatch 访问的指标。这些指标可以是主机级指标。CPU 利用率是主机级指标的一个示例。还有一些特定于缓存引擎软件的指标。缓存获取和缓存未命中是引擎特定指标的示例。这些指标以 60 秒为间隔针对每个缓存节点进行测量和发布。

主机级指标

主机级指标衡量 ElastiCache 节点所在主机性能的各个方面。以下是一些重要主机级指标的示例。此外,不同的指标具有不同类型的测量。比如一个指标以百分比来衡量,而另一个指标以计数值来衡量。

指标 描述 单位
CPUUtilization 整个主机的 CPU 利用率百分比。由于 Redis 是单线程的,我们建议您监控 EngineCPUUtilization 指标(如果可用)。 百分比
FreeableMemory 主机上可用的空闲内存量。这是从操作系统报告为可释放的 RAM、缓冲区和缓存中得出的。 字节
SwapUsage 主机上使用的交换量。 字节
NetworkBytesIn 主机从网络读取的字节数。
NetworkBytesOut 实例在所有网络接口上发送的字节数。 字节

引擎级指标

这些指标取决于 ElastiCache 中部署的引擎的类型和版本。它们衡量引擎的性能,根据它们的值,我们可以决定是否更换引擎或重新配置该缓存引擎中的某些参数。每个指标都是在缓存节点级别计算的。以下是一些此类指标的列表。

指标 描述 单位
CacheHits 主字典中成功的只读键查找次数。这来自 keyspace_hits 统计信息。 计数
CacheMisses 主字典中不成功的只读键查找次数。这来自 keyspace_misses。 计数
CurrConnections 客户端连接数,不包括来自只读副本的连接。在每种情况下,ElastiCache 使用两到三个连接来监控集群。这是从connected_clients统计数据中得出的。 Count
EngineCPUUtilization EngineCPUUtilization 提供对 Redis 进程 CPU 利用率的访问,以便更好地了解您的 Redis 工作负载。由于 Redis 是单线程的,并且在任何给定时间点只使用一个 CPU 核心,因此 EngineCPUUtilization 可以更精确地了解 Redis 进程本身的负载。 Percent
NewConnections 在此期间服务器已接受的连接总数。这是从 total_connections_received 统计数据中得出的。 Count

监控指标

我们可以查看不同时间段的指标值。例如过去 1 小时或过去 1 天等。为此,我们转到控制台,然后转到 ElastiCache 仪表板。从仪表板中选择集群,然后选择我们要监控其指标的节点的名称。选择节点,然后选中我们要监控的节点名称旁边的复选框。下图显示了弹出的指标窗口。

 监控节点指标 1

进一步向下滚动时,我们会看到更多指标,这些指标以图表的形式呈现,显示不同时间间隔的值。

 监控节点指标 2

AWS ElastiCache - Memcached 和 Redis

Amazon ElastiCache 支持 Redis 和 Memcached 缓存引擎。Redis 是一种开源内存数据结构,可实现分布式内存键值数据库。Memcached 也是一个分布式内存缓存系统。它通常用于通过缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取外部数据源才能将值输入到 Web 应用程序中的次数。

以下是我们应该在 AWS 平台中选择特定引擎的场景。

使用 Redis

以下功能列表显示了 Redis 如何处理更复杂的数据结构、提供持久性和排序等。因此,我们应该在 ElastiCache 中优先选择 Redis 作为平台的场景如下所述。

  • 需要存储复杂的数据类型,例如字符串、哈希、列表、集合、有序集合和位图。

  • 需要对内存中的数据集进行排序或排名。

  • 需要持久化您的密钥存储。

  • 需要复制您的对于读取密集型应用程序,可以将数据从主数据库复制到一个或多个只读副本。

  • 如果主节点发生故障,需要自动故障转移。

  • 如果主节点发生故障,需要自动故障转移。

  • 需要备份和恢复功能。

  • 需要支持多个数据库。

使用 Memcached

Memcached 更适合较简单的数据结构,不提供持久性。因此,以下场景适合使用 Memcached。

  • 需要尽可能简单的数据模型来存储键值对。

  • 需要运行具有多个核心或线程的大型节点

  • 需要能够扩展和缩小,随着系统需求的增加和减少添加和删除节点。

  • 需要缓存对象,例如数据库。

AWS ElastiCache - 访问 Memcached 集群

要访问集群中的节点,我们使用与节点关联的端点。我们已经在前面的章节中了解了如何检查端点。在本章中,我们将了解如何配置 EC2 机器安全组和集群的安全组,以便可以从 EC2 访问它。

Memcached 集群和 VPC 的配置方案有很多种。集群和 EC2 实例可能位于同一 VPC 中,也可能位于不同 VPC 中。当它们位于不同 VPC 中时,它们可能位于同一区域或不同区域。此外,ElastiCache 集群可能在客户的数据中心运行。所有这些不同方案都需要采用不同的安全组配置方法。

我们考虑最简单的情况,即在同一 VPC 中配置集群和 EC2 实例。以下是实现安全组配置的步骤。

EC2 的安全组

我们创建一个 EC2 实例,它将用于访问集群。此 EC2 实例是创建的默认安全组的一部分。我们的想法是使用 AWS CLI 从本地计算机登录到此 EC2 实例。因此,我们为默认安全组配置以下入站条件,以允许本地计算机的 IP 地址通过 SSH 进入 EC2 实例。

访问 Memcache 集群 1

接下来,我们为 Redis 集群配置另一个安全组。目标是允许从 EC2 到包含集群节点的此安全组的入站连接请求。在下图中,我们创建一个名为 sg_memcached 的安全组,并将此安全组分配给 Redis 集群。

访问 Memcache 集群 2

在入站条件中,我们选择连接类型为自定义 TCP,并允许默认 VPC 的安全组作为源。

访问 Memcache 集群 3

选择端点

我们从节点的描述选项卡中获取节点的端点,如下所示。

访问 Memcache 集群 4

安装 Telnet

为了访问 memchached,我们在 EC2 实例中安装 telnet 服务。这将用于连接到 Memcached 集群中的节点。

访问 Memcache 集群 5

连接到 Memcached 端点

接下来,我们使用已安装 AWS CLI 的本地计算机登录到我们上面配置的 EC2 实例。然后导航到如下所示的特定 Redis 目录,并使用 Redis 命令将值填充和检索到 Redis 缓存中。

Access Memcache Cluster 6

AWS ElastiCache - 延迟加载

填充缓存和维护缓存的方法有很多种。这些不同的方法称为缓存策略。维护排行榜数据的游戏网站需要的策略与新闻网站中显示的热门新闻不同。在本章中,我们将研究一种称为延迟加载的策略。

当应用程序请求数据时,请求会在 ElastiCache 的缓存中搜索数据。有两种可能性。数据存在于缓存中或不存在。因此,我们将情况分为以下两类。

缓存命中

  • 应用程序从缓存中请求数据。

  • 缓存查询发现缓存中有更新的数据。

  • 结果返回给请求应用程序。

缓存未命中

  • 应用程序从缓存中请求数据。

  • 缓存查询发现缓存中没有更新的数据。

  • 缓存查询向请求应用程序返回 null。

  • 现在应用程序直接从数据库请求数据并接收数据。

  • 然后,请求应用程序使用直接从数据库收到的新数据更新缓存。

  • 下次请求相同的数据时,它将落入上述缓存命中场景。

上述场景通常可以通过下图描述。

Lazy Loading

Lazy 的优点加载

  • 仅缓存请求的数据 - 由于大多数数据从未被请求,因此延迟加载可避免用未请求的数据填充缓存。

  • 节点故障并不致命 - 当节点发生故障并被新的空节点替换时,应用程序将继续运行,但延迟会增加。当向新节点发出请求时,每次缓存未命中都会导致查询数据库并将数据副本添加到缓存中,以便从缓存中检索后续请求。

延迟加载的缺点

  • 缓存未命中惩罚 −每次缓存未命中都会导致 3 次行程。第一次从缓存中初始请求数据,第二次查询数据库以获取数据,最后将数据写入缓存。这会导致数据到达应用程序时出现明显的延迟。

  • 过时的数据−如果仅在发生缓存未命中时将数据写入缓存,则缓存中的数据可能会变得过时,因为当数据库中的数据发生更改时,缓存中没有更新。此问题由"直写"和"添加 TTL"策略解决,我们将在下一章中看到。

AWS ElastiCache - 直写

与延迟加载一样,直写是另一种缓存策略,但与延迟加载不同,它不会等待命中或未命中。这是一种直接的策略,其中一旦将某些数据写入数据库,缓存和数据库之间的同步就会发生。

从下图中可以轻松理解。

write Through

Write Through 的优点

  • 缓存中的数据永远不会过时 −由于每次将缓存中的数据写入数据库时​​都会更新,因此缓存中的数据始终是最新的。

  • 写入惩罚与读取惩罚

    每次写入都涉及两次行程,一次写入缓存,一次写入数据库。 这会增加流程的延迟。也就是说,最终用户在更新数据时通常比检索数据时更能容忍延迟。人们有一种固有的感觉,即更新需要做更多的工作,因此需要更长的时间。

直写的缺点

  • 数据丢失 −在启动新节点的情况下,无论是由于节点故障还是扩展,都会有丢失的数据,这些数据会一直丢失,直到在数据库中添加或更新。可以通过结合使用延迟加载和直写来最大限度地减少这种情况。

  • 缓存流失 -由于大多数数据从未被读取,因此集群中可能有大量数据从未被读取。这是对资源的浪费。通过添加 TTL,您可以最大限度地减少浪费的空间,我们将在下一章中看到这一点。

AWS ElastiCache - 添加 TTL

TTL 也称为生存时间。它用于利用延迟加载策略和直写策略。这两种策略在前面的章节中讨论过。直写确保数据始终是最新的,但可能会因空节点而失败,并可能用多余的数据填充缓存。通过为每次写入添加生存时间 (TTL) 值,我们能够获得每种策略的优势,并在很大程度上避免用多余的数据弄乱缓存。

TTL 的工作原理

生存时间 (TTL) 是一个整数值,指定密钥过期前的秒数。当应用程序尝试读取过期的密钥时,它将被视为未找到密钥,这意味着将查询数据库以查找密钥并更新缓存。这并不能保证值不会过时,但它可以防止数据变得太过时,并且需要偶尔从数据库刷新缓存中的值。

TTL 示例

以下代码给出了如何使用函数实现 TTL 的示例。它借助了 Memcached 使用的 set 命令。

直写策略的代码

save_customer(customer_id, values)

    customer_record = db.query(""UPDATE Customers WHERE id = {0}"", customer_id, values)
    cache.set(customer_id, customer_record, 300)

    return success

延迟加载策略的代码

get_customer(customer_id)

    customer_record = cache.get(customer_id)
    
    if (customer_record != null)
    if (customer_record.TTL < 300)
    return customer_record // 返回记录并退出函数
    
    // 仅当缓存中不存在记录时才执行此操作 OR
    // TTL >= 300,即缓存中的记录已过期。
    customer_record = db.query(""SELECT * FROM Customers WHERE id = {0}"", customer_id)
    cache.set(customer_id, customer_record, 300) // 更新缓存
    return customer_record

AWS ElastiCache - Memcached VPC

用于连接到 Memcached 集群的 EC2 实例的 VPC 可能与集群的 VPC 不同。在这种情况下,我们需要允许这两个 VPC 之间的连接,以便它们可以交互。从上一章中,我们已经看到了在默认 VPC 中运行的 EC2 实例。现在我们创建一个额外的 VPC,我们可以将 Memcached 集群关联到该 VPC,然后通过对等机制建立与 EC2 实例的连接。

这将需要遵循以下步骤。

创建新 VPC

要创建新 VPC,我们从 AWS 帐户主页转到 VPC 仪表板。然后单击创建 VPC按钮,该按钮将提示我们输入 VPC 的名称和 CIDR 块地址等。填写这些详细信息后,我们可以看到正在创建的以下 VPC。请注意,我们必须小心提及 CIDR 块,因为它不应与具有 EC2 实例的现有 VPC 的 CIDR 块重叠。

 在不同的 vpc 1 中创建

创建 VPC 对等

接下来,我们在上述 VPC 之间创建对等连接。从 VPC 仪表板中,我们选择左侧选项卡中的对等连接选项。这将显示以下屏幕,我们需要填写以下内容。

 在不同的 vpc 2 中创建

单击上面的创建对等连接按钮后,我们必须接受对等连接请求,如下面的屏幕截图所示。

 在不同的 vpc 3 中创建

接下来,我们编辑路由表以反映另一个 VPC 中的目标网关。这将启用 VPC 之间的连接。

 在不同的 vpc 4 中创建

最后,我们可以看到对等连接处于活动状态,这将使我们能够从 EC2 所在的另一个 VPC 连接到 ElastiCache VPC。

 在不同的 vpc 5 中创建

AWS ElastiCache - 创建 Memcached 集群

Memcached 是一个开源、高性能、分布式内存缓存系统,旨在通过减少数据库负载来加速动态 Web 应用程序。它是存储在内存中的字符串、对象等的键值字典,由数据库调用、API 调用或页面渲染产生。AWS 支持为 ElastiCache 配置多个版本的 Memcached 引擎。

在开始创建集群之前,我们需要确定集群的要求,这将有助于我们在创建集群时对其进行配置。此步骤需要确定的因素如下。

  • 内存和处理器要求 –由于集群由许多节点组成,我们需要分析所涉及节点的内存和处理能力。Memcached 引擎是多线程的,因此节点的核心数量会影响集群可用的计算能力。此外,还必须考虑您必须存储的数据量。

  • 集群配置 –Memcached 集群可以有 1 到 20 个节点。Memcached 集群中的数据在集群中的节点之间进行分区。因此,除了节点终端节点之外,Memcached 集群本身还有一个称为配置终端节点的终端节点。节点的终端节点应通过集群终端节点进行配置和访问。

  • 扩展需求 –Amazon ElastiCache for Memcached 集群可以进行扩展或缩减。要扩展或缩减 Memcached 集群,您只需从集群中添加或删除节点。扩展 Memcached 集群时,新集群将从空集群开始

  • 访问要求 –Amazon ElastiCache 集群可从 Amazon EC2 实例访问。根据 VPC 配置,您需要使用安全组配置从 EC2 实例授权对集群的正确访问。

在本章中,我们将按照以下步骤创建集群

选择集群类型

登录到您的 Amazon 帐户后,导航到 ElastiCache 主页并选择创建 ElastiCache 集群。弹出以下屏幕,需要我们选择集群引擎。我们选择 Memcached,如下所示。

Creating mem cluster 1

Memcached 设置

接下来,我们选择设置以选择 Memcached 引擎版本、节点类型等。此步骤中的重要点是选择正确的引擎版本和节点类型,这将决定您为集群使用的计算能力类型,从而决定成本。此步骤中的端口号是平台分配的默认值 11211。下图显示了输入。

Creating mem cluster 2

高级 Memcached 设置

高级 Memcached 设置步骤会询问我们将用于此集群的 VPC 和子网等详细信息。我们选择已在 AWS 帐户中创建的现有 VPC ID 之一。我们从其中一个可用区域中选择一个子网。我们不选择任何特定的时间窗口进行维护,也不订阅 SNS 通知。

Creating mem cluster 3

单击上述屏幕中的创建按钮后,集群创建即开始。访问 Memcached 的仪表板时,我们发现集群的状态为正在创建。

Creating mem cluster 4

过了一会儿,状态变为可用,并显示集群的端点。

Creating mem cluster 5

AWS ElastiCache - 连接到 VPC 中的集群

AWS ElastiCache 平台支持以下场景来连接到 VPC 中的集群。我们已经从前面的章节中知道我们使用 EC2 实例连接到集群中的节点。但集群和 EC2 实例可能保留在同一个 VPC 中,也可能保留在不同的 VPC 中。此外,它们可能保留在 VPC 内的相同或不同的区域中。本章讨论了处理这些场景的方法。

以下是这些场景的访问模式。

  • 当 ElastiCache 集群和 Amazon EC2 实例位于同一 Amazon VPC 中时访问该集群

  • 当 ElastiCache 集群和 Amazon EC2 实例位于不同的 Amazon VPC 但位于同一区域时访问该集群

  • 当 ElastiCache 集群和 Amazon EC2 实例位于不同的 Amazon VPC 但位于不同区域时访问该集群

  • 使用 VPN 连接从在客户数据中心运行的应用程序访问 ElastiCache 集群

  • 使用直接连接从在客户数据中心运行的应用程序访问 ElastiCache 集群

上述第一种情况已在 awselasticache_accessing_memcached_cluster.htm 一章中进行了讨论第二种情况将在本章中讨论。

不同 VPC 的不同区域

在这种情况下,网络在地理上是分散的。因此,我们需要一个中转 VPC。中转 VPC 简化了网络管理,并最大限度地减少了连接多个 VPC 和远程网络所需的连接数。这种设计可以节省时间和精力,还可以降低成本,因为它是虚拟实施的,无需在主机托管中转中心建立物理存在或部署物理网络设备的传统费用。下图说明了这种安排将如何工作。

 Different vpc Connections 1

使用中转 VPC 进行连接的步骤如下。

  • 部署中转 VPC 解决方案。有关更多信息,请参阅如何在 AWS 上构建全球中转网络。

  • 更新 App 和 Cache VPC 中的 VPC 路由表,以通过 VGW(虚拟专用网关)和 VPN 设备路由流量。如果使用边界网关协议 (BGP) 进行动态路由,您的路由可能会自动传播。

  • 修改 ElastiCache 集群的安全组以允许来自应用程序实例 IP 范围的入站连接。请注意,在这种情况下,您将无法引用应用程序服务器安全组。

在客户的数据中心运行

在这种情况下,存在混合架构,客户数据中心中的客户端或应用程序可能需要访问 VPC 中的 ElastiCache 集群。如果客户的 VPC 与数据中心之间通过 VPN 或 Direct Connect 建立连接,则也支持此方案。

通过 VPN 访问

下图显示了中转 VPC 概念如何通过 VPN 工作。

 Different vpc Connections 2

以下是使用 VPN 连接从客户端计算机访问集群的步骤。

  • 通过向您的 VPC 添加硬件虚拟专用网关来建立 VPN 连接。有关更多信息,请参阅向您的 VPC 添加硬件虚拟专用网关。

  • 更新部署 ElastiCache 集群的子网的 VPC 路由表,以允许来自本地应用程序服务器的流量。如果使用 BGP 动态路由,您的路由可能会自动传播。

  • 修改 ElastiCache 集群的安全组,以允许来自本地应用程序服务器的入站连接

通过 Direct Connect 访问

AWS Direct Connect 可让您在网络和其中一个 AWS Direct Connect 位置之间建立专用网络连接。此专用连接可划分为多个虚拟接口。

下图显示了此直接连接的工作原理。

 Different vpc Connections 3

此安排的实施步骤如下。

  • 建立直接连接。有关更多信息,请参阅AWS Direct Connect 入门。

  • 修改 ElastiCache 集群的安全组以允许来自本地应用程序服务器的入站连接。

在上述所有情况下,都会出现网络延迟和额外的数据传输费用。

AWS ElastiCache - 删除 Memcached 集群

一旦您实现了使用 ElastiCache 集群的目的,您最终将达到不再需要该集群的地步,因为您有新的设计或正在转向其他设计。因此需要删除集群。一旦集群状态变为删除,您将不再产生与集群相关的任何费用。

删除集群的步骤与修改集群的步骤非常相似。首先确定要删除的集群名称,然后执行删除操作。以下步骤说明了这一点。

选择集群

我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中,我们选择集群类型为 Memcached。然后我们在 ElastiCache 仪表板中看到集群名称作为超链接。我们单击集群名称左侧的复选框。这显示了删除集群的选项以及其他选项。

删除 Memcache 1

删除集群

选中集群左侧的复选框后,我们选择删除按钮。单击删除按钮时,我们会看到一条警告,提示我们确定删除操作的影响。重要的是,一旦删除操作开始,就无法停止或撤消。

删除 Memcache 2

按下删除按钮确认后,我们会看到集群的状态更改为删除,如下图所示。刷新屏幕一段时间后,集群将从仪表板中消失。

Delete Memcache 3

AWS ElastiCache - IAM 策略

使用任何 AWS 资源都需要 AWS 账户持有者向请求此类权限的用户授予权限。无论是创建、访问还是删除资源,所有此类操作都受此类权限的约束。账户管理员可以将权限策略附加到 IAM 身份,即用户、组和角色。

资源格式

在 Amazon ElastiCache 中,主要资源是缓存集群。这些资源具有与之关联的唯一 Amazon 资源名称 (ARN),如下所示。 ElastiCache 提供了一组操作来处理 ElastiCache 资源。

ElastiCache 策略

可以通过转到 IAM 仪表板,从左侧选项卡中选择策略部分来搜索特定于 ElastiCache 的策略。在搜索框中输入术语 ElastiCache,下面的结果显示与此搜索词相关的所有策略。在下图中,我们看到了 AWS 拥有的 3 个此类策略。

Policy 1

策略摘要

以下是策略摘要的示例,其中列出了允许的操作以及策略所附加到的 ARN。操作中的 * 选项表示允许所有操作。如果我们想将操作限制为几个值,我们可以在策略中列出它们。

Policy 3

ElastiCache 策略操作

每个策略都包含某些操作。这些操作将控制权交给授予策略的用户。我们可以选择上述策略之一,并查看与该策略相关的操作列表。

Policy 2

AWS ElastiCache - SNS 通知

AWS SNS 代表简单通知服务。它用于将消息发送到大量订阅者端点以进行并行处理。例如,用于使用移动推送、SMS 和电子邮件向最终用户发送通知。我们可以向各种订阅者发送有关重要集群事件(如 CPU 或内存利用率等)的消息。这样我们就可以跟踪 ElastiCache 的运行状况。

配置 SNS 是一个简单的过程。以下是我们配置 SNS 主题的步骤。

识别集群

登录 AWS 账户并导航到 ElastiCache 仪表板。接下来,选择相关引擎,Redis 或 Memcached。接下来,选择要分配 SNS 服务的集群的名称。下面的屏幕代表此类集群的一个示例。

SNS Notifications 1

添加 SNS 主题

要添加 SNS 主题,我们单击修改按钮。它显示一个屏幕,我们可以从标记为SNS 通知主题的下拉列表中选择 SNS 主题的名称。如果我们想要输入自定义主题而不是下拉列表中列出的主题,我们可以选择手动 ARN 输入

SNS 通知 2

自定义 SNS 主题

当我们单击"手动 ARN 输入"时,窗口中的下拉列表将变为文本输入。我们可以写下我们想要填写的主题的名称。

SNS Notifications 3

可以重复此步骤以更改主题的名称,或通过在文本输入框中输入空白值来删除现有主题。

AWS ElastiCache - 事件

在 ElastiCache 集群的整个生命周期中,会发生许多事情,例如添加或删除节点、更新 SNS 通知服务等。这些在 ElastiCache 中称为事件。监控事件对于分析和增强集群性能以及解决集群的任何问题非常重要。

这些 ElastiCache 记录与您的集群实例、安全组和参数组相关的事件。此信息包括事件的日期和时间、事件的源名称和源类型以及事件的描述。

访问事件

要访问日志事件,我们登录集群并转到 ElastiCache 仪表板。在左侧,我们可以看到各种 ElastiCache 服务,其中事件就是其中一种服务。从右侧选项卡中,我们选择要监控其事件的特定集群名称。

Memcached Events 1

选择上述选项后,我们可以看到该集群的所有事件列表。它还显示了该集群的时间戳和已发生的事件数。

Memcached Events 2

筛选事件类型

ElastiCache 将事件分为许多类别。这样可以更轻松地将事件列表缩小到我们分析所需的某些类型的事件。在事件窗口的左上角,我们可以看到显示筛选值的下拉列表。选择其中一个值即可获得特定类型的事件。

Memcached Events 3

AWS ElastiCache - 管理标签

ElastiCache 中的标签也称为成本分配标签。它们是与一个 ElastiCache 资源关联的键值对。键和值都区分大小写。您可以使用标签的键来定义类别,标签的值可以是该类别中的项目。例如,您可以将哪个 ElastiCache 集群用于生产,哪些用于开发类别。建议使用一组一致的标签键,以便更轻松地跟踪与您的资源相关的成本。

此外,您还可以使用特定的应用程序名称标记多个资源,然后组织您的账单信息以查看该应用程序在多个服务中的总成本。当您添加、列出、修改、复制或删除标签时,该操作仅适用于指定的集群。

标签的特征

  • 标签键是标签的必需名称。键的字符串值长度可以为 1 到 128 个 Unicode 字符,并且不能以 aws: 为前缀。

  • 标签值是标签的可选值。该值的字符串值的长度可以是 1 到 256 个 Unicode 字符,并且不能以 aws: 作为前缀。

  • ElastiCache 资源最多可以有 50 个标签。

  • 标签集中的值不必唯一。

  • 成本分配标签应用于在 CLI 和 API 操作中指定为 ARN 的 ElastiCache 资源。

管理标签

可以通过转到 ElastiCache 仪表板,然后选择特定的集群类型来创建标签。在我们的案例中,我们选择了 Memcached 集群并使用名为 管理标签 的按钮。

管理标签

添加标签

单击上一步中显示的管理标签按钮,我们将看到一个屏幕,我们可以在其中添加标签键及其值。值字段是可选的。要删除标签,只需使用十字符号即可。单击按钮应用更改以创建实际标签。

管理标签 2

应用标签后,我们可以在集群详细信息页面中看到它们,如下所示。

管理标签 3

AWS ElastiCache - 管理成本

AWS ElastiCache 的成本管理有两种方式。一种是使用标签,另一种是使用预留节点的定价。成本管理的两个关键因素是监控资源的利用率并尽可能准确地预测使用情况。通过研究利用率,我们可以调整配置以减少未使用的部分。通过做出准确的预测,我们可以在较长的时间内仅配置所需的资源,并利用大幅折扣的价格。

使用预留节点

预留节点需要预付费用,具体取决于节点类型和预留期限(1 年或 3 年)。除了预付费用外,还有每小时使用费,该费用明显低于您使用按需节点产生的每小时使用费。要确定预留节点是否能为您的用例节省成本,请确定所需的节点大小和节点数量,估算节点的使用情况,然后比较使用按需节点和预留节点的总成本。

要将预留节点用于 ElastiCache,我们采取以下步骤。

步骤 1

首先,我们导航到 ElastiCache 仪表板。从左侧选项卡中选择预留节点选项。这将显示一个购买预留节点的按钮。它还将列出您已经拥有的预留节点。

管理成本 1

步骤 2

接下来,我们单击购买预留节点按钮。此屏幕可帮助我们选择集群所需的配置。它可帮助我们选择引擎类型、CPU 速度和内存以及我们想要阻止预留节点的使用期限。

管理成本 2

步骤 3

在下一个屏幕中,我们可以在下拉列表中看到各种值。在每个下拉列表中选择一个特定值,我们会在底部看到成本。当前示例显示,使用类型为 m4 large 的重度使用产品 3 年的费用为 1750 美元。与按小时计费的按需定价相比,这非常便宜。

管理成本 3

使用成本分配标签

我们可以使用成本分配标签来组织 AWS 账单,以反映按地区、部门或缓存引擎类型等划分的成本结构。要查看组合资源的成本,我们根据具有相同标签键值的资源来组织账单信息。例如,我们可以用特定的应用程序名称标记多个资源,然后组织您的账单信息以查看该应用程序在多个服务中的总成本。

要按地区跟踪服务成本,我们可以使用标签键服务和地区。在一个资源上,我们可能有值 ElastiCache 和亚太地区(孟买),在另一个资源上可能有值 ElastiCache 和欧盟(法兰克福)。现在我们可以看到按地区细分的 ElastiCache 总成本。