问:什么是 Amazon ElastiCache?

Amazon ElastiCache 是一种 Web 服务,让用户能够在中轻松部署和运行 Memcached 或 Redis 协议兼容服务器节点。Amazon ElastiCache 支持您从速度快的托管型内存系统检索信息,而不是完全依赖于速度较慢、基于磁盘的数据库,从而提高了 Web 应用程序的性能。本服务可简化并减少内存环境的管理、监控和运营任务,让您的工程资源专注于应用程序开发。借助 Amazon ElastiCache,您不仅能够改善用户操作和查询的加载与响应时间,还可降低扩展 Web 应用程序所需的费用。

Amazon ElastiCache 可以自动化执行运营分布式内存键值环境所需的常见管理任务。借助 Amazon ElastiCache,只需在 AWS 管理控制台内单击几下,即可在几分钟内为您的应用程序架构添加缓存或内存层。预置群集后,Amazon ElastiCache 会自动检测和更换故障节点,以提供一个有弹性的系统,降低数据库过载风险,而数据库过载会降低网站和应用程序的加载速度。Amazon ElastiCache 与 Amazon CloudWatch 监控功能实现集成后,您可以进一步地了解与节点相关的关键性能指标。Amazon ElastiCache 兼容 Memcached 和 Redis 协议,因此,您在当前 Memcached 或 Redis 环境中使用的代码、应用程序和常用工具都能与本服务无缝协作。借助 Amazon ElastiCache 对群集配置的支持,您可以使用快速、可扩展且易于使用的托管型服务,满足您的要求很高的应用程序的要求。与所有 Amazon Web Services 相同,您无需预先投资,而且只需为所使用的资源付费。

问:什么是内存缓存,它对应用程序有何帮助?

Amazon ElastiCache 提供的内存缓存可以大幅改善许多高读取负载应用程序(如社交网络、游戏、媒体分享和问答门户)或计算密集型负载(如推荐引擎)的延迟性和吞吐量。内存缓存可以通过将重要的数据段存储在内存中实现低延迟存取,从而改善应用程序性能。缓存信息可能包括 I/O 密集型数据库查询的结果或计算密集型计算的结果。

问:我可以将 Amazon ElastiCache 用于除缓存以外的使用案例吗?

答:能。ElastiCache for Redis 可用于主要内存键值数据存储,提供快速的亚毫秒级数据性能、高可用性和高可扩展性(多达 16 个节点及 5 个只读副本,每个副本可存储高达 3.55 TiB 的内存数据)。有关其他使用案例,如排行榜、速率限制、队列和聊天,请单击此处

问:我可以通过 AWS CloudFormation 使用 Amazon ElastiCache 吗?

AWS CloudFormation 提供了 AWS CloudFormation 模板,用于快速可靠地预置服务或应用程序,从而简化了预置和管理操作。AWS CloudFormation 提供的模板可用于创建群集(MemCached 和 Redis)和复制组,为 Amazon ElastiCache 提供了全面的支持。用于 Redis 群集配置的模板会根据最新的 ElastiCache Redis 公告进行更新,为 Amazon ElastiCache 客户提供了灵活性和易用性。

问:Amazon ElastiCache 可以代我进行哪些管理?

Amazon ElastiCache 可以管理设置分布式内存环境所涉及的各项工作,从预置您请求的服务器资源到安装软件等。环境设置完毕并开始运行后,该服务还会自动化处理常见的管理任务,如故障检测和恢复、软件修补等。Amazon ElastiCache 提供了与节点相关的详细监控指标,让您能够快速诊断问题并做出响应。例如,您可以设置阈值,在其中一个节点收到的请求过载时接收警报。

问:什么是 Amazon ElastiCache 节点、分区和集群?

节点是 Amazon ElastiCache 部署中最小的构建块。它是固定大小、与网络连接的安全 RAM 区块。每个节点都运行一个 Memcached 或 Redis 协议兼容服务实例,且有其自己的 DNS 名称和端口。Amazon ElastiCache 支持的节点类型有多种,每个类型有不同的相关内存量。Redis 分区是群集密钥空间的子集,可包含一个主节点及零个或多个只读副本。有关 Redis 部署的更多详细信息,请参阅以下 Redis 部分。各个分区共同组成了一个群集。

问:Amazon ElastiCache 支持哪些引擎?

适用于 Memcached 的 Amazon ElastiCache 目前支持 Memcached 1.4.5、1.4.14、1.4.24、1.4.33 和 1.4.34。

适用于 Redis 的 Amazon ElastiCache 目前支持 Redis 2.8.21、2.8.22、2.8.23、2.8.24、3.2.4、3.2.6 和 3.2.10。

问:如何开始使用 Amazon ElastiCache?

如果还没有注册 Amazon ElastiCache,您可以点击 Amazon ElastiCache 详细信息页面上的“立即注册”按钮,然后完成注册过程。您必须拥有 Amazon Web Services 账户才能访问此服务;如果还没有该账户,则在您开始 Amazon ElastiCache 注册过程时,系统将提示您创建一个账户。注册 ElastiCache 后,请参阅 Amazon ElastiCache 文档(其中包含我们的入门指南)。

熟悉 Amazon ElastiCache 后,即可使用 AWS 管理控制台或 Amazon ElastiCache API 在几分钟内启动群集。

问:如何创建群集?

创建群集非常简单,使用 AWS 管理控制台、Amazon ElastiCache API 或命令行工具均可创建群集。要使用 AWS 管理控制台启动群集,请在“Memcached”或“Redis”选项卡上单击“创建”按钮。然后,您需要指定群集标识符、节点类型和节点数量,以便创建的群集拥有您需要的内存量。此外,您也可以使用 CreateCacheCluster API 或 elasticache-create-cache-cluster 命令创建群集。如果创建群集时没有指定可用区,AWS 将根据您的内存需求和可用容量自动将其放置到一个可用区。

问:可以选择哪些节点类型?

Amazon ElastiCache 支持下列节点类型:

最新一代节点:

  • cache.m3.medium:2.78 GB
  • cache.m3.large:6.05 GB
  • cache.m3.xlarge:13.3 GB
  • cache.m3.2xlarge:27.9 GB
  • cache.m4.large:6.42GB
  • cache.m4.xlarge:14.28GB
  • cache.m4.2xlarge:29.7GB
  • cache.m4.4xlarge:60.78GB
  • cache.m4.10xlarge:154.64GB
  • cache.r3.large:13.5 GB
  • cache.r3.xlarge:28.4 GB
  • cache.r3.2xlarge:58.2 GB
  • cache.r3.4xlarge:118 GB
  • cache.r3.8xlarge:237 GB
  • cache.t2.micro:555 MB
  • cache.t2.small:1.55 GB
  • cache.t2.medium:3.22 GB
 
上一代节点:
 
  • cache.m1.small:1.3 GB
  • cache.m1.medium:3.35 GB
  • cache.m1.large:7.1 GB
  • cache.m1.xlarge:14.6 GB
  • cache.m2.xlarge:16.7 GB
  • cache.m2.2xlarge:33.8 GB
  • cache.m2.4xlarge:68 GB
  • cache.t1.micro:213 MB
  • cache.c1.xlarge:6.6 GB

上述节点类型均列出了在考虑 Amazon ElastiCache 系统软件消耗后的 Memcached 或 Redis 可用内存。群集的内存总量是每个分区可用内存的整数倍。例如,如果一个群集包含 10 个分区,每个分区的可用内存为 6GB,则该群集的总内存为 60GB。

问:如何访问我的节点?

群集可用后,您就可以在 AWS 管理控制台中按照下列步骤来检索您的节点终端节点:

  • 导航到“Amazon ElastiCache”选项卡。
  • 单击“(Number of) Nodes”链接,再导航到“Nodes”选项卡。
  • 单击“Copy Node Endpoint(s)”按钮。

此外,您也可以使用 DescribeCacheClusters API 检索终端节点列表。

然后,您可以用此终端节点列表配置您的 Memcached 或 Redis 客户端,并使用您最常用的编程语言在您的 ElastiCache 节点中添加或删除数据。要允许对您的节点发出网络请求,您需要授予访问权限。有关如何开始使用的详细说明,请访问我们的 Getting Started Guide

问:什么是维护窗口?在软件维护期内,我的节点是否可用?

您可以将 Amazon ElastiCache 维护窗口视为在请求或需要的情况下执行软件修补的机会。如果在给定的星期内安排了“维护”事件,将在您确定的 60 分钟维护窗口的某个时间点启动和完成维护。

如果安排了软件修补,您的节点将在维护窗口内出现短暂停机。有关详细信息,请参阅“引擎版本管理”。软件修补可以是用户请求的(如缓存软件升级),或者是按需确定的(如果我们发现系统或缓存软件中存在任何安全漏洞)。软件修补很少发生(通常几个月一次),并且几乎不需要过长的维护时间。如果创建群集时未指定首选周维护窗口,则系统将为其指定默认值(60 分钟)。如果您希望在系统代表您执行维护时修改此选项,可以通过在 AWS 管理控制台修改数据库实例或使用 ModifyCacheCluster API 进行修改。您的各个节点可以具有不同的首选维护窗口(如果您选择如此设置)。


问:Amazon ElastiCache 的使用如何收费和记账?

按实际用量付费,而且没有最低费用。定价是按每个节点类型消耗的节点小时数计算的。未满一小时的按一小时计费。同一可用区域内的 Amazon EC2 和 Amazon ElastiCache 之间传输数据是免费的。不过,同一地区不同可用区域内的 Amazon EC2 实例和 Amazon ElastiCache 节点传输数据时,需支付标准的 Amazon EC2 地区数据传输费,您只需支付 Amazon EC2 实例的数据传入或传出费用。Amazon ElastiCache 节点本身传入或传出的流量并不需要支付 Amazon ElastiCache 数据传输费。有关更多信息,请访问定价页面

问:我的 Amazon ElastiCache 节点的账单周期怎么计算?

节点的账单周期从该节点启动之时开始,截止到节点终止之时(删除节点也会导致节点终止)。

问:ElastiCache 节点应计费小时数如何界定?

节点以“可用”状态运行的所有时间,均会计入节点小时数。如果您希望不再为节点付费,则必须终止节点,以免产生更多应计费节点小时数。

问:价格是否含税?

除非另行说明,否则我们的价格不包括适用的税费和关税 (包括增值税和适用销售税)。使用日本账单地址的客户若要使用 AWS,则需缴纳日本消费税。了解更多


