AWS ElastiCache - 快速指南
AWS ElastiCache - 概述
ElastiCache 是一个分布式缓存环境,通过使用基于云的缓存来提供对数据的更快访问。直接从数据库或通过远程 API 调用查询数据比从缓存中查询数据慢得多。AWS 提供了 ElastiCache 服务,它具有高性能、可扩展性和成本效益。它消除了与管理分布式缓存相关的复杂性。
ElastiCache 的用例
以下是利用 ElastiCache 以经济有效的方式加快查询的一些用例。
实时分析 -当客户进行在线购物时,产品推荐必须在客户仍在浏览目录时即时生成。这需要将客户已选择的现有产品存储在缓存中并实时分析,以推荐下一组产品。
消息管理 -当通过某些渠道向订阅者发送消息时,总有一些订阅者取消订阅,而另一些订阅者加入特定渠道。如果没有缓存机制,由于延迟,消息可能会丢失或放错位置。因此,ElastiCache 有助于保持订阅状态的最新和准确。
排行榜 -在游戏行业中,玩家得分及其在排行榜中的位置会不断更新。这需要持续更新,并且这里非常需要缓存才能能够持续显示不断变化的领导者位置。
ElastiCache 内容
并非所有内容都可以并且都需要缓存。因此,影响需要缓存哪种内容的各种因素如下所述。
数据库内容 -经过复杂且昂贵的查询处理后获取的内容绝对是缓存的候选对象。它通过避免重复查询处理来减少延迟,并降低数据库磁盘读/写成本。
频繁访问的数据 -即使某种数据不涉及昂贵的查询,如果它比其他数据块更频繁地被访问,也可能需要缓存。
访问模式 -如果数据变化过于频繁,则缓存就没有用。因此,我们需要寻找用户相对静态但经常需要访问的数据的方法。
对陈旧数据的容忍度 -一旦缓存,数据就会开始变得陈旧,直到再次读取。在这种情况下,如果需要数据的应用程序对陈旧数据容忍度低,则缓存无济于事。例如,当您购买股票时,价格需要在此时准确,因此不需要缓存。但昨天的收盘价今天会被频繁参考进行计算,它是静态的,需要被缓存。
ElastiCache 的组件
AWS 提供的 ElastiCache 具有以下重要组件。我们将在后续章节中了解它们的配置和使用。
节点 -节点是安全、网络连接的 RAM 的固定大小的块。每个缓存节点都有自己的域名服务 (DNS) 名称和端口。
用于 Redis 分片的 ElastiCache -它是一组 1 到 6 个相关节点。一个集群可以有 1 到 90 个分片。
用于 Redis 集群的 ElastiCache -Redis 集群是 1 个或多个用于 Redis 分片的 ElastiCache 的逻辑分组。数据在启用了 Redis(集群模式)的集群中的分片之间进行分区。
用于 Redis 端点的 ElastiCache -它是应用程序用于连接到 ElastiCache 节点或集群的唯一地址。
ElastiCache 的功能
ElastiCache 的各种功能有助于我们规划适当的配置和成本估算。重要的功能如下。
用于 Redis 复制的 ElastiCache -复制是通过将 2 到 6 个节点分组到一个分片中来实现的。这些节点之一是读/写主节点。所有其他节点都是只读副本节点。
区域和可用区 -缓存可以在满足您业务需求的任何位置构建和使用。AWS ElastiCache 服务在全球多个 AWS 区域提供。
ElastiCache 参数组 -ElastiCache 参数组是引擎特定参数的命名集合,您可以将其应用于集群。它们用于控制内存使用、逐出策略和项目大小等。
用于 Redis 安全的 ElastiCache -您可以使用子网组或安全组控制可以访问集群的 Amazon EC2 实例。
AWS ElastiCache - 环境
要使用任何 Aws 服务,您需要设置一个 AWS 账户。我们假设您已按照Amazon Web Servicesaws 主页中提到的指南设置了 AWS 账户。以下是从控制台访问 RDS 服务的初步步骤。
步骤 1
登录亚马逊控制台后,要访问 ElastiCache 服务,我们需要通过在服务标签下的搜索框中搜索 ElastiCache 来导航到 Amazon ElastiCache 主页,如下图所示。
步骤 2
点击上面的链接后,我们将进入 Amazon ElastiCache 主页。如果您是第一次访问 ElastiCache 服务,则它将显示一个显示 ElastiCache 主页的屏幕。但是,如果您已经创建了一些 ElastiCache 资源,则可以通过在上述页面中向下滚动来查看其摘要。下面显示了一个屏幕截图。
步骤 3
下一个屏幕使我们可以选择所需的缓存引擎,这是我们所需缓存服务配置步骤的开始。
在下一章中,我们将逐一了解每个 ElastiCache 引擎的配置和使用细节。
步骤 4
我们还需要分配适当的策略以授予用户使用 ElastiCache 服务的权限。我们需要将名为 AmazonElastiCacheFullAccess 的 AWS 托管策略附加到现有用户。此角色预先配置了服务代表您创建服务链接角色所需的权限。
AWS ElastiCache - 接口
上一章中设置的 ElastiCache 也可以通过以下方法之一完成。以下是我们可以通过其与 AWS ElastiCache 交互的接口。
AWS 管理控制台
AWS 管理控制台是管理 Amazon ElastiCache 的最简单方法。控制台允许您创建缓存集群、添加和删除缓存节点以及执行其他管理任务,而无需编写任何代码。控制台还提供来自 CloudWatch 的缓存节点性能图表,显示缓存引擎活动、内存和 CPU 利用率以及其他指标。
下图显示了登录 AWS 控制台并导航到 ElastiCache 服务后 ElastiCache 仪表板。
AWS CLI
您还可以将 AWS 命令行界面 (AWS CLI) 用于 ElastiCache。AWS CLI 使执行一次性操作变得容易,例如启动或停止缓存集群。您还可以从您选择的脚本语言调用用于 ElastiCache 的 AWS CLI 命令,从而使您可以自动化重复性任务。
下图显示了 AWS CLI 命令的结果,用于描述我们为创建的 ElastiCache 集群创建的子网组。
AWS SDK
如果要从应用程序访问 ElastiCache,可以使用 AWS 软件开发工具包 (SDK) 之一。SDK 封装了 ElastiCache API 调用,并使您的应用程序免受 ElastiCache API 的底层细节的影响。您提供您的凭据,SDK 库将负责身份验证和请求签名。
AWS ElastiCache - 启动集群
Redis 集群是 1 个或多个 ElastiCache 分片的逻辑分组。数据在 Redis 集群中的分片之间进行分区。但是您也可以在启用或禁用集群模式的情况下运行 Redis。在禁用集群模式的情况下,我们将其称为独立 Redis 集群。在启用集群模式的情况下,它称为具有多个分片的 Redis 集群。
在开始创建集群之前,我们需要确定集群的要求,这将有助于我们在创建时配置集群。此步骤需要决定的因素如下。
内存 -在缓存中保存数据所需的总内存。
版本 -您需要运行的 Redis 版本。因为不同的版本在功能方面存在一些差异,您可能需要在您的应用程序中使用这些功能。
写入效率 -如果您的应用程序需要频繁写入新数据或更新现有数据,则需要分配大量内存。
集群模式 -是独立集群还是带分片的集群。
在本节中,我们正在创建一个独立的 Redis 集群。以下是创建此类集群的步骤。
选择集群类型
登录您的 Amazon 账户后,导航到 ElastiCache 主页并选择创建 ElastiCache 集群。将弹出以下屏幕,我们需要在其中选择集群引擎。我们选择 Redis,如下所示。
Redis 设置
接下来,我们选择设置以选择 Redis 引擎版本、节点类型等。此步骤中的要点是选择正确的引擎版本和节点类型,这将决定您用于集群的计算能力类型,从而决定成本。此步骤中的端口号是平台分配的默认值 6379。下图显示了输入。
高级 Redis 设置
高级 Redis 设置步骤会询问有关我们将用于此集群的 VPC 和子网的详细信息。我们选择我们在 AWS 账户中已创建的现有 VPC ID 之一。我们从其中一个可用区选择其中一个子网。
安全组
在下一步中,我们需要选择安全组和加密选项。出于我们的目的,我们选择默认安全组并清空加密选项。
备份配置
在此步骤中,我们选择如何以及何时备份缓存集群。有一个选项可以启用自动备份,在这种情况下,平台将无需任何用户干预即可执行备份。我们还可以建议一个维护窗口,在其中指定备份的确切时间。我们也可以不带任何偏好地保留维护窗口。我们还有选项在此步骤中设置 SNS 通知。我们将在此步骤中将其留空。
在此步骤结束时,我们单击创建按钮,以便在设置上述配置后开始创建集群。
下图显示了集群在几分钟后处于可用状态。
AWS ElastiCache - 查看集群详细信息
我们可以获取集群的详细信息,以便规划添加节点或估算成本等。AWS ElastiCache 提供了一个界面,可以在单个网页中访问集群的详细信息,并在各种调优或估算过程中根据需要使用这些值。访问集群详细信息的步骤非常简单,我们可以使用控制台或 AWS CLI。我们将在下面介绍这两种方法。
识别集群
在这种方法中,我们登录 AWS 控制台并转到 ElastiCache 仪表板。在仪表板中,我们选择需要查看其详细信息的集群的名称。在下图中,我们看到访问 ElastiCache 仪表板后,集群名称以超链接的形式显示。
集群描述
点击上面集群的名称,将我们带到一个页面,该页面显示两个选项卡,一个描述节点详细信息,另一个选项卡提供集群的描述。接下来,我们点击描述选项卡,获取如下所示的详细信息。如您所见,这里列出了集群的完整详细信息,包括端点、可用区、安全组和参数组等。我们使用提到的端点从 EC2 实例访问集群中的节点。
通过 AWS CLI
我们还可以使用 AWS 命令行界面或 CLI 获取集群详细信息。我们需要在将要访问集群详细信息的机器上安装 AWS CLI 工具。下面是需要在 EC2 实例中执行的命令,它可以以 JSON 格式提供集群的详细信息。输出的格式是在 AWS CLI 配置过程中配置的。
aws elasticache describe-cache-clusters --cache-cluster-id tpecacheredis
结果可以在下面的屏幕截图中看到。
AWS ElastiCache - 集群端点
创建集群并显示其状态为可用后,您可以采取措施访问集群。但您还必须授权对集群的访问。接下来,您可以登录到 Amazon EC2 实例并连接到集群。为此,您必须首先确定端点。
端点是您可以通过其与集群交互的 URL,通过传递缓存引擎所需的命令。我们将在另一章中学习使用这些命令的详细信息。在本章中,我们将了解查找集群端点的步骤。
Redis 端点
要识别 Redis 集群的端点,我们访问 ElastiCache 仪表板并选中所需 Redis 集群名称对应的复选框。这将显示如下屏幕,其中显示了 Redis 集群的主端点。
Memcached 端点
它与上面的 Redis 集群方法相同,只是在 ElastiCache 仪表板中,我们在选择集群名称时选择 Memcached。在结果中,我们看到集群详细信息的描述以及端点的名称。
AWS ElastiCache - 访问集群
要访问集群中的节点,我们使用与节点关联的端点。我们已经在上一章中了解了如何检查端点。在本章中,我们将了解如何配置 EC2 机器安全组和集群的安全组,以便从 EC2 访问它。
Redis 集群和 VPC 的配置方式有多种场景。集群和 EC2 实例可能在同一个 VPC 中,也可能在不同的 VPC 中。当它们位于不同的 VPC 中时,它们可能位于同一个区域或不同的区域。此外,ElastiCache 集群可能在客户的数据中心运行。所有这些不同的场景都需要不同的安全组配置方法。
我们考虑最简单的配置情况,即集群和 EC2 实例都位于同一个 VPC 中。以下是实现安全组配置的步骤。
EC2 的安全组
我们创建一个 EC2 实例,该实例将需要访问集群。此 EC2 实例成为创建的默认安全组的一部分。我们的目的是使用 AWS CLI 从本地机器登录到此 EC2 实例。因此,我们为默认安全组配置以下入站条件,以允许本地机器的 IP 地址通过 SSH 连接到 EC2 实例。
集群的安全组
接下来,我们为 Redis 集群配置另一个安全组。目标是允许从 EC2 到此安全组(包含集群节点)的入站连接请求。在下图中,我们创建一个名为 sg_redis_cluster 的安全组,并将此安全组分配给 Redis 集群。
在入站条件中,我们将连接类型选择为自定义 TCP,并允许默认 VPC 的安全组作为源。
选择端点
我们从节点的描述选项卡中获取节点的端点,如下所示。
连接到 Redis 端点
接下来,我们使用已安装 AWS CLI 的本地机器,登录到我们上面配置的 EC2 实例。然后导航到特定的 Redis 目录(如下所示),并使用 Redis 命令将值填充到 Redis 缓存中并从中检索值。
AWS ElastiCache - 修改集群
您可能需要修改现有集群的原因有很多。例如,您对需要放入缓存的大型数据集的需求有所增加。在这种情况下,您需要将节点类型更改为更高的配置。以下是我们可以修改现有集群配置的步骤。
识别集群
在这种方法中,我们登录 AWS 控制台并转到 ElastiCache 仪表板。在仪表板中,我们选择需要查看其详细信息的集群的名称。在下图中,我们看到访问 ElastiCache 仪表板后,集群名称以超链接的形式显示。
集群描述
点击上面集群的名称,将我们带到一个页面,该页面显示两个选项卡,一个描述节点详细信息,另一个选项卡提供集群的描述。接下来,我们点击描述选项卡,获取如下所示的详细信息。如您所见,这里列出了集群的完整详细信息,包括端点、可用区、安全组和参数组等。
修改集群
可以通过点击修改按钮来修改上述集群。将弹出如下屏幕,其中包含带有下拉菜单的字段,用于更改该字段中的值。修改期间的一个重要点是立即将更改应用于集群的选项。**立即应用**复选框仅适用于节点类型和引擎版本修改。要立即应用更改,请选择**立即应用**复选框。其他修改(例如更改维护窗口)会立即应用。
AWS ElastiCache - 重启集群
很多时候,我们需要更改集群的参数值。要应用新值,需要重新启动集群。这也被称为重启集群。重启发生时,集群会刷新其所有数据并重新启动其引擎,并在重启期间无法访问。
以下是重启集群的两个步骤。
识别集群
在这种方法中,我们登录 AWS 控制台并转到 ElastiCache 仪表板。在仪表板中,我们选择需要查看其详细信息的集群的名称。在下图中,我们看到点击 ElastiCache 仪表板中集群名称(以超链接形式显示)后,集群详细信息。
重启集群
选择上图中突出显示的重启按钮。这将显示下一个屏幕,警告集群中的节点将在几分钟内不可用。点击重启按钮后,集群重启过程开始,几分钟后集群将再次可用。
AWS ElastiCache - 添加节点
当我们想要扩展集群时,可以通过添加更多节点或将现有节点更改为更高的配置来实现。根据成本、内存需求等多种因素,我们可以选择其中一种方法。在本章中,我们将了解如何通过向集群添加节点来扩展集群。
要向单节点 Redis 集群(没有启用复制的集群)添加节点,我们需要经历一个两步过程。第一步是添加复制,第二步是添加副本节点。
以下是将节点添加到现有集群的所有步骤的详细信息。
识别集群
我们登录 AWS 控制台并转到 ElastiCache 仪表板。在仪表板中,我们选择需要查看其详细信息的集群的名称。在下图中,我们看到点击 ElastiCache 仪表板中集群名称(以超链接形式显示)后,集群详细信息。
添加复制
对于没有启用复制的单节点 Redis,我们首先添加复制。然后,现有节点成为启用复制的集群中的主节点。添加复制后,您可以向集群添加最多 5 个副本节点。在“节点”选项卡下,我们选择“添加复制”按钮。然后填写集群复制的描述并点击创建。
添加只读副本
在此步骤中,我们为要添加到集群的节点分配一个名称。点击“添加节点”并提及只读副本的名称。
点击标有“添加”的按钮,我们将获得以下屏幕截图。它显示了新节点正在添加到集群中。这需要一段时间才能完成。状态显示为“创建中”。
过一段时间后,刷新网页,我们可以看到节点已实际添加到集群中。它的端口号和端点将可用,并且其状态也会发生变化。
AWS ElastiCache - 删除节点
作为缩减集群规模或修改集群的一部分,我们可能需要从集群中删除一些现有节点。删除节点的过程与添加节点的过程非常相似。在以下步骤中,我们将了解如何从集群中删除节点。
选择节点
我们登录 AWS 控制台并转到 ElastiCache 仪表板。在仪表板中,我们选择需要删除其节点的集群的名称。然后,我们看到 ElastiCache 仪表板中集群名称以超链接的形式显示。点击它将显示描述选项卡和节点选项卡。
在节点选项卡中,我们可以找到“操作”按钮。点击“操作”按钮的下拉菜单,可以看到删除节点的选项,如下图所示。
删除节点
接下来,我们选中要删除的节点对应的复选框,然后从“操作”按钮中选择“删除”选项。这将启动节点删除过程。由于该过程需要一些时间,我们可以在网页上看到用红色标记的删除过程。
过一段时间后,如果我们刷新屏幕,可以看到下图,其中选定的节点已从集群中移除。
AWS ElastiCache - 集群扩展
随着对 ElastiCache 服务的需求增加,我们最终会达到需要增加分配给缓存配置的内存和处理能力的点。这称为扩展集群。但是由于缓存服务器已经在运行,因此我们在扩展时会受到某些限制。
所有对缓存集群的读写操作都将停止。
在与现有缓存集群相同的可用区中创建具有新节点类型的新缓存集群。
将现有缓存集群中的缓存数据复制到新缓存集群。此过程所需的时间取决于您的节点类型以及缓存集群中的数据量。
使用新缓存集群恢复读写操作。由于新缓存集群的端点与旧缓存集群的端点相同,因此无需更新应用程序中的端点。
ElastiCache 删除旧缓存集群。
以下是我们执行集群扩展的两个步骤。
选择集群
我们登录 AWS 控制台并转到 ElastiCache 仪表板。在左侧的仪表板中,我们将集群类型选择为 Redis。然后,我们在 ElastiCache 仪表板中看到集群名称显示为超链接。我们点击集群名称左侧的复选框。这将显示修改集群以及其他选项的选项。
更改节点类型
接下来,我们修改集群以选择所需的更高配置的节点类型。点击“修改”按钮后,我们将获得更改节点类型的选项,如下图所示。在最终确定节点类型配置后点击“修改”按钮,将新的缓存大小引入节点。
AWS ElastiCache - 删除集群
一旦您实现了使用 ElastiCache 集群的目的,您最终会达到不再需要该集群的点,这可能是因为您有新的设计方案或正在转向其他内容。因此,需要删除集群。一旦集群的状态更改为“删除中”,您将停止产生与该集群相关的任何费用。
删除集群的步骤与修改集群的步骤非常相似。您首先确定要删除的集群名称,然后执行删除操作。以下步骤说明了这一点。
选择集群
我们登录 AWS 控制台并转到 ElastiCache 仪表板。在左侧的仪表板中,我们将集群类型选择为 Redis。然后,我们在 ElastiCache 仪表板中看到集群名称显示为超链接。我们点击集群名称左侧的复选框。这将显示删除集群以及其他选项的选项。
删除集群
在选中集群左侧的复选框后,我们选择“删除”按钮。点击“删除”按钮后,系统会弹出一个警告,提示我们确认删除操作的影响。重点是,一旦删除操作开始,就无法停止或撤消。数据将丢失。因此,如果我们将来有任何需要,应该为集群维护备份。下图显示了删除选项的影响。
通过点击“删除”按钮确认后,我们看到集群的状态更改为“删除中”,如下图所示。过一段时间后刷新屏幕,集群将从仪表板中消失。
AWS ElastiCache - Redis 分片
分片是 ElastiCache 集群中一个或多个节点的集合。创建分片是为了支持将数据复制到 ElastiCache 集群中的各个节点,以便在少数节点丢失的情况下缓存仍然可访问。根据集群模式的配置方式,Redis 集群可以有一个或多个分片。如果禁用集群模式,则 Redis 集群将只有一个分片。
A shard = Primary Node + Read Replicas
主节点
分片中的一个节点被指定为主节点。应用程序只能写入主节点。写入主节点的数据会异步传播到所有读取副本。现有的主节点可以与其一个读取副本交换角色以提高性能。
读取副本
读取副本维护集群主节点数据的副本。读取副本提高读取吞吐量,并在节点故障的情况下防止数据丢失。应用程序可以读取集群中的任何节点,无论是读取副本还是主节点。
禁用集群模式
在这种模式下,我们创建了一个 Redis 集群,其中只有一个分片包含所有 Redis 节点。其中一个节点被指定为主节点,其他节点称为只读副本节点。
以下是禁用集群模式的 Redis 集群的功能。
Redis(禁用集群模式)集群中的所有节点都必须位于同一区域。为了提高容错能力,您可以在该区域内的多个可用区中配置读取副本。
当您向集群添加读取副本时,主节点中的所有数据都会复制到新节点。从那时起,每当向主节点写入数据时,更改都会异步传播到所有读取副本。
将 Redis(禁用集群模式)集群与副本节点一起使用,可以扩展您的 ElastiCache Redis 解决方案以处理读密集型应用程序。
启用集群模式
在这种模式下,我们创建了一个 Redis 集群,其中有 1 到 90 个分片。每个分片都有一个主节点和最多五个只读副本节点。分片中的每个读取副本都维护分片主节点数据的副本。
以下是禁用集群模式的 Redis 集群的功能。
异步复制机制用于使读取副本与主节点保持同步。应用程序可以读取集群中的任何节点。应用程序只能写入主节点。
此 Redis 集群中的所有节点都必须位于同一区域。
您无法手动将任何副本节点提升为主节点。
您只能通过从备份还原来更改集群的结构、节点类型和节点数量。
AWS ElastiCache - 参数组
参数组是控制 ElastiCache 集群行为的参数集合。它们在创建集群时会自动创建。但很多时候,我们需要将我们自己的参数列表组合在一起以满足某些特定的配置需求。在这种情况下,我们可以创建我们自己的自定义参数组。
在我们创建的自定义参数组中,我们可以将参数的值从默认值编辑为所需的值。
参数组仪表板
我们登录 AWS 控制台并转到 ElastiCache 仪表板。在左侧的仪表板中,我们选择“参数组”。然后,我们看到参数组的名称以及该参数组所属的族。组的族指示缓存的类型(Redis 或 Memcached)以及引擎的版本。
以下屏幕显示了从左侧选项卡中选择参数组的结果。
创建参数组
接下来,我们点击“创建参数组”按钮来创建参数组。它会提示输入集群的族,即集群的类型(如 Redis 或 Memcached)以及集群的引擎版本。我们还在输入屏幕中提及参数组的名称和描述。
编辑参数
我们可以通过选中参数左侧的复选框,然后点击“编辑参数”按钮来编辑参数组中的参数,如下所示。
点击“编辑参数”按钮后,我们将获得一个窗口,我们可以在其中将自定义值放入列出的各种参数中。更改后,我们可以点击“保存更改”以使新值生效。
请注意,如果我们需要,我们还可以选择将参数值恢复为默认值。这可以保护我们免受任何不正确的参数配置的影响,使我们能够恢复到原始配置。
AWS ElastiCache - 列出参数
为了控制 Redis 集群节点的运行时行为,我们使用了许多参数,这些参数我们已经在上一章中看到过。在本章中,我们将看到在 AWS 平台上列出 Redis 和 Memcached 集群的不同版本中可用参数的确切步骤。
参数组仪表板
我们登录 AWS 控制台并转到 ElastiCache 仪表板。在左侧的仪表板中,我们选择“参数组”。然后,我们看到参数组的名称以及该参数组所属的族。组的族指示缓存的类型(Redis 或 Memcached)以及引擎的版本。
以下屏幕显示了从左侧选项卡中选择参数组的结果。
我们可以通过将仪表板详细信息滑到左侧来展开参数组详细信息显示。在以下屏幕中,我们列出了 AWS 平台上可用的所有最新参数组。描述标签指示集群版本和引擎类型。
参数列表
接下来,我们可以查看每个参数组下参数的详细信息。点击特定参数组的复选框。这将在屏幕底部显示与该组关联的所有参数的列表。您还可以注意到与该参数组关联的参数数量。
AWS ElastiCache - 删除参数
参数组是控制 ElastiCache 集群行为的参数集合。但很多时候,我们需要将我们自己的参数列表组合在一起以满足某些特定的配置需求。在这种情况下,我们可以创建和删除我们自己的自定义参数组。
本章将介绍如何创建自定义参数组以及如何删除它。
创建参数组
从 ElastiCache 控制台,我们选择 Memcached 引擎并进入描述 Memcached 引擎的页面。然后,我们点击“创建参数组”按钮,并提供以下输入来创建自定义参数组。
查看参数组
在上面页面中点击“创建”按钮后,我们创建了自定义参数组。如下所示,选择自定义组名称左侧的复选框后,我们可以查看该组中的参数列表。我们可以看到参数列表及其描述。
删除参数组
接下来,我们可以通过删除参数组来删除参数。我们选择要删除的参数组,然后点击“删除”按钮。如下窗口将提示确认删除操作,确认后该组将被删除。
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 控制台中看到集群名称作为超链接。我们点击集群名称左侧的复选框。这将显示备份集群以及其他选项。
创建备份
接下来,我们点击“备份”按钮,通过为备份集群提供名称来配置备份过程。备份方法会根据可用内存自动选择。如果可用内存足够,则会生成一个子进程,该子进程在备份缓存时将所有更改写入缓存的保留内存。
如果可用内存不足,则会采用无分叉的协作式后台进程。无分叉方法可能会影响延迟和吞吐量。
点击“备份”按钮后,备份过程开始,并持续一段时间。如下图所示,进程的状态保持为“创建中”。它还提到了缓存大小和备份类型为“手动”。
一段时间后,新备份集群的状态更改为“可用”。这表示备份过程已完成。
从备份恢复
要使用备份恢复数据,我们从上述备份创建一个新集群。此新副本将用于恢复命令,该命令将从备份中将数据引入新创建的集群。
在创建新集群后,我们最终使用“恢复”按钮。在下图中,我们为恢复选项提供值。
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 统计信息。 | 计数 |
EngineCPUUtilization | EngineCPUUtilization 提供对 Redis 进程 CPU 利用率的访问,以便更好地了解您的 Redis 工作负载。由于 Redis 是单线程的,并且在任何给定时间仅使用一个 CPU 内核,因此 EngineCPUUtilization 提供了对 Redis 进程本身负载的更精确的可见性。 | 百分比 |
NewConnections | 在此期间服务器已接受的连接总数。这源自 total_connections_received 统计信息。 | 计数 |
监控指标
我们可以查看不同时间段内指标的值。例如,过去 1 小时或过去 1 天等。为此,我们转到控制台,然后转到 ElastiCache 控制台。从控制台中选择集群,然后选择要监控其指标的节点的名称。选择节点,然后选择要监控的节点名称旁边的复选框。下图显示了弹出的指标窗口。
向下滚动后,我们看到更多指标,这些指标以图形形式显示,显示不同时间间隔的值。
AWS ElastiCache - Memcached 和 Redis
Amazon ElastiCache 支持 Redis 和 Memcached 缓存引擎。Redis 是一个开源的内存数据结构,实现了分布式内存键值数据库。Memcached 也是一个分布式内存缓存系统。它通常用于通过缓存数据和对象来加速动态数据库驱动的网站,从而减少读取外部数据源以获取值到 Web 应用程序的次数。
以下是我们在 AWS 平台上选择特定引擎的场景。
使用 Redis
以下功能列表显示了 Redis 如何能够处理更复杂的数据结构,提供持久性和排序等。因此,此处描述了我们应该选择 Redis 作为 ElastiCache 中平台的场景。
需要存储复杂的数据类型,例如字符串、哈希、列表、集合、有序集合和位图。
需要对内存数据集进行排序或排名。
需要密钥存储的持久性。
需要将数据从主节点复制到一个或多个只读副本,以用于读密集型应用程序。
如果主节点发生故障,需要自动故障转移。
如果主节点发生故障,需要自动故障转移。
需要备份和恢复功能。
需要支持多个数据库。
使用 Memcached
Memcached 更适合存储简单的 数据结构,并且不提供持久性。因此,以下场景适合使用 Memcached。
需要尽可能简单的 数据模型来存储键值对。
需要运行具有多个核心或线程的大型节点。
需要能够扩展和缩减,根据系统需求的增加和减少添加和删除节点。
需要缓存对象,例如数据库。
AWS ElastiCache - 访问 Memcached 集群
要访问集群中的节点,我们使用与节点关联的端点。我们已经在上一章中了解了如何检查端点。在本章中,我们将了解如何配置 EC2 机器安全组和集群的安全组,以便从 EC2 访问它。
Memcached 集群和 VPC 的配置方式有多种。集群和 EC2 实例可能位于同一个 VPC 或不同的 VPC 中。当它们位于不同的 VPC 中时,它们可能位于同一个区域或不同的区域。此外,ElastiCache 集群也可能运行在客户的数据中心。所有这些不同的场景都需要不同的安全组配置方法。
我们考虑最简单的配置情况,即集群和 EC2 实例都位于同一个 VPC 中。以下是实现安全组配置的步骤。
EC2 的安全组
我们创建一个 EC2 实例,该实例将需要访问集群。此 EC2 实例成为创建的默认安全组的一部分。我们的目的是使用 AWS CLI 从本地机器登录到此 EC2 实例。因此,我们为默认安全组配置以下入站条件,以允许本地机器的 IP 地址通过 SSH 连接到 EC2 实例。
接下来,我们为 Redis 集群配置另一个安全组。目的是允许来自 EC2 的入站连接请求到包含集群节点的此安全组。在下图中,我们创建一个名为 sg_memcached 的安全组,并将此安全组分配给 Redis 集群。
在入站条件中,我们将连接类型选择为自定义 TCP,并允许默认 VPC 的安全组作为源。
选择端点
我们从节点的描述选项卡中获取节点的端点,如下所示。
安装 Telnet
要访问 memchached,我们在 EC2 实例中安装 telnet 服务。这将用于连接到 Memcached 集群中的节点。
连接到 Memcached 端点
接下来,我们使用已安装 AWS CLI 的本地机器,登录到我们上面配置的 EC2 实例。然后导航到特定的 Redis 目录(如下所示),并使用 Redis 命令将值填充到 Redis 缓存中并从中检索值。
AWS ElastiCache - 延迟加载
填充缓存并保持缓存维护有多种方法。这些不同的方法称为缓存策略。维护排行榜数据的游戏网站需要的策略与新闻网站上显示的热门新闻的策略不同。在本章中,我们将学习一种称为延迟加载的策略。
当应用程序请求数据时,请求会在 ElastiCache 的缓存中搜索数据。有两种可能性。数据要么存在于缓存中,要么不存在。相应地,我们将情况分为以下两类。
缓存命中
应用程序从缓存请求数据。
缓存查询发现缓存中存在更新后的数据。
结果返回给请求应用程序。
缓存未命中
应用程序从缓存请求数据。
缓存查询发现缓存中不存在更新后的数据。
缓存查询向请求应用程序返回空值。
现在应用程序直接从数据库请求数据并接收数据。
然后,请求应用程序使用从数据库直接接收的新数据更新缓存。
下次请求相同数据时,它将属于上面的缓存命中场景。
上述场景通常可以用下图表示。
延迟加载的优点
仅缓存请求的数据-由于大多数数据从未被请求,因此延迟加载避免了用未被请求的数据填充缓存。
节点故障不是致命的-当节点发生故障并被新的空节点替换时,应用程序继续运行,尽管延迟会增加。随着对新节点的请求,每次缓存未命中都会导致对数据库的查询并将数据副本添加到缓存中,以便后续请求从缓存中检索数据。
延迟加载的缺点
缓存未命中惩罚 -每次缓存未命中都会导致 3 次往返。一次,从缓存中请求初始数据,两次,查询数据库以获取数据,最后将数据写入缓存。这可能会导致数据到达应用程序的延迟显著增加。
陈旧数据 -如果数据仅在发生缓存未命中时写入缓存,则缓存中的数据可能会变得陈旧,因为当数据库中的数据发生更改时,缓存中没有更新。此问题可以通过写入直通和添加 TTL 策略来解决,我们将在接下来的章节中看到。
AWS ElastiCache - 写入直通
与延迟加载类似,写入直通是另一种缓存策略,但与延迟加载不同,它不会等待命中或未命中。它是一种简单的策略,其中缓存和数据库之间的同步会在数据写入数据库后立即发生。
可以从下图轻松理解。
写入直通的优点
缓存中的数据永远不会陈旧 -由于每次将数据写入数据库时都会更新缓存中的数据,因此缓存中的数据始终是最新的。
写入惩罚与读取惩罚 -
每次写入都涉及两次往返,一次写入缓存,一次写入数据库。这会增加进程的延迟。也就是说,最终用户通常在更新数据时比在检索数据时更能容忍延迟。有一种固有的感觉,即更新需要更多工作,因此需要更长时间。
写入直通的缺点
缺少数据 -在启动新节点的情况下,无论是由于节点故障还是扩展,都会丢失数据,并且在数据库中添加或更新数据之前,数据将继续丢失。可以通过结合使用延迟加载和写入直通来最大程度地减少这种情况。
缓存抖动-由于大多数数据从未被读取,因此集群中可能存在大量从未被读取的数据。这是资源浪费。通过添加 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 // return the record and exit function // do this only if the record did not exist in the cache OR // the TTL was >= 300, i.e., the record in the cache had expired. customer_record = db.query(""SELECT * FROM Customers WHERE id = {0}"", customer_id) cache.set(customer_id, customer_record, 300) // update the cache return customer_record
AWS ElastiCache - Memcached VPC
用于连接到 Memcached 集群的 EC2 实例的 VPC 可能与集群所在的 VPC 不相同。在这种情况下,我们需要允许这两个 VPC 之间的连接,以便它们可以交互。从上一章,我们已经看到一个在默认 VPC 中运行的 EC2 实例。现在我们创建一个额外的 VPC,我们可以将 Memcached 集群与之关联,然后通过对等连接机制建立到 EC2 实例的连接。
这将需要遵循以下步骤。
创建新的 VPC
要创建新的 VPC,我们从 AWS 账户的主页转到 VPC 仪表板。然后,我们点击“创建 VPC”按钮,这将提示我们输入 VPC 的名称和 CIDR 块地址等信息。填写这些详细信息后,我们可以看到创建了以下 VPC。请注意,我们必须谨慎地提及 CIDR 块,因为它不应与包含 EC2 实例的现有 VPC 的 CIDR 块重叠。
创建 VPC 对等连接
接下来,我们在上述两个 VPC 之间创建对等连接。从 VPC 仪表板,我们在左侧选项卡中选择“对等连接”选项。这将显示以下屏幕,我们需要按如下所示填写。
点击上面的“创建对等连接”按钮后,我们必须接受对等连接请求,如下面的屏幕截图所示。
接下来,我们编辑路由表以反映另一个 VPC 中的目标网关。这将启用 VPC 之间的连接。
最后,我们可以看到对等连接处于活动状态,这将使我们能够从另一个 VPC(EC2 所在的位置)连接到 ElastiCache VPC。
AWS ElastiCache - 创建 Memcached 集群
Memcached 是一种开源的高性能分布式内存缓存系统,旨在通过减少数据库负载来加快动态 Web 应用程序的速度。它是一个字符串、对象等的键值字典,存储在内存中,这些数据源于数据库调用、API 调用或页面呈现。AWS 支持配置 ElastiCache 的多个版本的 Memcached 引擎。
在开始创建集群之前,我们需要确定集群的要求,这将有助于我们在创建时配置集群。此步骤需要决定的因素如下。
内存和处理器需求 –由于集群由许多节点组成,因此我们需要分析所涉及节点的内存和处理能力。Memcached 引擎是多线程的,因此节点的核心数量会影响集群可用的计算能力。此外,还需要考虑要存储的数据量。
集群配置 –Memcached 集群可以有 1 到 20 个节点。Memcached 集群中的数据在集群中的节点之间进行分区。因此,除了节点端点外,Memcached 集群本身还有一个称为配置端点的端点。节点的端点应配置并可通过集群端点访问。
扩展需求 – Amazon ElastiCache for Memcached 集群可以进行横向扩展或纵向扩展。要对 Memcached 集群进行横向或纵向扩展,只需添加或删除集群中的节点即可。当扩展 Memcached 集群时,新集群将从空状态开始。
访问要求 – 可以从 Amazon EC2 实例访问 Amazon ElastiCache 集群。根据 VPC 配置,您需要使用安全组配置授权从 EC2 实例到集群的正确访问权限。
本章将介绍创建集群的步骤,如下所示
选择集群类型
登录您的 Amazon 账户后,导航到 ElastiCache 主页并选择创建 ElastiCache 集群。将弹出以下屏幕,需要我们选择集群引擎。我们选择 Memcached,如下所示。
Memcached 设置
接下来,我们选择设置以选择 Memcached 引擎版本、节点类型等。此步骤中的重点是选择正确的引擎版本和节点类型,这将决定您用于集群的计算能力类型,从而决定成本。此步骤中的端口号是平台分配的默认值 11211。下图显示了输入。
高级 Memcached 设置
高级 Memcached 设置步骤要求提供诸如我们将用于此集群的 VPC 和子网之类的详细信息。我们选择已经在 AWS 账户中创建的现有 VPC ID 之一。我们从某个可用区选择一个子网。我们不选择任何特定的维护时间窗口,也不订阅 SNS 通知。
单击上述屏幕中的创建按钮后,集群创建将开始。访问 Memcached 的仪表板后,我们发现集群的状态为创建中。
一段时间后,状态将更改为可用,并显示集群的端点。
AWS ElastiCache - 连接到 VPC 中的集群
AWS ElastiCache 平台支持以下方案来连接到 VPC 中的集群。我们已经从前面的章节中知道,我们使用 EC2 实例连接到集群中的节点。但是集群和 EC2 实例可能位于同一个 VPC 或不同的 VPC 中。此外,它们可能位于 VPC 内的相同或不同区域中。本章将讨论处理这些方案的方法。
以下是这些方案的访问模式。
当 Amazon ElastiCache 集群和 Amazon EC2 实例位于同一个 Amazon VPC 中时访问
当 Amazon ElastiCache 集群和 Amazon EC2 实例位于不同的 Amazon VPC 中但在同一区域时访问
当 Amazon ElastiCache 集群和 Amazon EC2 实例位于不同的 Amazon VPC 中但在不同区域时访问
使用 VPN 连接从客户数据中心运行的应用程序访问 Amazon ElastiCache 集群
使用直接连接从客户数据中心运行的应用程序访问 Amazon ElastiCache 集群
上面第一个场景已在 awselasticache_accessing_memcached_cluster.htm 章节中介绍,第二个场景将在本章节中讨论。
不同 VPC 的不同区域
在这种情况下,网络在地理上分散。因此,我们需要一个中转 VPC。中转 VPC 简化了网络管理,并最大限度地减少了连接多个 VPC 和远程网络所需的连接数量。此设计可以节省时间和精力,并降低成本,因为它是在虚拟环境中实施的,无需在异地中转中心建立物理存在或部署物理网络设备的传统费用。下图说明了这种安排的工作方式。
使用中转 VPC 连接的步骤如下所示。
部署中转 VPC 解决方案。有关更多信息,请参阅如何在 AWS 上构建全局中转网络。
更新 App 和 Cache VPC 中的 VPC 路由表,以通过 VGW(虚拟专用网关)和 VPN 设备路由流量。在使用边界网关协议 (BGP) 的动态路由的情况下,您的路由可能会自动传播。
修改 ElastiCache 集群的安全组以允许来自应用程序实例 IP 范围的入站连接。请注意,在这种情况下,您将无法引用应用程序服务器安全组。
在客户数据中心运行
在这种情况下,存在混合架构,其中客户数据中心中的客户端或应用程序可能需要访问 VPC 中的 ElastiCache 集群。只要客户的 VPC 和数据中心之间存在通过 VPN 或 Direct Connect 的连接,此方案也受支持。
通过 VPN 访问
下图显示了中转 VPC 概念如何通过 VPN 工作。
以下是使用 VPN 连接从客户端计算机访问集群的步骤。
通过向您的 VPC 添加硬件虚拟专用网关来建立 VPN 连接。有关更多信息,请参阅向您的 VPC 添加硬件虚拟专用网关。
更新部署 ElastiCache 集群的子网的 VPC 路由表,以允许来自本地应用程序服务器的流量。在使用 BGP 的动态路由的情况下,您的路由可能会自动传播。
修改 ElastiCache 集群的安全组以允许来自本地应用程序服务器的入站连接
通过 Direct Connect 访问
AWS Direct Connect 允许您在您的网络和 AWS Direct Connect 位置之一之间建立专用网络连接。这是一种专用连接,可以将其划分为多个虚拟接口。
下图显示了此直接连接的工作方式。
此安排的实施步骤如下。
建立 Direct Connect 连接。有关更多信息,请参阅AWS Direct Connect 入门。
修改 ElastiCache 集群的安全组以允许来自本地应用程序服务器的入站连接。
在所有上述方案中,都会存在网络延迟和额外的传输费用。
AWS ElastiCache - 删除 Memcached 集群
一旦您实现了使用 ElastiCache 集群的目的,最终您将到达不再需要该集群的点,因为您可能已实施了新的设计或正在迁移到其他内容。因此需要删除集群。一旦集群的状态更改为删除中,您将停止产生与集群相关的任何费用。
删除集群的步骤与修改集群的步骤非常相似。您首先确定要删除的集群名称,然后执行删除操作。以下步骤说明了这一点。
选择集群
我们登录 AWS 控制台并转到 ElastiCache 仪表板。从左侧的仪表板中,我们将集群类型选择为 Memcached。然后,我们看到集群名称在 ElastiCache 仪表板中显示为超链接。我们单击集群名称左侧的复选框。这将显示删除集群以及其他选项的选项。
删除集群
选择集群左侧的复选框后,我们选择删除按钮。单击删除按钮后,系统会显示一个警告,提示我们确保了解删除操作的影响。重点是,一旦删除操作开始,就无法停止或撤消。
通过点击“删除”按钮确认后,我们看到集群的状态更改为“删除中”,如下图所示。过一段时间后刷新屏幕,集群将从仪表板中消失。
AWS ElastiCache - IAM 策略
使用任何 AWS 资源都需要 AWS 账户持有者向请求此权限的用户授予权限。无论是创建、访问还是删除资源,所有此类操作都受此类权限的约束。账户管理员可以将权限策略附加到 IAM 标识,这些标识是用户、组和角色。
资源格式
在 Amazon ElastiCache 中,主要资源是缓存集群。这些资源具有与其关联的唯一 Amazon 资源名称 (ARN),如下所示。ElastiCache 提供了一组用于处理 ElastiCache 资源的操作。
ElastiCache 策略
可以通过转到 IAM 仪表板,从左侧选项卡中选择策略部分来搜索特定于 ElastiCache 的策略。在搜索框中输入术语 ElastiCache,以下结果将显示与该搜索词相关的所有策略。在下图中,我们看到 3 个此类策略由 AWS 拥有。
策略摘要
以下是一个策略摘要示例,其中列出了允许的操作以及策略附加到的 ARN。操作中的 * 选项表示允许所有操作。如果我们想将操作限制为几个值,我们可以在此策略中列出它们。
ElastiCache 策略操作
每个策略包含某些操作。这些操作赋予授予策略的用户控制权。我们可以选择上述策略之一,并查看与该策略相关的操作列表。
AWS ElastiCache - SNS 通知
AWS SNS 代表简单通知服务。它用于将消息扇出到大量订阅者端点以进行并行处理。例如,用于使用移动推送、短信和电子邮件将通知扇出到最终用户。我们可以发送有关重要集群事件(例如 CPU 或内存利用率等)的消息到各种订阅者。以便我们能够跟踪 ElastiCache 的运行状况。
配置 SNS 非常简单。以下是我们配置 SNS 主题的步骤。
识别集群
登录 AWS 账户并导航到 ElastiCache 仪表板。接下来,选择相关的引擎,即 Redis 和 Memcached。接下来,选择需要分配 SNS 服务的集群的名称。以下屏幕表示此类集群的示例。
添加 SNS 主题
要添加 SNS 主题,我们单击修改按钮。它会显示一个屏幕,我们可以在其中从名为SNS 通知主题的下拉列表中选择 SNS 主题的名称。如果我们想要放置自定义主题而不是下拉列表中列出的主题,我们可以选择手动 ARN 输入。
自定义 SNS 主题
当我们单击手动 ARN 输入时,窗口中的下拉列表将更改为文本输入。我们可以写入我们要填充的主题的名称。
可以重复此步骤来更改主题的名称或通过在文本输入框中放置空白值来删除现有主题。
AWS ElastiCache - 事件
在整个 ElastiCache 集群的生命周期中,会发生很多事情,例如添加或删除节点、更新 SNS 通知服务等。这些在 ElastiCache 中被称为事件。监视事件以分析和增强集群的性能以及对集群的任何问题进行故障排除非常重要。
这些 ElastiCache 日志记录与您的集群实例、安全组和参数组相关的事件。此信息包括事件的日期和时间、事件的源名称和源类型以及事件的描述。
访问事件
要访问日志事件,我们登录集群并转到 ElastiCache 仪表板。在左侧,我们看到各种 ElastiCache 服务,其中事件就是一项服务。从右侧选项卡中,我们选择要监视其事件的特定集群名称。
选择上述选项后,我们可以看到该集群的所有事件列表。它还显示时间戳以及该集群发生的事件数量。
过滤事件类型
ElastiCache 将事件分类为许多类别。这使得更容易将事件列表缩小到分析所需的特定类型的事件。在事件窗口的左上角,我们看到显示筛选器值的下拉列表。选择其中一个值即可获得特定类型的事件。
AWS ElastiCache - 标签管理
ElastiCache 中的标签也称为成本分配标签。它们是与一个 ElastiCache 资源关联的键值对。键和值都区分大小写。您可以使用标签的键来定义类别,标签的值可以是该类别中的项目。例如,您可以对哪个 ElastiCache 集群用于生产以及哪些用于开发类别进行分类。建议使用一致的标签键集,以便更容易跟踪与您的资源相关的成本。
此外,您可以使用特定应用程序名称标记多个资源,然后组织您的账单信息以查看跨多个服务的该应用程序的总成本。当您添加、列出、修改、复制或删除标签时,操作仅应用于指定的集群。
标签的特征
标签键是标签的必填名称。键的字符串值可以是 1 到 128 个 Unicode 字符长,并且不能以 aws: 为前缀。
标签值是标签的可选值。值的字符串值可以是 1 到 256 个 Unicode 字符长,并且不能以 aws: 为前缀。
一个 ElastiCache 资源最多可以有 50 个标签。
值不必在标签集中是唯一的。
成本分配标签应用于在 CLI 和 API 操作中指定为 ARN 的 ElastiCache 资源。
管理标签
可以通过转到 ElastiCache 仪表板,然后选择特定的集群类型来创建标签。在我们的例子中,我们选择了 Memcached 集群并使用了名为“管理标签”的按钮。
添加标签
单击上面步骤中显示的“管理标签”按钮,我们会看到一个屏幕,我们可以在其中添加标签键及其值。值字段是可选的。要删除标签,只需使用交叉符号即可。单击“应用更改”按钮以创建实际的标签。
应用标签后,我们可以在集群详细信息页面中看到它们,如下所示。
AWS ElastiCache - 成本管理
AWS ElastiCache 的成本管理有两种方式。一种是使用标签,另一种是使用预留节点的定价。成本管理的两个关键因素是监控资源利用率并尽可能准确地预测使用情况。通过研究利用率,我们可以对配置进行调整以减少未使用的部分。通过进行准确的预测,我们可以仅为更长的时间范围配置所需的资源并利用大幅折扣的价格。
使用预留节点
预留节点收取预付费用,该费用取决于节点类型和预留时长(1 年或 3 年)。除了预付费用外,还有每小时使用费,该费用明显低于使用按需节点产生的每小时使用费。要确定预留节点是否可以节省您的用例成本,请确定您需要的节点大小和节点数量,估算节点的使用情况,然后比较使用按需节点与预留节点的总成本。
要将预留节点用于 ElastiCache,我们执行以下步骤。
步骤 1
首先,我们导航到 ElastiCache 仪表板。从左侧选项卡中,我们选择“预留节点”选项。这将显示一个购买预留节点的按钮。它还会列出您已有的预留节点。
步骤 2
接下来,我们点击“购买预留节点”按钮。此屏幕帮助我们选择集群所需的配置。它帮助我们选择引擎类型、CPU 速度和内存,以及我们想要阻塞预留节点的期限。
步骤 3
在下一个屏幕中,我们可以看到下拉列表中的各种值。在每个下拉列表中选择特定值,我们会在底部看到成本。当前示例显示 m4 large 类型的高利用率产品 3 年的费用为 1750 美元。与按小时计费的按需定价相比,这非常便宜。
使用成本分配标签
我们可以使用成本分配标签来组织 AWS 账单,以反映按区域、部门或缓存引擎类型等成本结构。要查看组合资源的成本,我们可以根据具有相同标签键值的资源来组织账单信息。例如,我们可以使用特定应用程序名称标记多个资源,然后组织您的账单信息以查看跨多个服务的该应用程序的总成本。
要按区域跟踪服务成本,我们可以使用标签键“服务”和“区域”。在一个资源上,我们可能有值“ElastiCache”和“亚太地区(孟买)”,而在另一个资源上,我们可能有值“ElastiCache”和“欧盟(法兰克福)”。现在,我们可以看到按区域细分的 ElastiCache 总成本。