问:什么是 Amazon ElastiCache 预留节点?

借助预留节点,您现在可以一次性支付预付款来购买一年或三年期的预留服务,以在特定区域运行节点。您还可在当前每小时使用费率的基础上享受大幅折扣。现有三种预留节点类型(低、中、高使用率预留节点),可帮助您在预付款金额与有效的小时费率之间取得平衡。

问:预留节点与按需节点有何区别?

预留节点和按需节点在功能上是完全相同的。二者唯一的区别在于节点的计费方式;对于预留节点,您可以一次性预付款并在协议期限内享受较低的小时使用费率(相较于按需节点)。

问:如何购买和创建预留节点?

您可以使用 AWS 管理控制台中的“购买预留节点”选项。此外,您也可以使用 API 工具,即使用 DescribeReservedCacheNodesOfferings API 列出可供购买的预留节点,然后调用 PurchaseReservedCacheNodesOffering 购买预留缓存节点。

创建预留节点与启动按需节点没有任何区别。您只需指定节点级别以及预留所在的区域。成功购买预留节点后,Amazon ElastiCache 即会对新节点应用您可以享受的小时费率折扣。

问:是否一直有预留可供购买?

有。预留节点按区域购买,而不是按可用区。这表示,即使某个可用区的容量有限,您仍可以在相应区域购买预留节点,并在该区域中的其他可用区使用预留节点。

问:我可以购买多少个预留缓存节点?

您最多可以购买 20 个预留节点。如果要运行的节点超过 20 个,请填写 Amazon ElastiCache 节点申请表

问:如果我想将现有的节点转换为预留节点,应该怎么办?

您只需在当前节点运行所在的区域(同时也是要使用预留的区域)购买相同级别的预留节点即可。成功购买预留节点后,Amazon ElastiCache 将自动对您现有的节点应用新的小时使用费率。

问:如果我注册了预留节点,预留期限从何时开始算起?期限结束后,我的节点将如何处理?

收到您的请求并处理付款授权后,系统将会激活与预留节点相关联的定价变更。您可以在“AWS 账户活动”页面或使用 DescribeReservedCacheNodes API 跟踪预留的状态。如果在下一账单周期前未成功授权一次性付款,折扣价格则不会生效。

预留期限到期后,您的预留节点将恢复为相应节点级别和区域的按需节点小时费率。

问:我如何控制哪些节点按预留节点费率进行计费?

对于按需节点和预留节点而言,用于创建、修改和删除节点的 Amazon ElastiCache API 是相同的,因此,您可以无缝使用这两种节点。计算账单时,我们的系统将自动应用您的预留费率,即所有符合条件的节点都将按较低的预留缓存节点小时费率收费。

问:是否可以将预留节点从一个区域或可用区转移到另一个区域或可用区?

每个预留节点都与特定的区域相关联,且在预留期限内应保持关联区域不变,因而无法更改区域。不过,每个预留节点在关联区域的任何可用区都可使用。

问:是否可以取消预留?

预留节点的一次性付款不可退款。不过,您可以选择随时终止节点。如果您使用的是低使用率和中使用率预留节点,自终止之时起将不再产生任何小时使用费用。


问:如何控制对 Amazon ElastiCache 的访问?

不使用 VPC 时,Amazon ElastiCache 允许您通过缓存安全组来控制对群集的访问。安全组的作用类似于防火墙,用于控制对群集的网络访问。默认情况下,不允许对群集进行网络访问。如果您希望应用程序访问群集,则必须在特定 EC2 安全组中明确允许来自主机的访问。这个过程称为“传入”。

要允许通过网络访问您的群集,请创建一个安全组,并将所需的 EC2 安全组(用于指定允许哪些 EC2 实例访问群集)关联至该安全组。您可以在创建时将安全组与群集关联,或者使用 AWS 管理控制台中的“修改”选项。

请注意,目前群集尚未启用基于 IP 范围的访问控制。群集的所有客户端都必须处于 EC2 网络中,并按照上文所述通过安全组获得授权。

使用 VPC 时,请参阅此处了解更多信息。

问:我自己的数据中心服务器中运行的程序是否可以访问 Amazon ElastiCache?

不可以。目前,ElastiCache 群集的所有客户端必须处于 Amazon EC2 网络中,并按照此处所述通过安全组授权。

问:VPC 内的 EC2 实例上运行的程序是否可以访问 Amazon ElastiCache?

可以,如果 ElastiCache 缓存群集是在 VPC 内部创建的,那么该 VPC 内的 EC2 实例可以访问此 Amazon ElastiCache。有关如何在 VPC 内创建 Amazon ElastiCache 缓存群集的详细信息,请参阅此处

问:什么是 Amazon Virtual Private Cloud (VPC)?为什么我可能需要用到 Amazon ElastiCache?

Amazon VPC 允许您在 Amazon Web Services (AWS) 云中私有、隔离的部分创建虚拟网络环境,从中可以对专用 IP 地址范围、子网、路由表和网络网关等方面进行全面控制。借助 Amazon VPC,您可以定义虚拟网络拓扑和自定义网络配置,使其非常类似于您在自己的数据中心所操作的传统 IP 网络。

在以下情况下,您可能需要在 VPC 中使用 Amazon ElastiCache:您希望运行面向公众的 Web 应用程序,同时仍在私有子网中保留公众不可访问的后端服务器。您可以为 Web 服务器创建一个能访问 Internet 的公有子网,并将后端基础设施放在不能访问 Internet 的私有子网中。您的后端基础设施可以包含 RDS 数据库实例和一个提供了内存层的 Amazon ElastiCache 群集。有关 Amazon VPC 的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南

问:如何在 VPC 内创建 Amazon ElastiCache 群集?

有关在 VPC 中创建 Amazon ElastiCache 群集的步骤说明,请参阅 Amazon ElastiCache User Guide

以下是在 VPC 中创建群集的前提条件:

  • 您需要创建至少包含了一个子网的 VPC。有关创建 Amazon VPC 和子网的信息,请参阅 Getting Started Guide for Amazon VPC
  • 您需要为 VPC 定义一个子网组
  • 您需要为 VPC 定义一个 VPC 安全组(或使用提供的默认值)。
  • 此外,您需要为每个子网合理分配足够大的 CIDR 数据块,以便 Amazon ElastiCache 进行维护活动时(如缓存节点置换时)有足够的备用 IP 地址可用。

问:如何在现有的 VPC 内创建 Amazon ElastiCache 缓存群集?

在现有的 VPC 内创建 Amazon ElastiCache 缓存群集与在新建的 VPC 内创建群集的方法相同。请参阅此处了解更多信息。

问:如何连接到 VPC 内的 ElastiCache 节点?

通过 VPC 中部署的 EC2 实例可以访问同一 VPC 中部署的 Amazon ElastiCach 节点。如果这些 EC2 实例部署在具有关联弹性 IP 的公共子网中,您可以通过 Internet 访问 EC2 实例。

如果您想从 Internet 或 VPC 外部的 EC2 实例访问部署在 VPC 中的 Amazon ElastiCache 节点,请参阅此处提供的指南。

强烈建议您使用 DNS 名称来连接 ElastiCache 节点,因为底层 IP 地址可能会发生变化 (例如,在更换缓存节点后)。

问:什么是子网组?为什么我需要一个子网组?

子网组是您必须在 VPC 内为 Amazon ElastiCache 群集指定的子网集合。子网组是使用 Amazon ElastiCache 控制台创建的。每个子网组应至少包含一个子网。Amazon ElastiCache 使用子网组来选择子网。然后,所选子网的 IP 地址将与节点的终端节点相关联。此外,Amazon ElastiCache 将创建可连接到节点的弹性网络接口,并将其与先前提到的 IP 地址关联。

请注意,我们强烈建议您使用 DNS 名称来连接节点,因为基础 IP 地址可能会更改(例如,在更换缓存节点后)。

问:是否可以更改 ElastiCache 群集的子网组?

现有的子网组可以进行更新,以便为现有的可用区或创建 ElastiCache 群集后新增的可用区添加更多子网。不过,目前不允许更改已部署群集的子网组。

问:在 VPC 内与在 VPC 外使用 Amazon ElastiCache 有何差别?

无论是否使用 VPC,Amazon ElastiCache 的基本功能都保持不变。无论您的 ElastiCache 缓存群集部署在 VPC 的内部还是外部,Amazon ElastiCache 均可管理自动故障检测、恢复、扩展、自动发现以及软件修补等任务。

在 VPC 内,ElastiCache 缓存群集的节点只有一个专用 IP 地址(在您定义的子网内)。在 VPC 外,可使用安全组来控制对 ElastiCache 群集的访问(详情请参阅此处)。

问:是否可以将 VPC 外部的现有 ElastiCache 缓存群集迁移到 VPC 内部?

不可以,您不能将 VPC 外的现有 Amazon ElastiCache 缓存群集迁移到 VPC 内。您需要在 VPC 内创建一个新的 Amazon ElastiCache 缓存群集。

问:是否可以将 VPC 内部的现有 ElastiCache 缓存群集迁移到 VPC 外部?

目前,不支持直接将 ElastiCache 缓存群集从 VPC 内部迁移到外部。您需要在 VPC 外部创建一个新的 Amazon ElastiCache 缓存群集。

问:如何控制对群集的网络访问?

Amazon ElastiCache 允许您在非 VPC 部署中使用安全组来控制对群集的访问,进而控制对节点的访问。安全组的作用类似于防火墙,用于控制对节点的网络访问。默认情况下,不允许对节点进行网络访问。如果您希望应用程序访问节点,则可以设置安全组,以允许具有特定 EC2 安全组成员资格或特定 IP 范围的 EC2 实例访问节点。这个过程称为“传入”。为安全组配置传入后,则将对与该安全组关联的所有节点应用相同的规则。您可以使用 Amazon ElastiCache 控制台的“安全组”部分或 Amazon ElastiCache API 配置安全组。

在 VPC 部署中,节点访问通过 VPC 安全组和子网组来控制。VPC 安全组是与安全组功能相当的 VPC 组件。

问:要确保我的应用程序可以访问 VPC 内的 ElastiCache 节点,我应该注意什么?

您需要负责修改 VPC 中的路由表和网络 ACL,以确保能够从 VPC 中的客户端实例访问您的 ElastiCache 节点。要了解更多信息,请参阅 Amazon ElastiCache 文档

问:是否可以使用安全组来配置 VPC 内的群集?

不可以,因为在 VPC 内运行时,不使用安全组。相反地,它们在非 VPC 环境下使用。在 VPC 内创建群集时,您将需要使用 VPC 安全组。

问:是否可以将常规的 EC2 安全组与在 VPC 内启动的群集相关联?

不可以。您只能关联与群集处于同一 VPC 的 VPC 安全组。

问:ElastiCache 群集的节点是否可以跨越多个子网?

可以。Amazon ElastiCache 群集的节点可以跨越多个子网,前提是这些子网属于同一个子网组,且该子网组在创建时便与该 ElastiCache 群集相关联。


问:什么是参数组?它们有什么作用?

参数组可以用作引擎配置值的“容器”,这些值可应用于一个或多个群集。如果创建群集时未指定参数组,则将使用默认的参数组。该默认组包含已针对您运行的群集进行优化的引擎默认值和 Amazon ElastiCache 系统默认值。不过,如果您希望群集以您自定义的引擎配置值运行,您只需创建一个新参数组并根据需要修改参数,然后修改群集以使用新参数组。建立关联后,使用特定参数组的所有群集都将获得该参数组的所有参数更新。有关配置参数组的更多信息,请参阅 Amazon ElastiCache 用户指南

问:如何为我的群集选择正确的配置参数?

默认情况下,Amazon ElastiCache 会考虑节点类型的内存/计算资源容量,为群集选择最优配置参数。不过,如果要进行更改,可以使用我们的配置管理 API 来执行操作。请注意,将配置参数改为非建议的值可能会产生性能降低到系统崩溃等各种意外影响,只有愿意承担此类风险的高级用户才应尝试该操作。有关更改参数的更多信息,请参阅 Amazon ElastiCache 用户指南

问:如何查看指定参数组中参数的当前设置?

您可以使用 AWS 管理控制台、Amazon ElastiCache API 或命令行工具查看参数组信息及其对应的参数设置。


问:基于 Memcached 的 Amazon ElastiCache 可以用来缓存什么内容?

您可以使用本服务缓存多种对象,从持久性数据存储 (例如 Amazon RDS、DynamoDB 或 EC2 上的自管理型数据库) 中的内容到动态生成的网页 (例如使用 Nginx 生成的网页) 均包含在内,还可以缓存可能不需要持久性备份存储的临时会话数据。也可以用它来实施高频计数器,以便在高容量 Web 应用程序中部署允入控制。

问:是否可以将基于 Memcached 的 Amazon ElastiCache 与 Amazon RDS 或 Amazon DynamoDB 等 AWS 持久性数据存储配合使用?

可以。Amazon ElastiCache 是 Amazon RDS 和 Amazon DynamoDB 等数据存储的理想前端,可以为具有极高请求速率和/或极低延迟要求的应用程序提供一个高性能的中间层。

问:我目前使用 Memcached。如何迁移到 Amazon ElastiCache?

Amazon ElastiCache 兼容 Memcached 协议。因此,您可以使用标准的 Memcached 操作,如 get、set、incr 和 decr,使用方式也和您现有的 Memcached 部署完全相同。Amazon ElastiCache 支持文本和双字节协议。它还支持大多数标准的统计结果,也可通过 CloudWatch 以图形方式查看。因此,您可以无缝切换为使用 Amazon ElastiCache,无需重新编译或重新链接您的应用程序,您使用的库可以继续工作。要配置应用程序所访问的缓存服务器,您只需更新应用程序的 Memcached 配置文件,将我们为您预置的服务器(节点)终端节点包含在内。只需使用 AWS 管理控制台中的“Copy Node Endpoints”选项或 DescribeCacheClusters API,即可获取终端节点的列表。与任何迁移过程相同,我们建议您先对新的 Amazon ElastiCache 部署进行完整的测试,而后再完成当前解决方案的割接工作。

请注意,目前 Amazon ElastiCache 仅允许从 Amazon EC2 网络中运行,因此您应用程序服务器应当位于 Amazon EC2 中,才能使用本服务。

Amazon ElastiCache 使用 DNS 条目来允许客户端应用程序定位服务器(节点)。节点的 DNS 名称保持不变,但节点的 IP 地址可能会不时更改。例如,在非 VPC 安装出现故障后,系统会自动更换节点,此时 IP 地址即会更改。有关如何处理节点故障的建议,请参阅此常见问题。


问:如何为我的应用程序选择合适的节点类型?

虽然此问题没有明确的答案,但使用 Amazon ElastiCache 时,您无需担心节点数量是否恰当,因为日后您可以轻松添加或删除节点。在选择初始配置时,您可以考虑以下两个互为关联的因素:

  • 达到目标缓存命中率所需的数据总内存量,以及
  • 保持可接受的应用程序性能且不会在节点故障时造成数据库后端过载所需的节点数。

所需的内存量取决于您的数据集的大小,以及应用程序的访问模式。要提高容错能力,请在大体了解所需的内存总量后,将该内存量分配到足够数量的节点,以便您的应用程序在一两个节点出现故障时依然可以运行。例如,如果您的内存要求为 13GB,则您可能需要使用两个 cache.m4.large 节点,而不是一个 cache.m4.xlarge 节点。请务必确保在一个或多个节点的故障恢复期间,当缓存命中率暂时降低时,数据库等其他系统不会过载。有关详细信息,请参阅 Amazon ElastiCache 用户指南

问:一个群集是否可以跨越多个可用区?

可以。创建群集或向现有群集添加节点时,可以为新节点选择可用区。可以在每个可用区中指定请求的节点数量,也可以选择“spread nodes across zones”。如果群集位于 VPC 中,则节点只可以放置在属于所选缓存子网组的可用区中。有关其他详细信息,请参见 ElastiCache VPC 文档

问:对于一个区域,我可以在 Amazon ElastiCache Memcached 中运行多少个节点?

您最多可以在每个区域运行 100 个节点。如果需要更多节点,请填写 ElastiCache 上限提高申请表

问:对于节点故障,Amazon ElastiCache 会如何进行响应?

该服务可以检测节点故障,并通过下列自动化步骤进行响应:

  • Amazon ElastiCache 将通过请求获取新的服务资源来修复节点,然后将节点的现有 DNS 名称重定向到新的服务资源。对于 VPC 安装,ElastiCache 将会确保在发生故障时,当节点恢复之后,节点的 DNS 名称和 IP 地址均保持不变。对于非 VPC 安装,ElastiCache 将会确保节点的 DNS 名称保持不变,但节点的基础 IP 地址可能会更改。
  • 如果您已将一个 SNS 主题与您的群集关联,在新节点配置完成并可投入使用时,Amazon ElastiCache 将向您发送 SNS 通知,告知您节点已恢复。如此一来,您可以安排您的应用程序强制 Memcached 客户端库尝试重新连接修复后的节点。这可能很重要,因为一些 Memcached 库在遇到服务器(节点)通信错误或超时时,会无限期地停止使用该服务器。

问:如果我确定需要更大的内存来支持我的应用程序,如何用 Amazon ElastiCache 提高总内存量?

您可以向现有的 Memcached 群集添加更多节点,即在 AWS 管理控制台中,使用您的缓存群集所对应的“节点”选项卡上的“Add Node”选项,或者调用 ModifyCacheCluster API。


问:Amazon ElastiCache 如何与其他 Amazon Web Services 交互?

Amazon ElastiCache 是 Amazon RDS 和 Amazon DynamoDB 等 Amazon Web Services 的理想前端选择,可为高性能应用程序提供极低的延迟性并卸载一些请求容量,而这些服务同时还能提供良好的数据持久性。在与 Amazon EC2 和 EMR 一起使用时,该服务还可用于提高应用程序性能。

问:Amazon ElastiCache 是否更加适合任何特定的编程语言?

尽管并非全部,Memcached 客户端库也适合众多流行的编程语言。有关 Memcached 客户端的更多信息,请参阅此处。如果您在使用 Amazon ElastiCache 时遇到任何具体的 Memcached 客户端问题,请通过 Amazon ElastiCache 社区论坛联系我们。

问:哪些流行的 Memcached 库与 Amazon ElastiCache 兼容?

Amazon ElastiCache 并不需要特定的客户端库,可与现有的 Memcached 客户端库一起使用,且无需重新编译或重新链接应用程序(Memcached 1.4.5 及更高版本);例如,libMemcached (C) 及以此为基础的库(如 PHP、Perl、Python)、spyMemcached (Java) 和 fauna (Ruby)。


问:什么是自动发现?它对我有什么帮助?

Auto Discovery 是帮助开发人员节省时间和精力,并降低应用程序复杂性的一种功能。向 Amazon ElastiCache 缓存群集添加或删除缓存节点时,Auto Discovery 可以通过客户端实现缓存节点的自动发现。到目前为止,为了应对群集成员资格的变动,开发人员仍须手动更新缓存节点的终端节点列表。根据客户端应用程序的构建方式,一般而言,需要进行客户端初始化,其方法是关闭和重启应用程序,而这会导致停机。但通过 Auto Discovery,我们可以摆脱这种复杂性。利用 Auto Discovery,除了可向后兼容 Memcached 协议以外,Amazon ElastiCache 还向客户端提供有关缓存群集成员资格的信息。能够处理更多信息的客户端,无需任何初始化操作便能自我再新配置,从而使用 Amazon ElastiCache 缓存群集的最新节点。

问:Auto Discovery 如何发挥作用?

Amazon ElastiCache 缓存群集可以利用通过指定终端节点进行寻址的节点来创建。通过 Auto Discovery,Amazon ElastiCache 缓存群集还获得了一个特有的配置终端节点,它是一条在群集生命周期内均有效的 DNS 记录。此 DNS 记录包含属于该群集的节点的 DNS 名称。Amazon ElastiCache 将确保配置终端节点始终指向至少一个此类“目标”节点。然后,一个针对目标节点的查询将为相关群集的所有节点返回终端节点。此后,您可以像从前一样连接群集节点和使用各种 Memcached 协议命令,如 get、set、incr 和 decr。有关详细信息,请参阅此处。要使用 Auto Discovery 功能,您将需要一个支持 Auto Discovery 功能的客户端。从 Amazon ElastiCache 控制台下载适用于 Java 和 PHP 的 Auto Discovery 客户端。完成初始化后,此客户端将使用配置终端节点自动确定 Amazon ElastiCache 缓存群集的最新成员。通过添加或删除节点修改缓存群集时,或者因发生故障替换某节点后,Auto Discovery 客户端会自动确定发生的变动,而您无需手动初始化客户端。

问:如何开始使用 Auto Discovery?

要开始使用,请先单击 Amazon ElastiCache 控制台中的“Download ElastiCache Cluster Client”链接,以下载 Amazon ElastiCache 群集客户端。下载前,您必须已有 Amazon ElastiCache 账户;如果您还没有账户,那么您可以在 Amazon ElastiCache 详细信息页面进行注册。下载客户端后,您可以通过访问 Amazon ElastiCache 控制台来设置并激活 Amazon ElastiCache 群集。有关更多详情,您可以单击此处

问:如果继续用我自己的 Memcached 客户端搭配使用 ElastiCache 缓存群集,是否可以享受此功能?

不可以,使用现有的 Memcached 客户端将不能享受 Auto Discovery 功能。要使用 Auto Discovery 功能,客户端必须能够使用配置终端节点并确定该群集节点的终端节点。您可以使用 Amazon ElastiCache 群集客户端,或者扩展您的现有 Memcached 客户端以纳入 Auto Discovery 命令集

问:使用自动发现的最低硬件/软件要求是什么?

要利用 Auto Discovery 功能,必须使用支持 Auto Discovery 的客户端来连接 Amazon ElastiCache 缓存群集。Amazon ElastiCache 当前支持适用于 Java 和 PHP 且支持 Auto Discovery 功能的客户端。您可从 Amazon ElastiCache 控制台下载这些客户端。我们的客户可在市场上的主流 Memcached 客户端上创建任何其他语言的客户端。

问:如何修改或编写我的 Memcached 客户端来支持 Auto Discovery 功能?

您可以使用任何 Memcached 客户端程序库,并添加 Auto Discovery 支持功能。如果您希望添加或修改您自己的客户端来支持 Auto Discovery,请参阅 Auto Discovery 命令集文档

问:如果不需要使用 Auto Discovery,是否可以继续使用现有的 Memcached 客户端?

可以,Amazon ElastiCache 仍然遵从 Memcached 协议,因此不要求您更换客户端。不过,为了利用 Auto Discovery 功能,我们必须增强 Memcached 客户端的性能。如果您选择不使用 Amazon ElastiCache 缓存群集客户端,则可以继续使用您现有的客户端,或修改您的客户端程序库,使其能理解 Auto Discovery 命令集。

问:使用 Auto Discovery 时,是否可以拥有异构客户端?

可以,您可以同时使用支持 Auto Discovery 的客户端和传统的 Memcached 客户端连接同一个 Amazon ElastiCache 缓存群集。Amazon ElastiCache 仍然 100% 遵从 Memcached 协议。

问:是否可以停用 Auto Discovery?

可以,您可以随时停用 Auto Discovery。您可以在 Amazon ElastiCache 缓存群集初始化期间,通过指定工作模式来停用 Auto Discovery。另外,因为 Amazon ElastiCache 仍然完全兼容 Memcached,您可以像从前一样使用任何协议兼容 Memcached 的客户端。


问:我可以控制是否以及何时将支持 Amazon ElastiCache 群集的引擎版本升级到支持的新版本吗?

使用 Amazon ElastiCache 时,您可以控制是否以及何时将为群集提供技术支持且符合 Memcached 协议规范的软件升级到 Amazon ElastiCache 支持的新版本。这使您能够灵活地保持与特定 Memcached 版本兼容,在生产中部署应用程序前针对新版本进行测试,以及根据自己的要求和时间执行版本升级。由于版本升级涉及一定的兼容性风险,因此这些升级不会自行启动,必须由您启动。这种软件修补方式让您能够主导版本升级,但仍然可以将应用程序修补工作移交给 Amazon ElastiCache。阅读后面的常见问题,可以了解有关版本管理的更多相关信息。此外,您也可以参阅 Amazon ElastiCache 用户指南。虽然引擎版本管理功能旨在让您尽可能多地控制执行修补的方式,但我们保留在系统或缓存软件存在任何安全漏洞时代表您修补群集的权利。

问:如何指定群集应运行哪个受支持的 Memcached 版本?

您可以在创建新群集时指定当前受支持的任何版本(次要和/或主要版本)。如果您要升级受支持的引擎版本,您可以使用群集的“修改”选项执行此操作。只需通过“Cache Engine Version”字段指定您希望升级到的版本即可。然后,Amazon ElastiCache 将立即(如果已选中“Applied Immediately”选项)或在群集的下一个计划维护窗口代表您执行升级。

问:升级前,是否可以针对新版本测试群集?

可以。要进行测试,您可以使用新引擎版本创建一个新群集。您可以将开发/暂存应用程序指向此群集并进行测试,而后再决定是否升级您的初始群集。

问:Amazon ElastiCache 是否提供支持新 Memcached 发行版本和/或淘汰当前支持的版本的指导准则?

随时间推移,我们计划为 Amazon ElastiCache 支持更多 Memcached 的主要和次要版本。特定年度支持的新发布版本数量因 Memcached 发布版本的频率和内容而异,由工程团队负责版本全面审查的最终结果。不过,一般而言,我们会在通用版本发布后 3-5 个月内支持新的 Memcached 版本。

问:Amazon ElastiCache 支持哪个版本的 Memcached 线路协议?

Amazon ElastiCache 支持 Memcached 1.4.5、1.4.14、1.4.24、1.4.33 和 1.4.34 版的 Memcached 文本和二进制协议。

问:如何升级到最新版 Memcached?

您可以通过“修改”过程来升级现有 Memcached 群集。从旧版 Memcached 升级到 Memcached 1.4.33 或更高版本时,请确保您的现有参数 max_chunk_size 的值满足 slab_chunk_max 参数需要的条件。请查看此处的升级先决条件。


问:什么是基于 Redis 的 Amazon ElastiCache?

基于 Redis 的 Amazon ElastiCache 是一种 Web 服务,让用户能够在云中轻松部署和运行 Redis 协议兼容的服务器节点。该项服务可进行 Redis 节点的管理、监控和运行;而节点的创建、删除和修改可通过 ElastiCache 控制台、命令行接口或 Web 服务 API 执行。基于 Redis 的 Amazon ElastiCache 支持 Redis 主/从复制。

问:基于 Redis 的 Amazon ElastiCache 在协议上是否与开源 Redis 兼容?

是,基于 Redis 的 Amazon ElastiCache 与开源 Redis 在协议上兼容。因此,您在现有的独立 Redis 数据存储内使用的代码、应用程序、驱动程序和工具仍然能与基于 Redis 的 ElastiCache 协作,将现有 Redis 部署迁移到基于 Redis 的 ElastiCache 时,不需要更改代码,除非另有要求。目前,我们支持 Redis 2.8.21、2.8.22、2.8.23、2.8.24、和 3.2.4。

问:Amazon ElastiCache for Redis 的节点和分区是什么?

Amazon ElastiCache 节点是 ElastiCache for Redis 群集部署的最小构建块。每个节点都支持 Redis 协议(支持 Amazon 增强功能),且有自己的终端节点和端口。受支持的节点类型有多个,但每个类型的 CPU 功能和内存容量都不尽相同。

分区是一个或多个节点的集合,负责逻辑密钥空间的分区。在一个分区中,节点可能孤立存在,也可能与其他节点形成主/副本关系。若一个分区内有多个节点,则其中一个节点将承担读/写主要角色,而其他所有节点将承担只读副本角色。

问:Amazon ElastiCache for Redis 是否支持 Redis 持久性?

支持。您可以借助备份与恢复功能创建 Redis 数据快照,以实现永久存储。请查看此处了解详细信息。

问:如何从基于 Memcached 的 Amazon ElastiCache 迁移到基于 Redis 的Amazon ElastiCache 中,反之又如何操作?

我们目前不支持从 Memcached 自动迁移到 Redis,反之亦然。但是,您可以使用 Memcached 客户端从 Memcached 群集中读取,并使用 Redis 客户端写入 Redis 群集。同样地,您还可以使用 Redis 客户端从 Redis 中读取,并使用 Memcached 客户端写入 Memcached 群集。确保考虑到数据格式的差异和两种引擎之间的群集配置。

问:基于 Redis 的 Amazon ElastiCache 是否支持多可用区域运行?

是的,通过基于 Redis 的 Amazon ElastiCache,您可以在另一个 AWS 可用区域中创建一个只读副本。主节点发生故障后,我们将预设置一个新的主节点。在主节点无法预配置的情况下,您可以决定提升为新主节点的只读副本。有关如何处理节点故障的更多详细信息,请参阅此处

问:基于 Redis 的 Amazon ElastiCache 为节点故障提供了哪些选项?

基于 Redis 的 Amazon ElastiCache 将通过请求新的服务资源修复节点,而后将节点的现有 DNS 名称重定向到新的服务资源。因此,Redis 节点的 DNS 名称将保持不变,但 Redis 节点的 IP 地址可能会不时改变。如果您拥有的复制组具有一个或多个只读副本,并且已经启用了多可用区,那么在主节点发生故障时,ElastiCache 将自动检测故障,选择副本并将其提升为新的主节点。它还将传播 DNS,从而使您可以继续使用主终端节点,并在提升后指向新提升的主节点。有关更多详细信息,请参阅此常见问题的“Multi-AZ”部分。在禁用多可用区的情况下选择 Redis 复制选项时,如果主节点发生故障,您可以选择启动故障转移到只读副本节点。故障转移目标可以在同一个区域或另一个区域中。为了使故障恢复到原区域,将原区域中的只读副本提升为主节点。您可以选择架构您的应用程序,从而使 Redis 客户端库重新连接到已修复的 Redis 服务器节点。由于有些 Redis 库会在遇到通信错误或超时时无限期停止使用服务器,所有这一点很有用。

问:故障转移如何工作?

关于启用了多可用区的复制组,常见问题的“Multi-AZ”部分对此故障转移行为进行了描述。

如果您选择不启用多可用区,则如果 Amazon ElastiCache 监测到主节点且该节点不可用或无响应,则基于 Redis 的Amazon ElastiCache 将通过获取新服务资源修复节点,然后重新定向节点的现有 DNS 名称以指向新的服务资源。因此,Redis 节点的 DNS 名称将保持不变,但 Redis 节点的 IP 地址可能会不时改变。但是,如果无法修复主节点(且多可用区被禁用),您可以选择将其中一个只读副本提升为新的主节点。参阅此处了解如何选择新的主节点。主节点的终端节点 DNS 记录将会更新,以指向提升后的只读副本节点。然后,在原主节点的可用区中,将会创建一个只读副本节点,以用作分区中的只读副本,并遵循新的主节点。

问:主节点故障期间,我的只读副本是否可用?

可以,主节点故障期间,只读副本可继续服务请求。主节点以修复的节点或提升后的只读副本形式恢复后,只读副本短时间内将不能服务任何请求,因为它们要同步主节点中的缓存信息。

问:如何配置我的基于 Redis 的 Amazon ElastiCache 之节点的参数?

您可以使用参数组配置您的 Redis 安装,该参数组必须是 Redis 群集的指定参数组。所有的只读副本群集都使用其主群集的参数组。Redis 参数组就像是 Redis 配置值“容器”,这些值可应用于一个或多个 Redis 主群集。如果创建 Redis 主群集时未指定参数组,则将使用默认的参数组。此默认组包含您计划运行的节点类型的默认值。不过,如果您希望 Redis 主群集以指定的配置值运行,您可以轻松地创建一个新缓存参数组,修改所需的参数并修改 Redis 主群集以使用新参数组。

问:是否可以通过 Amazon ElastiCache 控制台访问 Redis?

可以,Redis 在 ElastiCache 控制台中显示为引擎选项。您可以通过选择 Redis 引擎,用启动向导创建新的 Redis 缓存群集。您还可以使用 ElastiCache 控制台修改或删除现有的 Redis 群集。

问:是否可以在 Amazon VPC 中创建基于 Redis 的 Amazon ElastiCache 之群集?

可以,您可以在 VPC 中创建 Redis 群集,方法与您在 VPC 中创建 Memcached 群集时一样。如果您的账户为默认情况下的 VPC,则将在与您的账户相关的默认 VPC 内创建您的 Redis 群集。借助 ElastiCache 控制台,您可以在创建群集时指定一个不同的 VPC。

问:基于 Redis 的 Amazon ElastiCache 是否支持 Redis 的密码功能?

否,基于 Redis 的 Amazon ElastiCache 不支持 Redis 密码。这是因为配置文件中所存储的密码的固有局限性。基于 Redis 的 Amazon ElastiCache 之群集与 EC2 安全组相关,而非依靠 Redis 密码,并且只有此安全组中的客户端才有权访问 Redis 服务器。

问:如何升级至更新的引擎版本?

使用 ModifyCacheCluster 或 ModifyReplicationGroup API 并为 EngineVersion 参数指定首选引擎版本,即可轻松升级至更新的引擎版本。在 ElastiCache 控制台上,您可以选择一个群集,然后单击“修改”。在“修改”窗口中,从可用选项中选择首选引擎版本。引擎升级流程旨在尽最大努力保留您的现有数据,并且需要 Redis 复制才能成功。有关更多详细信息,请参阅此处

问:能否降级至较低的引擎版本?

不能。不支持降级至较低的引擎版本。

问:如何扩展至较大的节点类型?

使用 ModifyCacheCluster 或 ModifyReplicationGroup API 并为 CacheNodeType 参数指定首选节点类型,即可轻松扩展至较大的节点类型。在 ElastiCache 控制台上,您可以选择一个缓存群集或复制组,然后单击“Modify”。在“修改”窗口,从可用选项中选择首选节点类型。扩展流程旨在尽最大努力保留您的现有数据,并且需要 Redis 复制才能成功。有关更多详细信息,请参阅此处

问:能否缩减至较小的节点类型?

目前不支持迁移至较小的节点类型。


问:以只读副本方式运行 Redis 节点意味着什么?

只读副本在 Redis 中起两个作用:

  • 故障处理
  • 读取扩展

当您用只读副本运行节点时,“主节点”既可用于写入,也可用于读取。只读副本就像是“备用”节点,在故障转移时被“提升”。故障转移后,备用节点将成为主节点,并接受缓存操作。只读副本还可弹性地扩展节点容量。对于负责执行大量读取缓存工作负载的单个节点,只读副本可扩展其容量,超出其容量限制。

问:何时应考虑使用 Redis 只读副本?

在很多情况下,为给定的主节点部署一个或多个只读副本可能比较明智。部署只读副本的常见原因包括:

  • 扩展用于执行大量读取工作负载的单个主节点的计算资源或 I/O 容量。这样,过多的读取流量将引导到一个或多个只读副本中。
  • 在主节点不可用时提供只读副本。如果您的主节点无法处理 I/O 请求(例如,由于备份或计划维护而暂停 I/O),可以将读取流量引导到只读副本中。对于这种使用案例,请注意由于主节点实例不可用,只读副本中的数据可能处于“静态”。只读副本还可用于使故障的主节点重新开始活跃起来。
  • 数据保护情况;如果发生主节点所在可用区不可用或主节点故障这种不太可能出现的情况,您可以将不同可用区中的只读副本提升为新的主节点。

问:如何为指定的主节点部署只读副本节点?

使用 CreateReplicationGroup API 或在 Amazon ElastiCache 管理控制台中单击几下鼠标,即可很快创建一个只读副本。创建群集时,您要指定 MasterCacheClusterIdentifier。MasterCacheClusterIdentifier 是您想对其进行复制的“主”节点的缓存群集标识符。然后,您可以通过调用 CreateCacheCluster API 指定主节点的 ReplicationGroupIdentifier 和 CacheClusterIdentifier,以在分区中创建只读副本群集。与标准群集相同,您也可以指定可用区。开始创建只读副本后,Amazon ElastiCache 将对分区内的主节点拍摄快照,然后开始复制。因此,在拍摄快照时,主节点上的 I/O 可能会短时间暂停。I/O 停止一般大约会持续一分钟。

删除只读副本同创建一样简单;只需使用 Amazon ElastiCache 管理控制台或调用 DeleteCacheCluster API 即可(为您要删除的只读副本指定 CacheClusterIdentifier)。

问:我能否同时创建主节点和只读副本?

能。使用 CreateReplicationGroup API,或使用 Amazon ElastiCache 管理控制台中的创建向导并选择“Multi-AZ Replication”,在几分钟内即可创建一个新的缓存群集及其只读副本。创建群集时,请指定标识符、群集内所需分区的总数量、每个分区的只读副本数量以及群集创建参数,如节点类型、引擎版本等。您还可以为该群集中的每个分区指定可用区。

问:如何连接到我的只读副本?

您可以像连接主缓存节点一样,使用 DescribeCacheClusters API 或 AWS 管理控制台通过检索只读副本的终端节点连接到只读副本。如果有多个只读副本,各个副本之间的读取流量分配方式则取决于应用程序。

问:我可以为指定主节点创建多少个只读副本?

目前,Amazon ElastiCache 允许您为指定的主节点最多创建五 (5) 个只读副本。

问:如果发生故障转移,只读副本会怎么样?

如果发生故障转移,所有关联和可用的只读副本在故障转移完成后将自动恢复复制(获取最新提升的只读副本的更新)。

问:是否可以为另一个只读副本创建只读副本?

不支持为另一只读副本创建只读副本。

问:是否可以将我的只读副本提升为“独立”主节点?

不可以,不支持此操作。但是,您可以为您的基于 Redis 的 ElastiCache 节点拍摄快照(可以选择主节点或任何只读副本)。然后,您可使用快照“播种”新的基于 Redis 的 ElastiCache 主节点。

问:只读副本是否会与其主节点同时保持最新状态?

主节点的更新会自动复制到所有关联的只读副本。不过,鉴于 Redis 的异步复制技术,出于各种原因,只读副本更新可能会落后于其主缓存节点。常见的原因包括:

  • 主缓存节点的 I/O 写入量超过了将更改应用于只读副本的速率。
  • 主缓存节点和只读副本之间有网络分区或延迟

只读副本受 Redis 复制的优点和缺点影响。如果使用只读副本,您应了解只读副本与其主缓存节点之间可能存在滞后或“不一致”。您可以通过“复制滞后”CloudWatch 指标监控这些可能发生的滞后,该指标可通过 ElastiCache 控制台和 API,以及 CloudWatch 服务进行访问。

问:如何查看有效的只读副本?

您可以使用标准的 DescribeCacheClusters API 返回一个包含已部署的所有缓存群集(包括只读副本)的列表,或者直接单击 Amazon ElastiCache 管理控制台的“Redis”选项卡进行查看。

Amazon ElastiCache 监控您的只读副本的复制状态,并在因任何原因停止复制时将 Replication State 字段更新为 Error。您可以通过查看 Replication Error 字段来查看 Redis 引擎产生的相关错误的详细信息,然后进行适当操作以从中恢复。您可以在 Amazon ElastiCache 用户指南的 Troubleshooting a Read Replica problem 部分了解有关复制问题的更多疑难解答。如果复制错误得到修复,“复制状态”将更改为“复制中”。

Amazon ElastiCache 允许您通过 AWS 管理控制台或 Amazon CloudWatch API 通过 Amazon CloudWatch 指标(“副本滞后”)查看只读副本滞后于其主节点的程度。

问:我的只读副本已远远落后于其主节点。我应该怎么办?

如上述问题所述,使用 Redis 异步复制时,只读副本与其主节点之间出现“不一致”或只读副本滞后现象非常常见。如果现有只读副本已远远落后,不能满足您的要求,您可以重启该副本。副本滞后可能会随时间推移而加剧或减缓,具体取决于主节点的稳定状态使用模式。

问:如何删除只读副本?主节点删除后,它是否会自动随之删除?

您在 AWS 管理控制台中单击几下鼠标或将缓存群集标识符传送到 DeleteCacheCluster API,即可轻松地删除只读副本。如果除了主缓存节点之外您还想删除只读副本,您必须使用 DeleteReplicationGroup API 或 AWS 管理控制台。

问:只读副本的成本是多少?如何计算记账周期?

只读副本按标准节点进行计费,且费率相同。与标准节点相同,只读副本的“节点小时”费率取决于只读副本的节点级别。有关定价的最新信息,请参阅 Amazon ElastiCache 详细信息页面。在主缓存节点和只读副本之间复制数据,产生的数据传输不收取费用。只读副本的账单周期从成功创建只读副本后开始(即当列出的状态为“有效”时)。只读副本将一直按标准的 Amazon ElastiCache 缓存节点小时费用计费,直到您发布命令将其删除为止。

问:执行故障转移时会发生什么状况?这种情况会持续多长时间?

Amazon ElastiCache 支持启动故障转移,这样您便可以尽快恢复运营。故障转移后,Amazon ElastiCache 会轻松翻转节点的 DNS 记录,使其指向只读副本,而只读副本会提升为新的主节点。我们鼓励您遵循最佳做法,在应用程序层实施缓存节点连接重试。通常,故障转移从开始到结束会在三到六分钟内完成。

问:是否可以在另一个地区创建只读副本作为我的主节点?

不可以。您只可以在相同地区的同一可用区域或不同可用区域预配置您的只读副本作为您的主缓存节点。

问:是否可以查看我的主副本当前位于哪个可用区域?

可以,您可以使用 AWS 管理控制台或 DescribeCacheClusters API 查看当前主节点的位置。

故障转移后,我的主节点现在与其他 AWS 资源(如 EC2 实例)位于不同的可用区域。

问:我是否需要考虑延迟?

可用区域设计为,向同一地区其他可用区域提供低延迟网络连接。此外,您可能会考虑以跨多个可用区域的冗余架构应用程序及其他 AWS 资源,以便在出现可用区域故障时应用程序能够灵活反应。


问:ElastiCache for Redis 的多可用区是什么?

ElastiCache for Redis 分区由一个主节点和多达五个只读副本组成。Redis 将数据从主节点中异步复制到只读副本中。在特定类型的计划维护期间或不太可能发生的 ElastiCache 节点故障或可用区故障期间,Amazon ElastiCache 将自动探测主节点的故障、选择一个只读副本并将其提升为新的主节点。ElastiCache 还将传送所提升只读副本的 DNS 更改,因此,如果您的应用程序正在写入主节点的终端节点,则不需要更改终端节点。

问:使用多可用区有哪些好处?

在多可用区模式下运行 Redis 的 ElastiCache 的主要好处在于,提高了可用性并降低了管理需要。如果 Redis 的 ElastiCache 的主节点发生故障,则对您读取/写入主节点能力的影响将限制在完成自动故障转移所需要的时间。启用多可用区时,ElastiCache 节点的故障将自动转移,并且不需要进行管理。您不再需要监控您的 Redis 节点,也不再需要在主节点故障时手动启动恢复。

问:多可用区如何工作?

如果您正在使用 ElastiCache for Redis 且拥有一个由一个主节点和一个或多个只读副本组成的分区,则可以使用多可用区。如果主节点发生故障,ElastiCache 将自动检测该故障,然后从可用的只读副本中选择一个副本并将其提升为新的主节点。禁用 cluster_mode 参数时,ElastiCache 会传播已提升副本的 DNS 更改,以便您的应用程序可以继续将数据写入主终端节点。启用 cluster_mode 参数时,ElastiCache 会更新群集的节点映射。同时,ElastiCache 还将启动一个新节点来替代与故障主节点处在同一可用区的已提升只读副本。如果主节点因可用区临时故障而发生故障,一旦该可用区得到恢复,新的副本即会启动。

问:我能否将同一可用区中的副本设为主节点?

能。注意,将主节点和只读副本放在同一可用区不会使 Redis 的 ElastiCache 复制组灵活响应可用区的故障。

问:什么情况下会使 Amazon ElastiCache 将故障转移到只读副本中?

如果发生以下任何情况,Amazon ElastiCache 将会把故障转移到只读副本中:

  • 主节点可用区的可用性受损
  • 主区域的网络连接受损
  • 主区域的计算设备出现故障

问:应该在何时使用多可用区?

将 Redis 复制与多可用区连用可提高可用性和容错性能。这种部署非常适合在生产环境中使用。当运行 ElastiCache for Redis 群集且群集模式已启用时,如果您的分区有一个或多个只读副本,多可用区将自动启用。

问:我如何在启用多可用区的情况下创建 ElastiCache for Redis 复制组?

您可以在 ElastiCache 管理控制台中单击“创建”来创建 ElastiCache for Redis 主节点和只读副本。您还可以通过调用 CreateReplicationGroup API 来执行此操作。对于现有的群集(Redis 2.8.6、2.8.19、2.8.21、2.8.22、2.8.23、2.8.24 和 3.2.4,且 cluster_mode 已禁用),您可以通过在 ElastiCache 管理控制台中选择群集并单击“修改”或使用 ModifyReplicationGroup API 来启用多可用区。将复制组切换为多可用区不会破坏您的 Redis 数据,并且不会干扰您的节点提供请求的能力。

问:当主节点发生故障时,将提升哪个只读副本?

如果只读副本不止一个,将提升向主节点进行异步复制时延迟最小的只读副本。

问:使用多可用区如何收费?

多可用区功能是免费的。您只需为您所使用的 ElastiCache 节点付费。

问:多可用区有什么性能影响?

ElastiCache 目前使用 Redis 引擎的本地异步复制,并受其优势和局限性的影响。尤其是当只读副本首次连接主节点时,或主节点发生更改时,只读副本会从主节点中完整同步数据,从而对其自身和主节点施加负载。有关 Redis 复制的更多详细信息,请查看此处

问:哪些节点类型支持多可用区?

ElastiCache 上现有的所有节点类型都支持多可用区,仅有一个例外情况。当使用 Redis 2.8.x 且 cluster_mode 处于禁用状态时,T2 系列将不支持多可用区。

问:执行自动故障转移时,我是否会收到提示?

是,Amazon ElastiCache 将创建事件,以通知您已执行自动故障转移。您可以使用 DescribeEvents API 返回 ElastiCache node 相关事件的信息,或单击 ElastiCache 管理控制台的“Events”部分。

问:故障转移后,我的主节点当前与其它 AWS 资源(如 EC2 实例)位于不同的可用区。我是否需要考虑延迟?

可用区域设计为,向同一区域其他可用区提供低延迟网络连接。您可能会考虑以跨多个可用区的冗余架构应用程序及其它 AWS 资源,以便在出现可用区故障时应用程序能够灵活反应。

问:可以在哪里获得关于多可用区的更多信息?

有关多可用区的更多信息,请参阅 ElastiCache 文档

问:我可以测试多可用区功能吗?

可以。如果您针对具有一个或多个只读副本的群集或复制组启用“多可用区”功能,则会触发故障转移。ElastiCache 的响应与在真实故障场景中相同,即检测故障并将最新的只读副本提升为新的主副本,然后使用该副本替换发生故障的主副本,并将故障主副本添加为新的只读副本来代替提升的副本。有关测试故障转移的更多信息,请参阅相关文档


问:什么是“备份与恢复”?

“备份与恢复”是一项功能,可让客户为他们的基于 Redis 的 ElastiCache 群集创建快照。ElastiCache 存储这些快照,以便用户之后用来恢复 Redis 群集。

问:什么是快照?

快照是您的整个 Redis 群集在特定时刻的副本。

问:为什么需要快照?

如果发生节点故障和低概率硬件故障,可能导致数据丢失,这时创建快照非常有用。使用备份的另一个常见原因是用于存档。快照存储在 Amazon S3 中,这是一种持久存储服务,意味着即使发生电源故障,您的数据也不会被擦除。

问:快照有什么作用?

您可使用快照通过预加载数据来热启动基于 Redis 的 ElastiCache 群集。

问:“备份与恢复”如何发挥作用?

一旦启动备份,ElastiCache 将拍摄特定 Redis 群集的快照,之后可将其用于恢复或存档。您随时可以选择启动备份,也可以设置一个保留期长达 35 天每天重复进行的备份。

当您选择一个快照进行恢复时,将会创建一个新的基于 Redis 的 ElastiCache 群集并填充快照中的数据。您可以通过这种方式从一个特定的快照创建多个基于 Redis 的 ElastiCache 群集。

ElastiCache 目前使用 Redis 的原生机制创建 RDB 文件并将其存储为快照。

问:我的快照存储在哪里?

快照存储在 S3 中。

问:如何开始使用“备份与恢复”?

您可以选择通过 AWS 管理控制台、ElastiCache API(CreateCacheCluster、ModifyCacheCluster 和 ModifyReplicationGroup API)以及 CLI 使用“备份和还原”功能。您可以选择随时停用并重新激活该功能。

问:如何指定要备份的 Redis 群集和节点?

“备份与恢复”根据群集创建快照。用户可以通过 AWS 管理控制台、CLI 或 CreateSnapshot API 指定要备份的基于 Redis 的 ElastiCache 群集。在复制组中,您可以选择备份主群集或任何只读副本群集。我们建议用户对一个只读副本启用备份,以降低对 Redis 主群集的延迟影响。

问:基于 Memcached 的 ElastiCache 是否支持“备份与恢复”?

否,快照仅适用于基于 Redis 的 ElastiCache。

问:如何指定开始备份的时间?

您可以通过 AWS 管理控制台、CLI 或 API 指定开始单次备份或重复备份的时间。用户能够:

  • 立即拍摄快照(通过“Redis”选项卡上的“备份”控制台按钮,或使用 CreateSnapshot API)
  • 设置自动每日备份。备份将在您首选的备份时间内开始执行。您可以通过控制台,也可以通过 CreateCacheCluster、ModifyCacheCluster 或 ModifyReplicationGroup API,使用“创建/修改”群集来进行设置。

问:什么是备份时间?为什么我需要使用它?

首选备份时间是用户定义的时间段,在该时间段内,您的基于 Redis 的 ElastiCache 群集会开始备份。如果您需要在每日特定时间备份或避免在超高使用率时间段内备份,首选备份时间将非常有用。

问:拍摄快照对性能有什么影响?

拍摄快照时,节点延迟可能会在短时间内增加。快照使用 Redis 内置的 BGSAVE,因此受其优点和缺点的影响。尤其是当 Redis 进程分叉时,父进程将继续为请求提供服务,而子进程将数据存储在磁盘上然后退出。快照生成期间,分叉会增加内存使用率。当内存使用量超过节点的可用内存时,将会触发交换,进一步降低节点速度。鉴于此,我们建议对一个只读副本生成快照(而非主群集)。此外,我们建议设置预留内存参数,以将交换使用率降至最低。请参阅此处查看更多详情。

问:我可以从基于 Redis 的 ElastiCache 只读副本创建快照吗?

可以。从只读副本创建快照是备份数据同时将性能影响降至最低的最佳方式。

问:“备份与恢复”功能对哪些地区适用?

“备份与恢复”功能对可以使用 ElastiCache 服务的所有地区均适用。

问:我可以将 ElastiCache for Redis 快照导出到我的 S3 存储桶中吗?

可以。您可以将您的 ElastiCache for Redis 快照导出到您的群集所在区域内的授权 S3 存储桶中。关于导出快照和设置所需权限的更多详细信息,请参阅此处

问:我可以将快照从一个区域复制到其他区域吗?

可以。您必须首先将快照复制到在同一区域内选择的授权 S3 存储桶中,然后使用 S3 PUT object – Copy API 将其复制到其他区域内的存储桶。关于复制 S3 对象的更多详细信息,请参阅此处

问:我有多个使用基于 Redis 的 ElastiCache 的 AWS 账户。可以使用一个账户的 ElastiCache 快照来热启动其他账户中的基于 Redis 的 ElastiCache 群集吗?

可以。您必须首先将快照复制到在同一区域内选择的授权 S3 存储桶中,然后对另一个账户授予跨账户存储桶的权限。关于 S3 跨账户权限的更多详细信息,请参阅此处。最后,在创建群集过程中,通过控制台上的“启动缓存群集向导”或 CreateCacheCluster API 指定 RDB 文件在 S3 中的位置。

问:使用“备份与恢复”的成本是多少?

Amazon ElastiCache 为每个有效的基于 Redis 的 ElastiCache 群集免费提供一个快照的存储空间。额外存储将根据快照占用的空间收取费用,每月 0.085 USD/GB(所有地区的价格相同)。免费提供快照数据传输。

问:什么是保留期?

保留期是指保留自动快照的时间跨度。例如,如果将保留期设置为 5 天,则今天拍摄的快照将会保留 5 天之后才删除。您可以选择复制一个或多个自动快照并将它们存储为手动快照,从而使得它们在到达保留期之后也不会被删除。

问:如何管理自动快照的保留?

您可以使用 AWS 管理控制台或 ModifyDBInstance API,通过修改 RetentionPeriod 参数来管理自动备份的保留时间段。如果希望关闭自动备份,可以通过将保留期设置为 0 来执行该操作(不建议)。

问:如果删除基于 Redis 的 ElastiCache 群集,我的快照会怎么样?

当您删除基于 Redis 的 ElastiCache 群集时,您的手动快照将保留下来。您还可以选择在群集删除前创建一个最终快照。自动快照不会保留。

问:哪些节点类型支持备份与恢复功能?

所有 ElastiCache for Redis 实例节点类型都支持备份与还原,包括 t1.micro 和 t2 系列:

最新一代节点:

  • cache.m3.medium
  • cache.m3.large
  • cache.m3.xlarge
  • cache.m3.2xlarge
  • cache.m4.large
  • cache.m4.xlarge
  • cache.m4.2xlarge
  • cache.m4.4xlarge
  • cache.m4.10xlarge
  • cache.r3.large
  • cache.r3.xlarge
  • cache.r3.2xlarge
  • cache.r3.4xlarge
  • cache.r3.8xlarge

上一代节点:

  • cache.m1.small
  • cache.m1.medium
  • cache.m1.large
  • cache.m1.xlarge
  • cache.m2.xlarge
  • cache.m2.2xlarge
  • cache.m2.4xlarge
  • cache.c1.xlarge

问:我可以使用自己存储在 S3 中的 RDB 快照热启动基于 Redis 的 ElastiCache 群集吗?

可以。您可以在创建群集时,使用控制台中的创建群集向导或 CreateCacheCluster API 指定 RDB 文件在 S3 中的位置。

问:如果我在 VPC 上运行 ElastiCache,可以使用“备份与恢复”功能吗?

可以。


问:什么是 ElastiCache for Redis 群集?

利用 ElastiCache for Redis 群集,客户可以使用多个分区创建和运行托管的 Redis 群集。ElastiCache for Redis 群集与开源 Redis 3.2 兼容,并具有一系列增强功能,可提供更加稳健的使用体验(有关增强功能的更多详细信息,请参阅下方的“增强型引擎”部分)。

问:为什么需要扩展 Redis 环境?

当遇到以下三种主要场景时,须运行扩展的 Redis 环境。第一,如果 Redis 数据的总内存大小超出或预计超出单个虚拟机的内存容量。第二,如果应用程序将数据写入 Redis 的写入吞吐量超出单个虚拟机的容量。第三,如果要将数据分布到多个分区中,以便在单个节点遇到任何问题时,对总体 Redis 环境产生的影响都较小。

问:为什么我要在 Amazon ElastiCache 中运行 Redis 群集工作负载?

Amazon ElastiCache 提供完全托管的分布式内存 Redis 环境,并承担从预置服务器资源、安装引擎软件到应用所选的任何配置参数等各项任务。它使用由 Amazon 开发的 Redis 引擎增强功能,提供更为强大且稳定的体验(有关更多详细信息,请参阅“增强型引擎”部分)。Redis 环境设置完毕并投入运行后,该服务还将自动化处理常见的管理任务,如故障检测和恢复、备份和软件修补等。该服务还提供更加强大的多可用区解决方案,能够实施自动故障转移。如果群集中的一个或多个主节点发生故障,Amazon ElastiCache 将自动检测故障,并将最新副本提升为主节点来应对故障。这是一个自动化流程,不需要您动手操作。Amazon ElastiCache 还提供了与 ElastiCache 节点相关的详细监控指标,让您能够快速诊断问题并做出响应。

问:ElastiCache for Redis 群集与开源 Redis 是否兼容?

是的。Amazon ElastiCache for Redis 群集与开源 Redis 3.2 兼容。您可以使用开源 Redis 群集客户端访问 ElastiCache for Redis 上的扩展群集。

问:创建群集后,我可以修改分区的数量吗?

目前,您不可以在创建群集后修改群集中的分区数量。

问:从当前适用于 Redis 2.8.x 的 ElastiCache 升级到 ElastiCache for Redis 群集(版本 3.2.4),其升级路径是什么?

如果您仍在使用已禁用 cluster_mode 参数的 Redis 3.2,则可以直接选择您想要升级的节点或群集并修改引擎版本。在维护终端节点时,ElastiCache 将预置一个 Redis 3.2.4 群集,并将数据迁移到该群集中。

如果您正在使用已启用 cluster_mode 的 Redis 3.2,则可以迁移到 Redis 群集。首先,使用备份和恢复功能创建一个数据快照。然后,选择创建的快照,并单击“还原快照”,以使用快照数据创建一个 Redis 3.2 群集。最后,在客户端更新新的终端节点。请注意,要在群集模式下使用 Redis 3.2,您需要切换到 Redis 群集客户端。

问:群集配置的定价与非群集配置有何差异?

没有差异。对于群集配置和非群集配置,Amazon ElastiCache for Redis 以相同的价格为客户提供灵活性。现在,客户可以在 Amazon ElastiCache for Redis 中享受增强型引擎的功能,并以相同的价格使用各种功能来支持群集配置和可扩展性。 

问:ElastiCache for Redis 群集的多可用区是什么?

ElastiCache for Redis 群集的每个分区都由一个主节点和多达五个只读副本组成。Redis 将数据从主节点异步复制到只读副本中。在特定类型的计划维护期间,或 ElastiCache 节点故障或可用区故障(不太可能发生)期间,Amazon ElastiCache 将自动检测主节点故障、选择一个只读副本并将其提升为新的主节点。

ElastiCache for Redis 群集为 Redis 3.x 环境提供了增强功能和管理功能。运行非托管 Redis 环境时,如果发生主节点故障,群集将依靠大多数主节点来决定和执行故障转移。如果此类大多数节点不存在,群集将进入故障状态,拒绝任何后续读取和写入操作。这将导致应用程序的可用性受到严重影响,且需要人工干预,以便手动解救群集。ElastiCache for Redis 的多可用区功能旨在高效稳健地处理 Redis 群集的任何故障转移。

问:ElastiCache for Redis 群集的多可用区,与适用于版本 Redis 2.8.x 的 ElastiCache 的多可用区有何不同?

Redis 3.x 使用智能客户端,该客户端存储了节点映射,其中包含所有群集节点的终端节点。在故障转移期间,该客户端将使用新主节点的 IP 终端节点来更新节点映射。与适用于 Redis 2.8.x 的 ElastiCache 相比,其故障转移速度提高了 4 倍。

问:对 Redis 群集而言,多可用区如何发挥作用?

如果您正在使用 ElastiCache for Redis 群集,且每个分区都有一个或多个只读副本,则您可以使用多可用区功能。如果分区的主节点发生故障,ElastiCache 将自动检测该故障,从可用只读副本中选择一个副本并将其提升为新的主节点。Redis 3.x 客户端会将提升的副本更新为主节点,且无需对应用程序进行更改。此外,ElastiCache 还将启动一个新节点来替代与故障主节点处在同一可用区的已提升只读副本。如果主节点因可用区临时故障而发生故障,该可用区恢复后,新的副本将会立即启动。

问:ElastiCache for Redis 群集备份是什么?

ElastiCache for Redis 群集备份是群集分区的一系列快照,这些快照存储在一起,以便在特定时段保存一份完整的 Redis 数据。

问:ElastiCache for Redis 群集备份与 ElastiCache for Redis 中的快照有何不同?

由于 ElastiCache for Redis 非群集环境中只有一个主节点,因此,备份是一个包含一份 Redis 数据的文件。ElastiCache for Redis 群集可以有一个或多个分区,因此一份备份可能包含多个文件。

问:如何指定在各个分区内,哪个 ElastiCache for Redis 节点用于备份?

您无法手动指定各个分区内哪个节点用于备份。启动备份后,ElastiCache 将自动选择每个分区内最新的只读副本,并拍摄其数据快照。

问:ElastiCache for Redis 群集如何进行备份和恢复?

启动备份后,ElastiCache 将拍摄指定群集的快照,之后可将备份用于恢复或存档。备份包含群集中各个分区内的数据,因此,一份完整的备份包含一系列文件。您可以随时启动备份,也可以设置为每日定期备份,其保留期可长达 35 天。

当您选择一个备份进行恢复时,系统将会创建一个新的 ElastiCache for Redis 群集,且该群集已填充了备份中的数据。此外,您还可以使用此项功能在 ElastiCache 上获得轻松迁移至托管 Redis 群集的体验。如果您在 EC2 上运行自管式 Redis,则可以拍摄 RDB 快照或获取您的现有工作负载 (Redis 群集和单分区 Redis),并将它们存储在 S3 中。然后只需将它们作为用于在 ElastiCache 上创建分区式 Redis 群集的输入内容提供,并提供所需分区数量, 剩下的则由 ElastiCache 完成。

目前,ElastiCache 使用 Redis 的原生机制为各个分区创建 RDB 文件并将其存储为备份。

问:ElastiCache for Redis 群集备份是某个时间点的快照吗?

启动备份后,ElastiCache 将同时触发群集内所有分区的备份。在极少数情况下,可能需要为第一次未成功完成备份的一个或多个节点重新拍摄快照。ElastiCache 会自动执行此操作,无需用户干预。但是,在这种情况下,每个快照都是其节点在某个时间点的备份,群集的各个快照并不是同时拍摄的。

问:如何指定开始备份的时间?

您可以通过 AWS 管理控制台、CLI 或 API 指定开始单次备份或重复备份的时间。用户能够:

  • 立即执行备份(通过“创建快照”控制台按钮或使用 CreateSnapshot API)
  • 设置自动每日备份。备份将在您首选的备份时间内开始执行。您可以使用控制台,也可以使用 CreateReplicationGroup API 和 ModifyReplicationGroup API,通过创建/修改群集进行设置。

问:我可以使用自己存储在 S3 中的 RDB 快照为扩展 ElastiCache for Redis 群集环境做准备吗?

可以。您可以在创建群集时,使用控制台中的创建群集向导或 CreateReplicationGroup API 指定 RDB 文件在 S3 中的位置。ElastiCache 将自动解析 RDB 快照的 Redis 密钥空间,并将其重新分发至新群集的分区内。


问:ElastiCache for Redis 内的引擎与开源 Redis 有何不同?

ElastiCache for Redis 内的引擎与开源 Redis 完全兼容,但前者具有一系列增强功能,提高了其功能性和稳定性。增强功能包括:

  • 可用内存增加:您现在可以放心地为应用程序分配更多内存,而不会导致在同步和拍摄快照时提高交换区使用率。
  • 同步功能得到改进:在过载和恢复网络连接时,具有更强大的同步功能。此外,由于主节点和副本不再使用磁盘进行此操作时,因此同步速度更快。
  • 故障转移更加顺利:故障转移时,副本不再刷新数据来与主节点进行全面重新同步,您的分区现在可以更快速地恢复。

问:如何使用增强型引擎?

要在 Amazon ElastiCache 管理控制台使用增强型引擎,只需在创建群集时,选择与 Redis 引擎版本 2.8.22 或更高版本兼容的引擎。从那时起,您将使用增强型引擎。您还可以通过 ElastiCache API 或 AWS CLI 使用增强型引擎,方法是在运行 CreateCacheCluster API 时指定引擎版本。

问:要在 ElastiCache 上使用增强型引擎,需要更改应用程序代码吗?

不需要。增强型引擎与开源 Redis 完全兼容,因此,您无需对应用程序代码作出任何更改,即可享受其改进的稳定性和强大功能。

问:使用增强型引擎的费用是多少?

使用增强型引擎,不会额外收取任何费用。与以往一样,您只需为使用的节点付费。



问:什么是在线群集规模调整?

适用于 Redis 的 Amazon ElastiCache 可以在正在运行的群集中添加和删除分区。您可以动态扩展或缩减 Redis 群集工作负载,以便适应需求变化。ElastiCache 将通过添加或删除分区以及跨新分区配置均匀地重新分布哈希插槽来调整群集的规模,与此同时,群集仍然保持在线,并为请求提供服务。

问:使用在线群集规模调整有哪些优势?

能够动态扩展或缩减群集,即可帮助您管理应用程序的多样化、满足不断变化的需求。您可以通过添加或删除分区来调整群集的规模,从而扩展性能和内存容量。有了该功能,就无需基于峰值需求过度配置群集,这有助于提高效率、降低成本。

问:我如何使用在线群集规模调整?

Redis 引擎版本 3.2.10 中提供了在线群集规模调整。要对群集重新分区,请选择该群集,并指定您是要添加还是要删除分区。当您扩大群集规模时,ElastiCache 会添加分区并将插槽从现有分区迁移到新分区,使插槽按数量均匀分布到所有分区中。同样,在缩小规模时,ElastiCache 会将插槽迁移到剩余分区,以便均匀地分布插槽并删除指定的分区。

问:在线群集规模调整需要多长时间?

调整群集规模所需的时间取决于多种因素,如需要跨分区迁移的插槽数量、数据规模和群集上的传入请求率。但是,该流程专为并行执行插槽迁移而进行了优化,可在您添加更多分区来扩展群集时缩短所需的时间。

问:可在调整群集规模的同时使用该群集吗?

可以,在重新分区时,该群集仍然保持在线,并为传入请求提供支持。但是,不支持在重新分区时为群集拍摄快照,以防增加群集上的负载。

问:此操作会对群集的性能产生任何影响吗?

虽然在线群集规模调整提供了零停机扩展/缩减的优势,但它是一项计算密集型操作,可能会增加客户端连接的延迟。为了在操作期间减少群集上的负载,我们建议您遵循最佳实践 (如文档中所述)。

问:我如何追踪在线重新分区操作的进度?

您可以通过查看群集、分区和节点的状态来追踪该操作的进度。在该操作期间,群集、分区和节点将处于“正在修改”状态。同样,在分区创建、删除或参与插槽迁移时,单个分区的状态将反映这些状态以显示进度。此外,还可以使用重新分区操作的进度指示器来追踪端到端操作的状态,该指示器可指示已完成的百分比,并提供有关该操作剩余时间的信息。最后,在此操作期间,事件消息也可通过描述所采取的操作 (分区创建、插槽迁移等)来指示进度。

问:什么是适用于 Redis 的 ElastiCache 群集的重新平衡操作?

重新平衡操作可用于在现有分区内重新分配插槽,以实现均匀分布。当通过手动指定的不均匀插槽分布创建群集时,或者扩展/缩减操作使群集分布不均匀时,此操作非常有用。假设插槽具有相同的内存和 I/O 要求,按数量均匀分布插槽是跨各个分区实现负载均衡的简单方法。

问:扩展群集时,标记如何运作?

在添加新节点以扩展群集时,节点会带有一组相同的标签,这些标签在所有现有节点中通用。此外,用户也可以修改所有节点上的标签,然后像以前一样继续使用标记功能。

问:为了使用在线群集规模调整,需要对客户端或应用程序进行任何更改吗?

不需要。群集规模调整流程中使用的增强型插槽分布方式符合 Redis 群集客户端行为,不需要对应用程序进行任何更改。ElastiCache 可保留群集终端节点,您可以继续使用现有客户端,无需进行任何更改。

问:使用增强型 Redis 引擎的费用是多少?

使用增强型 Redis 引擎,不会额外收取任何费用。与以往一样,您只需为使用的节点付费。


问:适用于 Redis 的 ElastiCache 的传输中数据加密可提供哪些优势?

借助传输中数据加密功能,您可以对客户端与 Redis 服务器之间以及 Redis 服务器 (主节点和只读副本节点) 间的通信数据进行加密。

问:适用于 Redis 的 ElastiCache 的静态数据加密可提供哪些优势?

借助静态数据加密功能,您可以在备份和还原过程中对数据进行加密,即加密在磁盘上以及通过 Amazon S3 备份和还原的数据。

问:如何使用传输中数据加密、静态数据加密和 Redis AUTH?

传输中数据加密、静态数据加密和 Redis AUTH 均为可选功能。在通过控制台或命令行界面创建 Redis 群集时,您可以指定是否要启用加密和 Redis AUTH,并且可以进一步提供用于与 Redis 群集通信的身份验证令牌。群集设置完毕并启用加密之后,ElastiCache 可以无缝管理证书过期和续订,而无需您通过应用程序执行任何其他操作。此外,Redis 客户端需要支持 TLS 才能利用加密的传输中数据流量。

问:要使用传输中数据加密或静态数据加密功能,是否需要使用适用于 Redis 的 Amazon ElastiCache 客户端?

不需要。使用传输中数据加密需要客户端支持 TLS。大部分常用的 Redis 客户端 (如 Lettuce、Predis、go-Redis) 均可通过配置设置支持 TLS。您需要确认所选的 Redis 客户端已配置为支持 TLS,然后便可以像之前一样使用适用于 Redis 的 ElastiCache。

问:我能否在现有的适用于 Redis 的 ElastiCache 群集上启用传输中数据加密和静态数据加密?

不能。传输中数据加密和静态数据加密仅适用于新群集,在现有的适用于 Redis 的 ElastiCache 群集上不受支持。适用于 Redis 的 ElastiCache 3.2.6 版是支持这些功能的第一个版本。

问:续订证书是否需要执行任何操作?

不需要。ElastiCache 会在后台管理证书过期和续订。后续证书维护不需要用户执行任何操作。

问:我能否使用自己的证书进行加密?

不能。目前,ElastiCache 不支持用户使用自己的证书。ElastiCache 将以透明方式为您管理证书。

问:传输中数据加密和静态数据加密支持哪些实例类型?

传输中数据加密和静态数据加密功能支持当前一代的所有实例。

问:使用加密功能是否需要支付额外费用?

使用加密功能无需支付额外费用。


问:适用于 Redis 的 Amazon ElastiCache 是否符合 HIPAA 的要求?

符合,适用于 Redis 的 Amazon ElastiCache 是一种符合 HIPAA 要求的服务,并且已被加入 AWS 商业伙伴协议 (BAA)。也就是说,您可以借助适用于 Redis 的 ElastiCache 来处理、维护和存储受保护的健康信息 (PHI) 以及为医疗保健应用程序提供支持。

问:如何才能使用符合 HIPAA 要求的适用于 Redis 的 ElastiCache?

如果您与 AWS 签订了已生效的商业伙伴协议 (BAA),便可使用适用于 Redis 的 ElastiCache 构建符合 HIPAA 要求的应用程序。如果您未签订 BAA,或对将 AWS 用于 HIPAA 合规应用程序有其他问题,请联系我们了解详细信息。有关如何配置符合 HIPAA 要求的 Amazon 服务来存储、处理和传输 PHI 的信息,请参阅 Amazon Web Services 上的 HIPAA 安全性和合规性架构设计

问:适用于 Redis 的 ElastiCache 支持哪些合规性计划?

适用于 Redis 的 ElastiCache 支持 SOC 1、SOC 2、SOC 3、ISO、MTCS、C5 和 HIPAA 等合规性计划。请参阅按合规性计划提供的范围内 AWS 服务,查看受支持的合规性计划的最新列表。

问:使用合规性功能是否会产生额外费用?

否,使用合规性功能不会产生任何额外费用。