一般性问题
基础知识
问:什么是 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 可用作主要内存键值数据存储,提供快速的亚毫秒级数据性能、高可用性和高可扩展性。您可以选择配置 一个 500 节点的集群,分区数量在 83 个(一个主分区,每个分区五个副本)到 500 个(单个主分区,没有副本)之间,从而最高为您提供 340TB 的内存。Amazon ElastiCache for Redis 从 Redis 版本 5.0.6 开始支持 500 节点集群。有关其他使用案例,如排行榜、速率限制、队列和聊天,请单击此处。
问:我可以通过 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 支持哪些引擎?
Amazon ElastiCache 为需要亚毫秒级响应时间的要求最高的应用程序提供完全托管式 Redis(连续 5 年在 Stack Overflow 开发人员调查中被开发人员票选为最受欢迎的数据库)和 Memcached。
问:如何开始使用 Amazon ElastiCache?
如果还没有注册 Amazon ElastiCache,您可以单击 Amazon ElastiCache 页面上的“开始使用”按钮,然后完成注册过程。您必须拥有 Amazon Web Services 账户才能访问此服务;如果还没有该账户,则在您开始 Amazon ElastiCache 注册过程时,系统将提示您创建一个账户。注册 ElastiCache 后,请参阅 Amazon ElastiCache 文档(其中包含 Amazon ElastiCache for Redis 或 Amazon ElastiCache for Memcached 的入门指南)。
熟悉 Amazon ElastiCache 后,即可使用 AWS 管理控制台或 Amazon ElastiCache API 在几分钟内启动集群。
问:如何创建集群?
创建集群非常简单,使用 AWS 管理控制台、Amazon ElastiCache API 或命令行工具均可创建集群。要使用 AWS 管理控制台启动集群,请在“Memcached”或“Redis”选项卡上单击“创建”按钮。然后,您需要指定集群标识符、节点类型和节点数量,以使创建的集群拥有您需要的内存量。此外,您也可以使用 CreateCacheCluster API 或 elasticache-create-cache-cluster 命令创建集群。如果创建集群时没有指定可用区,AWS 将根据您的内存需求和可用容量自动将其放置到一个可用区。
问:可以选择哪些节点类型?
Amazon ElastiCache 支持下列节点类型:
最新一代节点:
cache.m4.large:6.42 GiB、cache.m4.xlarge14.28 GiB、cache.m4.2xlarge:29.7 GiB、cache.m4.4xlarge:60.78 GiB、cache.m4.10xlarge:154.64 GiB、cache.m5.large:6.38 GiB、cache.m5.xlarge:12.93 GiB、cache.m5.2xlarge:26.04 GiB、cache.m5.4xlarge:52.26 GiB、cache.m5.12xlarge:157.12 GiB、cache.m5.24xlarge:314.32 GiB、cache.m6g.large:6.38 GiB、cache.m6g.xlarge:12.94 GiB、cache.m6g.2xlarge:26.05 GiB、cache.m6g.4xlarge:52.26 GiB、cache.m6g.8xlarge:103.68 GiB、cache.m6g.12xlarge:157.13 GiB、cache.m6g.16xlarge:209.55 GiB、cache.r4.large:12.3 GiB、cache.r4.xlarge:25.05 GiB、cache.r4.2xlarge:50.47 GiB、cache.r4.4xlarge:101.38 GiB、cache.r4.8xlarge:203.26 GiB、cache.r4.16xlarge:407 GiB、cache.r5.large:13.07 GiB、cache.r5.xlarge:26.32 GiB、cache.r5.2xlarge:52.82 GiB、cache.r5.4xlarge:105.81 GiB、cache.r5.12xlarge:317.77 GiB、cache.r5.24xlarge:635.61 GiB、cache.r6g.large:13.07 GiB、cache.r6g.xlarge:26.32 GiB、cache.r6g.2xlarge:52.82 GiB、cache.r6g.4xlarge:105.81 GiB、cache.r6g.8xlarge:209.55 GiB、cache.r6g.12xlarge:317.77 GiB、cache.r6g.16xlarge:419.1 GiB、cache.t2.micro:555 MB、cache.t2.small:1.55 GiB、cache.t2.medium:3.22 GiB、cache.t3.micro:0.5 GiB、cache.t3.small:1.37 GiB、cache.t3.medium:3.09 GiB、cache.t4g.micro:0.5 GiB、cache.t4g.small:1.37 GiB、cache.t4g.medium:3.09 GiB
具有数据分层的最新一代节点:
cache.r6gd.xlarge:26.32 GiB 内存,99.33 GiB SSD、cache.r6gd.2xlarge:52.82 GiB 内存,199.07 GiB SSD、cache.r6gd.4xlarge:105.81 GiB 内存,398.14 GiB SSD、cache.r6gd.8xlarge:209.55 GiB 内存,796.28 GiB SSD、cache.r6gd.12xlarge:317.77 GiB 内存,1194.42 GiB SSD、cache.r6gd.16xlarge:419.1 GiB 内存,1592.56 GiB SSD
上述节点类型均列出了在考虑 Amazon ElastiCache 系统软件消耗后的 Memcached 或 Redis 可用内存。集群的内存总量是每个分区可用内存的整数倍。例如,如果一个集群包含 10 个分区,每个分区的可用内存为 6GB,则该集群的总内存为 60 GB。
问:如何访问我的节点?
集群可用后,您就可以在 AWS 管理控制台中按照下列步骤来检索您的节点端点:
- 导航到“Amazon ElastiCache”选项卡。
- 单击“节点数量”链接,再导航到“节点”选项卡。
- 单击“复制节点终端节点”按钮。
此外,您也可以使用 DescribeCacheClusters API 检索终端节点列表。
然后,您可以用此终端节点列表配置您的 Memcached 或 Redis 客户端,并使用您最常用的编程语言在您的 ElastiCache 节点中添加或删除数据。要允许对您的节点发出网络请求,您需要授予访问权限。有关详细的入门说明,请参阅我们的 Amazon ElastiCache for Redis 或 Amazon ElastiCache for Memcached 入门指南。
问:什么是维护时段? 在软件维护期内,我的节点是否可用?
您可以将 Amazon ElastiCache 维护时段视为在请求或需要的情况下执行软件修补的机会。如果在给定的星期内安排了“维护”事件,将在您确定的 60 分钟维护时段的某个时间点启动和完成维护。
如果安排了软件修补,您的节点将在维护时段内出现短暂停机。有关详细信息,请参阅“引擎版本管理”。软件修补可以是用户请求的(如缓存软件升级),或者是按需确定的(如果我们发现系统或缓存软件中存在任何安全漏洞)。软件修补很少发生(通常几个月一次),并且大多只需要维护时段的其中一小段时间。如果创建集群时未指定首选周维护时段,则系统将为其指定默认值(60 分钟)。如果您希望修改系统为您执行维护的时间,可以通过在 AWS 管理控制台中修改数据库实例或使用 ModifyCacheCluster API 进行修改。您的各个集群可以具有不同的首选维护时段(如果您选择如此设置)。
预留节点
问:什么是 Amazon ElastiCache 预留节点?
预留节点或预留实例(RI)是一种产品,如果您承诺预留一年或三年,它可为您提供可观的按需实例使用折扣。借助预留节点,您可以一次性支付预付款来购买一年或三年期的预留服务,以在特定区域运行节点。您还可在当前每小时使用费率的基础上享受大幅折扣。预留节点有三种类型(全额预付、不预付和部分预付),您可以通过这些选项平衡您的预付款与您的有效小时价格。
问:预留节点与按需节点有何区别?
预留节点和按需节点在功能上是完全相同的。二者唯一的区别在于节点的计费方式;对于预留节点,您可以一次性预付款并在协议期限内享受较低的小时使用费率(相较于按需节点)。
问:如何购买和创建预留节点?
您可以使用 AWS 管理控制台中的“购买预留节点”选项。此外,您也可以使用 API 工具,即使用 DescribeReservedCacheNodesOfferings API 列出可供购买的预留节点,然后调用 PurchaseReservedCacheNodesOffering 购买预留缓存节点。
创建预留节点与启动按需节点没有任何区别。您只需指定节点级别以及预留所在的区域。成功购买预留节点后,Amazon ElastiCache 即会对新节点应用您可以享受的小时费率折扣。
问:是否一直有预留可供购买?
可以。预留节点按区域购买,而不是按可用区。这表示,即使某个可用区的容量有限,您仍可以在相应区域购买预留,并在该区域中的其他可用区使用该预留。
问:我可以购买多少个预留缓存节点?
您最多可以购买 300 个预留节点。如果要运行的节点超过 300 个,请填写 Amazon ElastiCache 节点申请表。
问:如果我想将现有的节点转换为预留节点,应该怎么办?
您只需在当前节点运行所在的区域(同时也是要使用预留的区域)购买相同级别的预留节点即可。成功购买预留节点后,Amazon ElastiCache 将自动对您现有的节点应用新的小时使用费率。
问:如果我注册了预留节点,预留期限从何时开始算起? 期限结束后,我的节点将如何处理?
收到您的请求并处理付款授权后,系统将会激活与预留节点相关联的定价变更。您可以在“AWS 账户活动”页面或使用 DescribeReservedCacheNodes API 跟踪预留的状态。如果在下一账单周期前未成功授权一次性付款,折扣价格则不会生效。
预留期限到期后,您的预留节点将恢复为相应节点级别和区域的按需节点小时费率。
问:我如何控制哪些节点按预留节点费率进行计费?
对于按需节点和预留节点而言,用于创建、修改和删除节点的 Amazon ElastiCache API 是相同的,因此,您可以无缝使用这两种节点。计算账单时,我们的系统将自动应用您的预留费率,即所有符合条件的节点都将按较低的预留缓存节点小时费率收费。
问:是否可以将预留节点从一个区域或可用区转移到另一个区域或可用区?
每个预留节点都与特定的区域相关联,且在预留期限内应保持关联区域不变,因而无法更改区域。不过,每个预留在关联区域的任何可用区都可用。
问:是否可以取消预留?
不能,您无法取消预留数据库实例,而且一次性付款(如果适用)也不可退款。无论您使用多少容量,在预留数据库实例有效期内都必须继续支付小时费率。
问:付款选项会对我的账单产生什么影响?
当您按照全额预付款选项购买 RI 时,您需要用一次性预付付款方式为 RI 的整个期限付款。您可以通过选择不预付选项,不支付任何预付费用。不预付 RI 的整体价值覆盖实例期限中的每个小时,您将为该期限内的每个小时付费,无论使用情况如何。部分预付款选项是全额预付款和不预付选择的混合。进行小额预付款后,您将按较低的小时费率为实例期限内的每个小时付费,无论使用情况如何。
安全性
问:如何控制对 Amazon ElastiCache 的访问?
不使用 VPC 时,Amazon ElastiCache 允许您通过缓存安全组来控制对集群的访问。安全组的作用类似于防火墙,用于控制对集群的网络访问。默认情况下,不允许对集群进行网络访问。如果您希望应用程序访问集群,则必须在特定 EC2 安全组中明确允许来自主机的访问。这个过程称为“传入”。
要允许通过网络访问您的集群,请创建一个安全组,并将所需的 EC2 安全组(用于指定允许哪些 EC2 实例访问集群)关联至该安全组。您可以在创建时将安全组与集群关联,或者使用 AWS 管理控制台中的“修改”选项。
请注意,目前集群尚未启用基于 IP 范围的访问控制。集群的所有客户端都必须处于 EC2 网络中,并按照上文所述通过安全组的授权。
使用 VPC 时,请参阅此处了解更多信息。
问:我自己的数据中心服务器中运行的程序是否可以访问 Amazon ElastiCache?
可以。您可以从数据中心内运行的应用程序访问 Amazon ElastiCache 集群,前提是您的 VPC 与数据中心之间通过 VPN 或 Direct Connect 建立了连接。此处详细地进行了介绍。
问: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 用户指南。
以下是在 VPC 中创建集群的前提条件:
- 您需要创建至少包含一个子网的 VPC。有关创建 Amazon VPC 和子网的信息,请参阅 Amazon VPC 入门指南。
- 您需要为 VPC 定义一个子网组(用于 Redis 或 Memcached)。
- 您需要为 VPC 定义一个 VPC 安全组(或使用提供的默认值)。
- 此外,您需要为每个子网合理分配足够大的 CIDR 数据块,以便 Amazon ElastiCache 进行维护活动时(如缓存节点置换时)有足够的备用 IP 地址可用。
问:如何在现有的 VPC 内创建 Amazon ElastiCache 集群?
在现有的 VPC 内创建 Amazon ElastiCache 集群与在新建的 VPC 内创建集群的方法相同。下面是适用于 Redis 或 Memcached 的更多详情。
问:如何连接到 VPC 内的 ElastiCache 节点?
在 VPC 中部署的 EC2 实例可以访问同一 VPC 中部署的 Amazon ElastiCache 节点。如果这些 EC2 实例部署在具有关联弹性 IP 的公共子网中,您可以通过 Internet 访问 EC2 实例。
如果您想从 Internet 或 VPC 外部的 EC2 实例访问部署在 VPC 中的 Amazon ElastiCache 节点,请参阅适用于 Redis 或 Memcached 的指南。
ElastiCache 可确保当缓存节点在出现故障后恢复时,缓存节点的 DNS 名称和 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 for Redis 或 Amazon ElastiCache for Memcached 的文档。
问:是否可以使用安全组来配置 VPC 内的集群?
不可以,因为在 VPC 内运行时,不使用安全组。相反地,它们在非 VPC 环境下使用。在 VPC 内创建集群时,您将需要使用 VPC 安全组。
问:是否可以将常规的 EC2 安全组与在 VPC 内启动的集群相关联?
不可以。您只能关联与集群处于同一 VPC 的 VPC 安全组。
问:ElastiCache 集群的节点是否可以跨越多个子网?
可以。Amazon ElastiCache 集群的节点可以跨越多个子网,前提是这些子网属于同一个子网组,且该子网组在创建时便与该 ElastiCache 集群相关联。
参数组
问:什么是参数组? 它们有什么作用?
参数组可以用作引擎配置值的“容器”,这些值可应用于一个或多个集群。如果创建集群时未指定参数组,则将使用默认的参数组。该默认组包含已针对您运行的集群进行优化的引擎默认值和 Amazon ElastiCache 系统默认值。不过,如果您希望集群以您自定义的引擎配置值运行,您只需创建一个新参数组并根据需要修改参数,然后修改集群以使用新参数组。建立关联后,使用特定参数组的所有集群都将获得该参数组的所有参数更新。有关配置参数组的更多信息,请参阅 Amazon ElastiCache for Redis 或 Amazon ElastiCache for Memcached 用户指南。
问:如何为我的集群选择正确的配置参数?
默认情况下,Amazon ElastiCache 会考虑节点类型的内存/计算资源容量,为集群选择最优配置参数。不过,如果要进行更改,可以使用我们的配置管理 API 来执行操作。请注意,将配置参数改为非建议的值可能会产生从性能降低到系统崩溃等各种意外影响,只有愿意承担此类风险的高级用户才可以尝试该操作。有关更改参数的更多信息,请参阅 Amazon ElastiCache 用户指南。
问:如何查看指定参数组中参数的当前设置?
您可以使用 AWS 管理控制台、Amazon ElastiCache API 或命令行工具查看参数组信息及其对应的参数设置。
Redis
Redis 功能
问:什么是 Amazon ElastiCache for Redis?
Amazon ElastiCache for Redis 是一种 Web 服务,让用户能够在云中轻松部署和运行 Redis 协议兼容的服务器节点。该服务可以支持 Redis 节点的管理、监控和运行;而节点的创建、删除和修改可通过 Amazon ElastiCache 控制台、命令行界面(CLI)或 Web 服务 API 执行。Amazon ElastiCache for Redis 支持高可用性配置,包括启用 Redis 集群模式和禁用集群模式,并支持从主服务器到副本的自动失效转移。
问:Amazon ElastiCache for Redis 在协议上是否与开源 Redis 兼容?
是的,Amazon ElastiCache for Redis 设计为与开源 Redis 在协议上兼容。因此,客户在现有的独立 Redis 数据存储内使用的代码、应用程序、驱动程序和工具仍然能与 Amazon ElastiCache for Redis 协作,将现有 Redis 部署迁移到 Amazon ElastiCache for Redis 时,不需要更改代码,除非另有要求。目前,我们支持 Redis 7、6.2.5、6.0.5、5.0.6、5.0.5、5.0.4、5.0.3、5.0.0、4.0.10、3.2.10、3.2.6、3.2.4。
问:Amazon ElastiCache for Redis 如何收费?
请参阅我们的定价页面,了解最新的定价信息。
问:什么是 Amazon ElastiCache for Redis 的节点、集群和复制组?
Amazon ElastiCache for Redis 节点是部署 Amazon ElastiCache for Redis 的最小构建基块。每一个 Amazon ElastiCache for Redis 节点都支持 Redis 协议,并有其自己的 DNS 名称和端口。受支持的 Amazon ElastiCache for Redis 节点有多种类型,各有不同的 CPU 功能和相关内存量。Amazon ElastiCache for Redis 节点承担主节点或只读副本的作用。主节点可以被复制到多个只读副本节点。Amazon ElastiCache for Redis 集群是一个或多个 Amazon ElastiCache for Redis 节点的集合;主节点位于主集群中,只读副本节点位于只读副本集群中。集群管理逻辑密钥空间,其中的每个节点负责一部分的密钥空间。您的大多数管理操作将在集群级别上执行。Amazon ElastiCache for Redis 复制组包含 Redis 安装的主集群和只读副本集群。一个复制组只有一个主集群,只读副本集群可以没有,也可以有多个。复制组(以及随之产生的集群)内所有节点的类型都相同,且其参数和安全组设置也相同。
问:Amazon ElastiCache for Redis 是否支持 Redis 持久性?
Amazon ElastiCache for Redis 不支持 AOF(仅附加文件)功能,但您可以使用备份和恢复功能来给 Redis 数据拍摄快照以实现持久性。请查看此处了解详细信息。
问:如何从 Amazon ElastiCache for Memcached 迁移到 Amazon ElastiCache for Redis,反之又如何操作?
我们目前不支持从 Memcached 自动迁移到 Redis,反之亦然。但是,您可以使用 Memcached 客户端从 Memcached 集群中读取,并使用 Redis 客户端写入 Redis 集群。同样地,您还可以使用 Redis 客户端从 Redis 中读取,并使用 Memcached 客户端写入 Memcached 集群。确保考虑到数据格式的差异和两种引擎之间的集群配置。
问:Amazon ElastiCache for Redis 是否支持多可用区运行?
是的,通过 Amazon ElastiCache for Redis,您可以在另一个 AWS 可用区中创建一个只读副本。当一个节点出现故障时,我们将预置一个新节点。在主节点失败的情况下,ElastCache for Redis 会自动将一个现有的只读副本提升到主角色。有关如何处理节点故障的更多详细信息,请参阅此处。
问:Amazon ElastiCache for Redis 针对节点故障提供了哪些选项?
Amazon ElastiCache for Redis 将通过请求新的服务资源来修复节点,然后将节点的现有 DNS 名称重定向,使其指向新的服务资源。因此,Redis 节点的 DNS 名称将保持不变,但 Redis 节点的 IP 地址可能会随着时间的推移而改变。如果您的复制组有一个或多个只读副本,并且已经启用了多可用区,那么在主节点发生故障时,Amazon ElastiCache 将自动检测故障、选择副本并将其提升为新的主节点。它还会传播 DNS,让您可以继续使用主端点,并在提升后指向新提升的主节点。有关更多详细信息,请参阅此常见问题的多可用区部分。
在禁用多可用区的情况下选择 Redis 复制选项时,如果主节点发生故障,您可以选择进行失效转移,以转移到一个只读副本节点。故障转移目标可以在同一个可用区中,也可以在另一个可用区中。要故障恢复到原可用区,请将原可用区中的只读副本提升为主节点。您可以设计应用程序的架构,让 Redis 客户端库重新连接到修复后 Redis 服务器节点。某些 Redis 库会在遇到通信错误或超时时无限期停止使用服务器,因此这一点很有用。
问:失效转移的工作原理是什么?
在禁用集群模式的情况下部署 ElastiCache for Redis 时,对于启用了多可用区的复制组,失效转移行为在此常见问题的多可用区部分中进行了描述。如果您选择不启用多可用区,那么在 Amazon ElastiCache 监测到主节点并且该节点不可用或无响应时,Amazon ElastiCache for Redis 将通过获取新服务资源来修复节点,然后将节点的现有 DNS 名称重定向,使其指向新的服务资源。因此,Redis 节点的 DNS 名称将保持不变,但 Redis 节点的 IP 地址可能会随着时间的推移而改变。但是,如果主节点无法修复(并且禁用了多可用区),您可以选择将其中一个只读副本提升为新的主节点。请参阅此处了解如何选择新的主节点。主节点的端点 DNS 记录将会更新,以指向提升后的只读副本节点。然后,系统会在原主节点的可用区中创建一个只读副本节点,用作复制组中的只读副本,并成为新主节点的从节点。
在启用集群模式的情况下部署 ElastiCache for Redis 时,将缓存键空间分布在多个分区上。这意味着,您的数据和对该数据的读取/写入访问分布在多个可用区间的多个 Redis 节点中(启用集群模式时需要)。主节点角色将自动故障转移到只读副本之一。不需要创建和预置新的主节点,因为 ElastiCache 将透明地处理此情况。这种失效转移和副本提升确保您可以在提升完成后立即恢复对新主节点的写入。
问:主节点故障期间,我的只读副本是否可用?
可以,主节点故障期间,只读副本可以继续响应各种请求。通过修复主节点或提升只读副本的方式恢复主节点后,只读副本会短时间内无法响应任何请求,因为它们要同步主节点中的缓存信息。
问:如何配置我的 Amazon ElastiCache for Redis 节点的参数?
您可以使用缓存参数组配置您的 Redis,而 Redis 集群必须指定缓存参数组。所有的只读副本集群都使用其主集群的参数组。Redis 参数组充当 Redis 配置值的“容器”,而这些值可以应用于一个或多个 Redis 主集群。如果您在创建 Redis 主集群时未指定缓存参数组,则系统将使用默认参数组。此默认组包含您计划运行的节点类型的默认值。不过,如果您希望 Redis 主集群以指定的配置值运行,您可以轻松地创建一个新缓存参数组,修改所需的参数并修改 Redis 主集群以使用新参数组。
问:是否可以通过 Amazon ElastiCache 控制台访问 Redis?
可以,Redis 在 Amazon ElastiCache 控制台中显示为引擎选项。您可以通过选择 Redis 引擎,用启动向导创建新的 Redis 缓存集群。您还可以使用 Amazon ElastiCache 控制台修改或删除现有的 Redis 集群。
问:是否可以在 Amazon VPC 中创建 Amazon ElastiCache for Redis 集群?
可以。如果您的账户为默认情况下的 VPC,则将在与您的账户相关的默认 VPC 内创建您的 Redis 集群。借助 Amazon ElastiCache 控制台,您可以在创建集群时指定一个不同的 VPC。
问:如何保护我的 Redis 集群安全?
Amazon ElastiCache for Redis 支持两种保护 Redis 集群安全的方法。您可以在 Redis AUTH 或托管的基于角色的访问控制(RBAC)之间选择,它们都是选择加入的功能,并且需要启用传输中加密。Redis AUTH 可使您添加密码来保护对 Redis 集群的访问,并在 3.2.6 以后的版本中受支持。从 Redis 6 开始,RBAC 功能可使您创建和管理用户和用户组,以保护您的 Redis 集群安全。您可以将用户分配到与特定角色(如管理员、人力资源、分析等)一致的用户组,然后部署到一个或多个 Amazon ElastiCache for Redis 复制组。通过执行此操作,您可以在使用相同 Redis 复制组的用户之间建立安全边界,防止客户端访问彼此的数据。点击这些链接以了解有关 Redis Auth 和 RBAC 的更多信息。
问:如何升级至更新的引擎版本?
使用 ModifyCacheCluster 或 ModifyReplicationGroup API 并为 EngineVersion 参数指定首选引擎版本,即可轻松升级至更新的引擎版本。在 Amazon ElastiCache 控制台上,您可以选择一个缓存集群或复制组,然后单击“修改”。在“修改缓存集群”或“修改复制组”窗口中,从可用选项中选择首选引擎版本。引擎升级流程旨在尽最大努力保留您的现有数据,并且需要 Redis 复制才能成功。有关更多详细信息,请参阅此处。
问:能否降级至较低的引擎版本?
不。不支持降级至较低的引擎版本。
问:如何扩展至较大的节点类型或扩展到更多的节点?
在 Amazon ElastiCache for Redis 中,您可以在集群模式禁用的情况下轻松扩展到较大的实例类型,在使用集群模式启用的情况下, 扩展到更多实例。
使用 ModifyCacheCluster 或 ModifyReplicationGroup API 并针对 CacheNodeType 参数指定首选节点类型,即可轻松扩展至较大的节点类型。在 Amazon ElastiCache 控制台上,您可以选择一个缓存集群或复制组,然后单击“修改”。在“修改缓存集群”或“修改复制组”窗口中,从可用选项中选择首选节点类型。扩展流程旨在尽最大努力保留您的现有数据,并且需要 Redis 复制才能成功。有关更多详细信息,请参阅此处。
集群模式可使您通过添加或删除分区水平扩展,而不是垂直扩展单个节点。从概念上讲,水平扩展集群在服务器端很容易理解——只需要添加或删除一个分区。每个分区都有一个主节点,最多有五个只读副本节点。当新节点准备好后,集群将需要在配置的节点间重新分配或平衡键空间。使用 ElastiCache for Redis 时,可以自动进行重新平衡。
问:我能否拥有 Amazon ElastiCache for Redis 跨区域副本?
能,您可以使用 Amazon ElastiCache for Redis 中的全球数据存储功能创建跨区域副本。Global Datastore 提供快速、可靠、安全的完全托管式跨区域复制。借助该功能,您可以在一个区域中写入 Amazon ElastiCache for Redis 集群,同时还可以从其他最多两个跨区域副本集群中读取数据,从而实现跨区域的低延迟读取和灾难恢复。
性能
问:ElastiCache 性能与开源 Redis 相比如何?
Amazon ElastiCache for Redis 增添了动态网络处理以增强 Redis 版本 5.0.3 及以上版本中的 I/O 处理。通过利用具有四个或更多 vCPU 的节点中可用的额外 CPU 处理能力,ElastiCache 透明地将每个节点的吞吐量提高了 83%,延迟降低了 47%。有关更多信息,请参阅此处。在 ElastiCache for Redis 7 及更高版本中,我们引入了增强型 I/O 多路复用,从而进一步大规模改善了吞吐量和延迟。增强型 I/O 多路复用非常适合具有多个客户端连接的吞吐量受限工作负载,其优势会随工作负载并发级别扩展。例如,当使用 r6g.xlarge 节点并运行 5200 个并发客户端时,与 ElastiCache for Redis 6 相比,吞吐量(每秒读取和写入操作数)可增加高达 72%,P99 延迟可减少高达 71%。对于这些类型的工作负载,节点的网络 I/O 处理可能成为扩展能力的限制因素。使用 ElastiCache for Redis 时,每个专用网络 I/O 线程会将来自多个客户端的命令传输到 Redis 引擎,从而利用 Redis 高效批量处理命令的能力。有关更多信息,请参阅博客和文档。
问:如何监控 Redis 的 CPU 利用率?
Amazon ElastiCache 提供了两个指标来衡量 Amazon ElastiCache for Redis 工作负载的 CPU 利用率:EngineCPUUtilization 和 CPUUtilization。CPUUtilization 指标用于衡量实例(节点)的 CPU 利用率,EngineCPUUtilization 指标用于衡量 Redis 进程级别的利用率。除了 CPUUtilization 指标,您还需要 EngineCPUUtilization 指标,因为主 Redis 进程是单线程,只使用实例上可用的多个 CPU 内核中的一个 CPU。因此,CPUUtilization 指标不能准确反映 Redis 进程级别的 CPU 利用率。我们建议您同时使用 CPUUtilization 和 EngineCPUUtilization 指标,以详细了解 Redis 集群的 CPU 利用率。这两个指标现已面向所有 AWS 区域开放,您可以使用 CloudWatch 或者通过 AWS 管理控制台访问。此外,我们还建议您访问此页面以了解用于性能监控的有用指标。
问:如何优化 Redis 客户端性能?
Redis 是最热门的 NoSQL 键值存储之一,以其出色的性能而闻名。为了优化 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 管理控制台中的“Create”(创建)向导并选择“Multi-AZ Replication”(多可用区复制),在几分钟内即可创建一个新的缓存集群及其只读副本。创建集群时,请指定标识符、集群内所需分区的总数量、每个分区的只读副本数量以及创建参数,如节点类型、引擎版本等。您还可以为该集群中的每个分区指定可用区。
您可以像连接主缓存节点一样,使用 DescribeCacheClusters API 或 AWS 管理控制台通过检索只读副本的端点连接到只读副本。如果有多个只读副本,各个副本之间的读取流量分发方式则取决于应用程序。以下是更多详细信息:
- Redis (已禁用群集模式) 群集,使用单个节点终端节点进行读取操作 (在 API/CLI 中,它们称为读取终端节点)。
- Redis (已禁用群集模式) 群集,使用群集的配置终端节点进行所有操作。您必须使用支持 Redis 群集的客户端 (Redis 3.2)。您仍然可以从单个节点终端节点读取(在 API/CLI 中,它们称为读取端点)。
问:我可以为指定主节点创建多少个只读副本?
Amazon ElastiCache 目前允许您为给定的主缓存节点最多创建五(5)个只读副本。
问:如果发生失效转移,只读副本会怎么样?
如果发生失效转移,所有关联和可用的只读副本在失效转移完成后将自动恢复复制(获取最新提升的只读副本的更新)。
问:是否可以为其他只读副本创建只读副本?
不支持为其他只读副本创建只读副本。
问:是否可以将我的只读副本提升为“独立”主节点?
不可以,不支持此操作。但是,您可以为您的 Amazon ElastiCache for Redis 节点创建快照(可以选择主节点或任何只读副本)。然后,您可使用快照生成新的 Amazon ElastiCache for Redis 主节点。
主缓存节点的更新会自动复制到所有关联的只读副本。不过,鉴于 Redis 的异步复制技术,出于各种原因,只读副本更新可能会落后于其主缓存节点。常见的原因包括:
- 主缓存节点的 I/O 写入量超过了将更改应用于只读副本的速率
- 主缓存节点和只读副本之间有网络分区或延迟
只读副本受 Redis 复制的优点和缺点影响。如果使用只读副本,您应了解只读副本与其主缓存节点之间可能存在滞后或“不一致”。 Amazon ElastiCache 会发出指标以帮助您了解不一致性。
问:如何查看有效的只读副本?
您可以使用标准的 DescribeCacheClusters API 返回已部署的所有缓存集群列表(包括只读副本),或者直接单击 Amazon ElastiCache 管理控制台的“缓存集群”选项卡进行查看。
Amazon ElastiCache 监控您的只读副本的复制状态,并在因任何原因停止复制时将“副本状态”字段更新为“错误”。您可以通过查看 Replication Error(复制错误)字段来查看 Redis 引擎产生的相关错误的详细信息,然后进行适当操作以从中恢复。您可以在 Amazon ElastiCache 用户指南的“排除只读副本问题”部分了解有关排除复制问题的更多信息。如果复制错误得到修复,“副本状态”将更改为“正在复制”。
Amazon ElastiCache 允许您利用 AWS 管理控制台或 Amazon CloudWatch API 通过 Amazon CloudWatch 指标(“副本滞后”)查看只读副本滞后于其主节点的程度。
问:我的只读副本已远远落后于其主节点。我应该怎么办?
如前述问题中所述,使用 Redis 异步复制时,只读副本与其主缓存节点之间的“不一致”或滞后非常常见。如果现有只读副本已远远落后,不能满足您的要求,您可以重启该副本。请注意,副本滞后可能会随时间推移而加剧或减缓,具体取决于主节点的稳定状态使用模式。
问:如何删除只读副本? 主节点删除后,它是否会自动随之删除?
您在 AWS 管理控制台中单击几下鼠标或者使用 DeleteCacheCluster 或 DecreaseReplicaCount API,即可轻松地删除只读副本。如果除了主缓存节点之外您还想删除只读副本,您必须使用 DeleteReplicationGroup API 或 AWS 管理控制台。
问:只读副本的费用如何? 如何计算记账周期?
只读副本按标准的缓存节点进行计费,且费率相同。和标准的缓存节点一样,只读副本的每“缓存节点小时”费率取决于只读副本的缓存节点类 – 有关最新的定价信息,请参阅 Amazon ElastiCache 详细信息页面。在主缓存节点和只读副本之间复制数据,产生的数据传输不收取费用。只读副本的账单周期从成功创建只读副本后开始(即当列出的状态为“有效”时)。只读副本将一直按标准的 Amazon ElastiCache 缓存节点小时费用计费,直到您发布命令将其删除为止。
问:执行失效转移时会发生什么状况?这种情况会持续多长时间?
Amazon ElastiCache 支持启动失效转移,这样您可以尽快恢复缓存操作。失效转移后,Amazon ElastiCache 会让缓存节点的 DNS 记录指向只读副本,只读副本转而成为新的主节点。我们建议您遵循最佳实践,在应用程序层实施缓存节点连接重试。通常,以下从开始到结束的第 1 到第 5 步在 6 分钟内完成。
这些是自动失效转移事件,按发生的顺序列出:
- 复制组消息:为节点组 <node-group-id> 调用测试失效转移 API
- 缓存集群消息:从主节点 <primary-node-id> 失效转移到副本节点 <node-id> 已完成
- 复制组消息:从主节点 <primary-node-id> 失效转移到副本节点 <node-id> 已完成
- 缓存集群消息:恢复缓存节点 <node-id>
- 缓存集群消息:缓存节点 <node-id> 的恢复已完成
问:是否可以在另一个区域创建只读副本作为主节点?
不可以,您只可以在相同区域的同一可用区或不同可用区内预置只读副本作为您的主缓存节点。
然而,您可以使用适用于 Redis 的 Global Datastore 在 AWS 区域间进行快速、可靠、安全的完全托管型复制。使用此功能,您可以为 ElastiCache for Redis 创建跨区域只读副本集群,以实现跨 AWS 区域的低延迟读取和灾难恢复。
问:是否可以查看我的主节点当前位于哪个可用区?
可以,您可以使用 AWS 管理控制台或 DescribeCacheClusters API 查看当前主节点的位置。
失效转移后,我的主节点位于与其他 AWS 资源(如 EC2 实例)不同的可用区中。
问:是否会产生延迟问题?
可用区与同一区域内的其他可用区之间可以实现低延迟网络连接。此外,您在设计应用程序及其他 AWS 资源的架构时可以跨多个可用区设置冗余,以便应用程序在出现可用区故障时能够灵活反应。
问题:我能从 Redis 集群环境中添加和删除只读副本节点吗?
可以。您可以在 Redis 集群环境中添加和删除一个或多个分区中的副本。在此操作期间,该集群仍然保持在线,并为传入 I/O 提供支持。
多可用区
问:Amazon ElastiCache for Redis 复制组的多可用区是什么?
Amazon ElastiCache for Redis 复制组由一个主节点和最多五个只读副本组成。如果启用了多可用区,则每个主节点至少需要一个副本。请参阅自动故障转移。Redis 将数据从主节点异步复制到只读副本中。在特定类型的计划维护期间,或 Amazon ElastiCache 节点故障或可用区故障(不太可能发生)期间,Amazon ElastiCache 将自动检测主节点故障、选择一个只读副本并将其提升为新的主节点。Amazon ElastiCache 还会传播所提升只读副本的 DNS 更改,因此,如果您的应用程序正在写入主节点的端点,则不需要更改端点。
问:使用多可用区有哪些好处以及我该在什么时候使用它?
在多可用区模式下运行 Amazon ElastiCache for Redis 的主要好处在于,提高了可用性并降低了管理需要。如果 Amazon ElastiCache for Redis 主节点发生故障,那么您读取/写入主节点的能力受到的影响也仅限于完成自动失效转移所需要的时间。启用多可用区后,Amazon ElastiCache 节点会自动进行故障转移,不需要进行管理。您不再需要监控您的 Redis 节点,也不再需要在主节点故障时手动启动恢复。
问:多可用区如何工作?
如果您正在使用 Amazon ElastiCache for Redis 并有一个包含一个主节点以及一个或多个只读副本组的复制组,则可以使用多可用区。如果主节点发生故障,Amazon ElastiCache 将自动检测该故障,然后从可用的只读副本中选择一个副本并将其提升为新的主节点。Amazon ElastiCache 将会传播所提升副本的 DNS 更改,因此您的应用程序可以持续写入终端节点。此外,Amazon ElastiCache 还将启动一个新节点来替代与故障主节点处在同一可用区的已提升只读副本。如果主节点因可用区临时故障而发生故障,那么该可用区恢复之后,新的副本即会启动。
问:我能否将同一可用区中的副本设为主节点?
可以。请注意,如果将主节点和副本放在同一可用区中,Amazon ElastiCache for Redis 复制组就无法灵活响应可用区的故障。此外,如果多可用区开启,则不允许此操作。
如果发生以下任何情况,Amazon ElastiCache 将会失效转移到只读副本:
- 主节点可用区的可用性受损
- 主节点的网络连接受损
- 主节点的计算单位出现故障
问:应该在何时使用多可用区?
将 Redis 复制与多可用区配合使用可以提高可用性和容错能力。如此部署非常适合在生产环境中使用。
问:我如何在启用多可用区的情况下创建 Amazon ElastiCache for Redis 复制组?
您可以在 Amazon ElastiCache 管理控制台中单击 Launch Cache Cluster(启动缓存集群),从而创建 Amazon ElastiCache for Redis 主节点和只读副本。您还可以通过调用 CreateReplicationGroup API 来执行此操作。对于现有的复制组(Redis 2.8.24、2.8.23、2.8.22、2.8.21、2.8.19 和 2.8.6),您可以通过选择复制组并单击 Amazon ElastiCache 管理控制台中的 Modify(修改)按钮或使用 ModifyReplicationGroup API 来启用多可用区。将复制组切换到多可用区不会破坏您的 Redis 数据,也不会干扰您的节点响应请求的能力。
问:主节点发生故障时,系统会提升哪个只读副本?
如果只读副本不止一个,系统将提升向主节点进行异步复制时延迟最小的只读副本。
问:多可用区如何收费?
多可用区可以免费使用。您只需为自己使用的 Amazon ElastiCache 节点付费。
问:多可用区对性能有什么影响?
Amazon ElastiCache 目前使用 Redis 引擎的原生异步复制,因此受其优点和缺点的影响。特别要注意的是,在只读副本首次连接主节点或主节点发生更改时,只读副本会从主节点中完整同步数据,从而对其自身和主节点施加负担。有关 Redis 复制的更多详细信息,请查看此处。
问:哪些节点类型支持多可用区?
Amazon ElastiCache 中的所有可用缓存节点类型(T1 系列除外)都支持多可用区。
问:执行自动失效转移时,我是否会收到提醒?
是的,Amazon ElastiCache 将创建一个事件,用于通知您已执行自动失效转移。您可以使用 DescribeEvents API 来返回与 Amazon ElastiCache 节点相关的事件信息,也可以单击 Amazon ElastiCache 管理控制台的 Events(事件)部分。
问:失效转移后,我的主节点位于与其他 AWS 资源(如 EC2 实例)不同的可用区中。是否会产生延迟问题?
可用区与同一区域内的其他可用区之间可以实现低延迟网络连接。您在设计应用程序及其他 AWS 资源的架构时可以跨多个可用区设置冗余,以便应用程序在出现可用区故障时能够灵活反应。
问:可以在哪里获得关于多可用区的更多信息?
有关多可用区的更多信息,请参阅 Amazon ElastiCache 文档。
备份与还原
问:什么是备份与还原?
“备份与还原”是一项功能,让客户能够为其 Amazon ElastiCache for Redis 集群创建快照。Amazon ElastiCache 会存储这些快照,以便用户以后用来恢复 Redis 集群。
问:什么是快照?
快照是您的整个 Redis 集群在特定时刻的副本。
问:为什么需要快照?
对于因节点故障以及不太可能出现的硬件故障造成的数据丢失,创建快照非常有用。使用备份的另一个常见原因是用于存档。快照存储在 Amazon S3 中,这是一种持久存储服务,意味着即使发生电源故障,您的数据也不会被擦除。
问:快照有什么作用?
您可以使用快照通过预加载数据来热启动 Amazon ElastiCache for Redis 集群。
问:“备份与还原”的工作原理是什么?
发起备份后,Amazon ElastiCache 会拍摄指定 Redis 集群的快照,而快照可以在以后用于恢复或存档。您可以随时启动备份,也可以设置为每日定期备份,其保留期可长达 35 天。
当您选择一个快照进行还原时,系统会创建一个新的 Amazon Amazon for Redis 集群并填充快照中的数据。您可以通过这种方式利用指定快照创建多个 ElastiCache for Redis 集群。
问:我的快照存储在哪里?
快照存储在 S3 中。
问:如何开始使用“备份与还原”功能?
您可以通过 AWS 管理控制台、Amazon ElastiCache API(CreateCacheCluster、ModifyCacheCluster、CreateReplicationGroup 和 ModifyReplicationGroup API)以及 CLI 来使用“备份与还原”功能。您可以随时停用和重新激活该功能。
问:如何指定要备份的 Redis 集群和节点?
“备份与还原”功能以集群为单位创建快照。用户可以通过 AWS 管理控制台、CLI 或 CreateSnapshot API 指定要备份的基于 Redis 的 ElastiCache 集群。在复制组中,您可以选择备份主集群或任何只读副本集群。我们建议用户对一个只读副本启用备份,以降低对 Redis 主集群的延迟影响。
问:如何指定开始备份的时间?
您可以通过 AWS 管理控制台、CLI 或 API 指定开始单次备份或重复备份的时间。用户能够:
立即创建快照(通过“Redis”选项卡上的“备份”控制台按钮,或使用 CreateSnapshot API)设置自动每日备份。备份将在您首选的备份时段内开始执行。您可以通过控制台中的“创建/修改”集群或者通过 CreateCacheCluster、ModifyCacheCluster 或 ModifyReplicationGroup API 来进行设置。问:什么是备份时段?为什么需要使用备份时段?
首选备份时段是用户定义的一个时间段,Amazon ElastiCache for Redis 集群会该时段内开始备份。如果您想要在每日特定时间备份或避免在使用率非常高的时间段内备份,备份时段将非常有用。
问:拍摄快照对性能有什么影响?
拍摄快照时,节点的延迟可能会在短时间内增加。快照使用 Redis 内置的 BGSAVE 命令,因此受其优点和缺点的影响。特别需要注意的是,Redis 进程会分叉,之后父进程会继续响应请求,而子进程会将数据存储在磁盘上然后退出。快照生成期间,分叉会增加内存使用率。当这一内存使用量超过缓存节点可用内存容量时,可能会触发交换,进一步降低节点速度。因此,我们建议对一个只读副本(而非主节点)生成快照。我们还建议设置预留内存参数,以便将交换使用量降至最低。请参阅此处查看更多详情。
问:我可以从 Amazon ElastiCache for Redis 只读副本创建快照吗?
可以。在集群模式被禁用的复制组中,从只读副本创建快照是备份数据并将性能影响降至最低的最佳方式。在集群模式启用的复制组中,您不能选择备份主集群或任何只读副本集群。
问:“备份与还原”功能可以在哪些区域使用?
“备份与还原”功能可以在支持 ElastiCache 服务的所有区域使用。
问:可以将 Amazon ElastiCache for Redis 快照导出到自己的 S3 存储桶中吗?
可以。您可以将 Amazon ElastiCache for Redis 快照导出到您的集群所在区域内的授权 S3 存储桶中。有关导出快照和设置所需权限的更多详细信息,请参阅此处。
问:可以将快照从一个区域复制到另一个区域吗?
可以。您必须首先将快照复制到在同一区域内选择的授权 S3 存储桶中,然后使用 S3 PUT object – Copy API 将其复制到另一个区域内的存储桶中。有关复制 S3 对象的更多详细信息,请参阅此处。
问:我有多个使用 Amazon ElastiCache for Redis 的 AWS 账户。可以使用一个账户的 Amazon ElastiCache 快照来热启动另一个账户中的 Amazon ElastiCache for Redis 集群吗?
可以。您必须首先将快照复制到在同一区域内选择的授权 S3 存储桶中,然后向另一个账户授予跨账户存储桶权限。有关 S3 跨账户权限的更多详细信息,请参阅此处。最后,在创建集群时,通过控制台上的“启动缓存集群向导”或 CreateCacheCluster API 指定 RDB 文件在 S3 中的位置。
问:使用“备份与还原”功能的费用是多少?
Amazon ElastiCache 为每个 Amazon ElastiCache for Redis 活动集群免费提供一个快照的存储空间。额外存储将根据快照占用的空间收取费用,每月 0.085 USD/GB(所有区域的价格相同)。免费提供快照数据传输。
问:什么是保留期?
保留期是指保留自动快照的时间跨度。例如,如果将保留期设置为 5 天,则今天拍摄的快照将会在保留 5 天之后删除。您可以复制一个或多个自动快照并将其存储为手动快照,这样它们在保留期过后也不会被删除。
问:如何管理自动快照的保留?
您可以使用 AWS 管理控制台或 ModifyCreateCluster 或 ModifyReplicationGroup API,通过修改 RetentionPeriod 参数来管理自动备份的保留时间。如果您希望关闭自动备份,则可以通过将保留期设置为 0 来执行这一操作(但我们不建议您这样做)。
问:如果删除 Amazon ElastiCache for Redis 集群,我的快照会怎么样?
当您删除 Amazon ElastiCache for Redis 集群时,您的手动快照将被保留。您还可以选择在删除集群前创建一个最后的快照。自动缓存快照不会被保留。
问:哪些缓存节点类型支持备份与还原功能?
除 t1.micro 外,所有 Amazon ElastiCache for Redis 实例节点类型也都支持备份与还原:
最新一代缓存节点:
cache.m4.large、cache.m4.xlarge、cache.m4.2xlarge、cache.m4.4xlarge、cache.m4.10xlarge、cache.m5.large、cache.m5.xlarge、cache.m5.2xlarge、cache.m5.4xlarge、cache.m5.12xlarge、cache.m5.24xlarge、cache.m6g.large、cache.m6g.xlarge、cache.m6g.2xlarge、cache.m6g.4xlarge、cache.m6g.8xlarge、cache.m6g.12xlarge、cache.m6g.16xlarge、cache.r4.large、cache.r4.xlarge、cache.r4.2xlarge、cache.r4.4xlarge、cache.r4.8xlarge、cache.r4.16xlarge、cache.r5.large、cache.r5.xlarge、cache.r5.2xlarge、cache.r5.4xlarge、cache.r5.12xlarge、cache.r5.24xlarge、cache.r6g.large、cache.r6g.xlarge、cache.r6g.2xlarge、cache.r6g.4xlarge、cache.r6g.8xlarge、cache.r6g.12xlarge、cache.r6g.16xlarge、cache.t2.medium、cache.t2.small、cache.t2.micro、cache.t3.medium、cache.t3.small、cache.t4g.micro、cache.t4g.small、cache.t4g.medium
具有数据分层的最新一代缓存节点:
cache.r6gd.xlarge、cache.r6gd.2xlarge、cache.r6gd.4xlarge、cache.r6gd.8xlarge、cache.r6gd.12xlarge、cache.r6gd.16xlarge
上一代节点:
cache.m1.small、cache.m1.medium、cache.m1.large、cache.m1.xlarge、cache.m2.xlarge、cache.m2.2xlarge、cache.m2.4xlarge、cache.m3.medium、cache.m3.large、cache.m3.xlarge、cache.m3.2xlarge、cache.r3.large、cache.r3.xlarge、cache.r3.2xlarge、cache.r3.4xlarge、cache.r3.8xlarge、cache.c1.xlarge
问:我可以使用自己存储在 S3 中的 RDB 快照来热启动 Amazon ElastiCache for Redis 集群吗?
可以。您可以在创建集群时,使用控制台中的“Create Cluster”(创建集群)向导或 CreateCacheCluster 或 CreateReplicationGroup API 指定 RDB 文件在 S3 中的位置。
问:如果我在 VPC 上运行 Amazon ElastiCache,可以使用“备份与还原”功能吗?
可以。
Redis 集群
问:什么是 ElastiCache for Redis 集群?
利用 ElastiCache for Redis 集群,客户可以使用多个分区创建和运行托管的 Redis 集群。ElastiCache for Redis 集群与开源 Redis 3.2.4 兼容,并具有一系列增强功能,可提供更加稳健的使用体验(有关增强功能的更多详细信息,请参阅下方的“增强型引擎”部分)。
问:为什么需要扩展 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.4 和之后的版本兼容。您可以使用开源 Redis 集群客户端访问 ElastiCache for Redis 上的扩展集群。
问:如何从当前的 ElastiCache for Redis 2.8.x 升级到 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 集群的多可用区与 2.8.x 版 ElastiCache for Redis 的多可用区有何不同?
Redis 3.x 及其以后的版本使用智能客户端,该客户端存储了节点映射,其中包含所有集群节点的端点。在失效转移期间,该客户端将使用新主节点的 IP 端点来更新节点映射。与 ElastiCache for Redis 2.8.x 相比,其失效转移速度提高了 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)
- 设置自动每日备份。备份将在您首选的备份时段内开始执行。您可以通过控制台中的“创建/修改”集群或者通过 CreateCacheCluster、ModifyCacheCluster、CreateReplicationGroup 或 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 完全兼容,因此,您无需对应用程序代码作出任何更改,即可享受其改进的稳定性和强大功能。
问:使用增强型引擎的费用是多少?
使用增强型引擎,不会额外收取任何费用。与以往一样,您只需为使用的节点付费。
在线集群规模调整
问:什么是在线集群规模调整?
Amazon ElastiCache for Redis 可以在正在运行的已启用集群模式的 Redis 集群中添加和删除分区。您可以动态扩展或缩减 Redis 集群工作负载,以便适应需求变化。Amazon ElastiCache 将通过添加或删除分区以及跨新分区配置均匀地重新分布哈希插槽来调整集群的规模,与此同时,集群仍然保持在线,并为请求提供服务。
问:使用“在线集群规模调整”有哪些优势?
动态扩展或缩减集群可以帮助您应对应用程序的变化,并满足不断变化的需求。您可以通过添加或删除分区来调整集群的规模,从而扩展性能和内存容量。这一功能让您无需按照峰值需求超额配置集群,有助于提高效率并降低成本。
问:如何使用在线集群规模调整?
在线集群规模调整适用于版本 3.2.10 或更高版本上启用了集群模式的 Redis 集群。要对集群重新分区,请选择该集群,并指定您是要添加还是要删除分区。当您扩大集群规模时,Amazon ElastiCache 会添加分区并将插槽从现有分区迁移到新分区,使插槽按数量均匀分布到所有分区中。同样,在缩小集群规模时,Amazon ElastiCache 会将槽迁移到剩余分区,以便让槽均匀分布并删除指定的分区。
问:在线集群规模调整需要多长时间?
调整集群规模所需的时间取决于多种因素,例如需要跨分区迁移的槽数量、数据规模和集群上的传入请求速率。此工作流程进行了优化,可并行化插槽迁移,以便更快地进行横向扩展。
问:可在调整集群规模的同时使用该集群吗?
可以,在重新分区时,该集群仍然保持在线,并为传入请求提供支持。然而,正在进行重新分区时,不支持拍摄集群快照。
问:此操作会对集群的性能产生影响吗?
虽然“在线集群规模调整”提供了零停机扩展/缩减的优势,但它是一项计算密集型操作,可能会增加客户端连接的延迟。为了在操作期间减少集群上的负载,我们建议您遵循最佳实践(如文档中所述)。
问:如何跟踪在线重新分区操作的进度?
您可以通过查看集群、分区和节点的状态来追踪重新分区的进度。在该操作期间,集群、分区和节点将处于“正在修改”状态。同样,在分区创建、删除或参与插槽迁移时,单个分区的状态将反映这些状态以显示进度。此外,还可以使用重新分区操作的进度指示器来跟踪端到端操作的状态,该指示器可指示已完成的百分比,并提供有关该操作剩余时间的信息。最后,在此操作期间,事件消息通过描述所采取的操作(分区创建、插槽迁移等)提供进度信息。
问:Amazon ElastiCache for Redis 集群的重新平衡操作是什么?
重新平衡操作可用于在现有分区内重新分配槽,以实现均匀分布。当创建的集群中的槽是手动指定并且分布不均匀时,或者扩展/缩减操作导致集群分布不均匀时,重新平衡操作非常有用。假设各个槽具有相同的内存和 I/O 要求,按数量均匀分布槽是在不同分区中实现负载均衡的简单方法。
问:在扩展集群时,标记如何发挥作用?
在添加新节点以扩展集群时,节点会带有一组相同的标签,这些标签在所有现有节点中通用。此外,用户也可以修改所有节点上的标签,然后像以前一样继续使用标记功能。
问:要使用在线集群规模调整功能,需要对客户端或应用程序进行任何更改吗?
不需要。在集群规模调整中使用的增强型槽分布方式与 Redis 集群客户端行为一致,不需要对应用程序进行任何更改。Amazon ElastiCache 会保留集群端点,让您可以继续使用现有客户端,无需进行任何更改。
加密
问:Amazon ElastiCache for Redis 的静态数据加密有哪些作用?
静态加密提供了防止未经授权访问服务器上的数据的机制。在复制组上启用时,它将加密以下方面:
- 同步、备份和交换操作期间的磁盘
- 存储在 Amazon S3 中的备份
借助传输中数据加密功能,您可以对客户端与 Redis 服务器之间以及 Redis 服务器(主节点和只读副本节点)间的通信数据进行加密。它是一个可选功能,只有在创建时才能在 Redis 复制组上启用。您可以在 此处了解更多信息。
问:如何使用传输中数据加密、静态数据加密和 Redis AUTH?
传输中数据加密、静态数据加密以及 Redis AUTH 和托管的基于角色的访问控制(RBAC)均为可选功能。通过控制台或命令行界面创建 Redis 集群时,您可以指定您是否想要启用静态和/或传输中加密。如果您启用了传输中加密,您可以选择使用 Redis AUTH 或 RBAC 增强安全和访问控制。集群设置完毕并启用加密之后,Amazon ElastiCache 可以无缝管理证书过期和续订,无需您通过应用程序执行任何其他操作。此外,Redis 客户端需要支持 TLS 才能利用加密的传输中数据流量。如果您选择使用 Redis AUTH,您将需要 Redis 3.2.6 以后的版本,同时,RBAC 需要您使用 Redis 6。
问:要使用传输中数据加密或静态数据加密功能,是否需要使用 Amazon ElastiCache for Redis 客户端?
不需要。使用传输中数据加密需要客户端支持 TLS。大部分常用的 Redis 客户端(如 Lettuce、Predis、go-Redis)均可通过配置设置来支持 TLS。您需要确认所选的 Redis 客户端已配置为支持 TLS,然后便可以像之前一样使用 Amazon ElastiCache for Redis。
问:我能否在现有的 Amazon ElastiCache for Redis 集群上启用传输中数据加密和静态数据加密?
否。动态数据加密和静态数据加密仅适用于新集群,在现有的 Amazon ElastiCache for Redis 集群上不受支持。Amazon ElastiCache for Redis 版本 7.0、6.2.5、6.0.5、5.0.0、4.0.10 和 3.2.6 支持这些功能。
问:续订证书是否需要执行任何操作?
不需要。Amazon ElastiCache 会在后台管理证书过期和续订。持续证书维护不需要用户执行任何操作。
问:我能否使用自己的证书进行加密?
不能。Amazon ElastiCache 目前不支持用户使用自己的证书。Amazon ElastiCache 会以透明方式为您管理证书。
问:传输中数据加密和静态数据加密支持哪些实例类型?
传输中数据加密和静态数据加密功能支持最新一代的所有实例。有关传输中加密条件的完整列表,请参阅 此处,有关静态加密条件,请参阅 此处。
问:使用加密功能是否需要支付额外费用?
使用加密功能无需支付额外费用。
合规性
问:Amazon ElastiCache for Redis 支持哪些合规性计划?
Amazon ElastiCache for Redis 支持 SOC 1、SOC 2、SOC 3、ISO、MTCS、C5、PCI、HIPAA 和 FedRAMP 等合规性计划。请参阅按合规性计划提供的范围内 AWS 服务,查看受支持的合规性计划的最新列表。
问:Amazon ElastiCache for Redis 是否符合 PCI 的要求?
符合,AWS PCI 合规性计划已将 Amazon ElastiCache for Redis 作为一项符合 PCI 要求的服务纳入该计划。要了解更多信息,请参阅以下资源:
问:Amazon ElastiCache for Redis 是否符合 HIPAA 的要求?
符合,Amazon ElastiCache for Redis 是一种 符合 HIPAA 要求的服务,并且已被加入 AWS 商业伙伴协议(BAA)。也就是说,您可以借助 Amazon ElastiCache for Redis 来处理、维护和存储受保护的健康信息(PHI)以及为医疗保健应用程序提供支持。
问:如何才能使用符合 HIPAA 要求的 Amazon ElastiCache for Redis?
如果您与 AWS 签订了有效 商业伙伴协议(BAA),便可使用 ElastiCache for Redis 构建符合 HIPAA 要求的应用程序。如果您未签订 BAA,或对将 AWS 用于 HIPAA 合规应用程序有其他疑问,请 联系我们了解详细信息。有关如何配置符合 HIPAA 要求的 Amazon 服务来存储、处理和传输 PHI 的信息,请参阅 Amazon Web Services 上的 HIPAA 安全性与合规性架构设计。
问:Amazon ElastiCache for Redis 是否由 FedRAMP 授权?
AWS FedRAMP 合规性计划已将 Amazon ElastiCache for Redis 作为一项由 FedRAMP 授权的服务纳入。现在,美国政府客户及其合作伙伴可以在 AWS GovCloud(美国)区域使用最新版本的 Amazon ElastiCache for Redis 来处理和存储其 FedRAMP 系统、数据和关键任务型高影响级别的工作负载,还可以在 AWS 美国东部/西部区域处理和存储中等影响级别的此类工作负载。
要了解更多信息,请参阅以下资源:
问:使用合规性功能是否需要支付额外费用?
否,使用合规性功能不会产生任何额外费用。
全球数据存储
问:什么是 Global Datastore for Redis?
Global Datastore 是 Amazon ElastiCache for Redis 中的一项功能,可提供快速、可靠、安全的完全托管式跨区域复制。借助 Global Datastore,您可以在一个区域写入 Amazon ElastiCache for Redis 集群,同时最多可在其他两个跨区域副本集群中读取数据,从而实现跨区域的低延迟读取和灾难恢复。
Global Datastore for Redis 专为业务全球化的实时应用程序而设计,支持跨区域复制(延迟通常不超过 1 秒),通过提供更接近最终用户的地理本地读取来提高应用程序的响应速度。在小概率区域降级的情况下,可以将其中一个运行良好的跨区域副本集群提升为具有完全读/写能力的主集群。启动后,升级通常会在一分钟内完成,使您的应用程序保持可用状态。
问:我可以复制到多少个 AWS 区域?
您可以在 Global Datastore for Redis 中最多复制到两个次要区域。在小概率区域降级的情况下,您可以将次要区域中的集群用于低延迟本地读取和灾难恢复。
问:哪些引擎版本支持 Global Datastore for Redis?
Amazon ElastiCache for Redis 5.0.6 及以后版本支持 Global Datastore。客户可以将引擎版本升级到 5.0.6,并使用 Global Datastore。
问:如何创建 Global Datastore for Redis?
您可以通过使用现有集群或创建一个新集群(用作主集群)来设置 Global Datastore。您只需在 Amazon ElastiCache 管理控制台上单击几次或下载最新的 AWS 开发工具包或 CLI,即可创建 Global Datastore for Redis。AWS CloudFormation 支持 Global Datastore。
问:在主集群(区域)降级的情况下,Amazon ElastiCache 是否会自动为 Global Datastore for Redis 进行失效转移以提升次集群?
否,当主集群(区域)降级时,Amazon ElastiCache 不会自动提升次集群。您可以通过将次集群提升为主集群来手动启动失效转移。次集群的失效转移和升级通常会在一分钟内完成。
问:如果我的主集群遇到服务降级,如何执行应用程序失效转移以进行灾难恢复?
如果您的 Global Datastore for Redis 中的主集群遇到服务降级,可以将次集群分配为新的主集群,然后从 Global Datastore 中删除旧的主集群。当次集群提升为主集群时,Amazon ElastiCache 会将旧的主集群(如果可访问)重新配置为次集群,并设置复制以将所有次要区域与新的主集群同步。如果您已将整个应用程序堆栈复制到另一个 AWS 区域,则可以将整个应用程序堆栈(包括计算资源)故障转移到该 AWS 区域。如果应用程序堆栈的其余部分不需要失效转移,请确保应用程序可以访问次集群端点。
问:使用 Global Datastore for Redis 时,如何确保我的数据安全?
Global Datastore for Redis 对跨区域流量使用传输中加密来确保您的数据安全。此外,您还可以使用静态加密对主集群和次集群进行加密,以确保端到端数据的安全。在 AWS Key Management Service (KMS) 中,每个主集群和次集群都可以有一个单独的客户托管的客户主密钥(CMK),用于静态加密。
问:对于 Global Datastore for Redis,我可以期望什么样的恢复点目标(RPO)和恢复时间目标(RTO)?
Amazon ElastiCache 没有提供适用于 RPO 和 RTO 的 SLA。RPO 根据区域之间的复制滞后情况而有所不同,并且取决于区域之间的网络延迟和跨区域的网络流量拥塞情况。Global Datastore 的 RPO 通常不到一秒,因此写入主区域的数据在一秒钟之内可用于次要区域。Global Datastore for Redis 的 RTO 通常不超过一分钟。一旦启动到次集群的失效转移,Amazon ElastiCache 通常会在一分钟之内将次集群提升为具有完全读/写能力。
问:Global Datastore for Redis 如何定价?
Amazon ElastiCache 对使用 Global Datastore for Redis 不收取任何费用。您需要为 Global Datastore 中的主集群和次集群以及跨区域数据传输流量付费。
数据分层
问:什么是 ElastiCache for Redis 的数据分层?
数据分层为 Redis 工作负载提供了一个新的性价比选项,除了在内存中存储数据外,还可以在每个集群节点中使用成本较低的固态硬盘(SSD)。它非常适合于定期访问 20% 以内总体数据集的工作负载,以及在 SSD 上访问数据时能够容忍额外延迟的应用程序。与仅具有内的 ElastiCache R6g 节点相比,具有内存和固态驱动器的 Amazon ElastiCache R6gd 节点在最大利用率下运行时,总存储容量增加了近 5 倍的,可帮助客户实现超过 60% 的价格节省。
问:ElastiCache for Redis 数据分层的工作原理是什么?
数据分层的工作原理是,在可用内存容量完全消耗时,自动且透明地将最近使用最少的项目从内存移动到本地连接的 NVMe SSD。当随后访问移动到 SSD 的项目时,ElastiCache 会在服务请求之前将其异步移回内存。
问:使用具有数据分层的集群时,我可以期待实现什么性能?
数据分层旨在将对应用程序性能的影响降至最低。假设有 500 字节的字符串值,与对内存中数据的请求相比,对存储在 SSD 上的数据的请求平均会有 300µs 的延迟。
问:哪些引擎版本支持数据分层?
ElastiCache for Redis 的 Redis 版本 6.2 及更高版本支持数据分层。
问:哪些节点类型支持数据分层?
ElastiCache for Redis 在使用 R6gd 节点的 Redis 集群上支持数据分层。
问:使用数据分层的集群支持哪些 ElastiCache 功能?
使用数据分层时支持所有 Redis 命令和大多数 ElastiCache 功能。有关使用数据分层的集群不支持的功能的列表,请参阅文档。
问:ElastiCache for Redis 数据分层的价格是多少?
除了节点的每小时费用以外,使用数据分层没有任何其他费用。具有数据分层的节点可以按需定价和作为预留节点使用。有关定价,请参阅 ElastiCache 定价页面。
Memcached
Memcached 功能 | 配置和扩展 | 兼容性 | Auto Discovery | 引擎版本管理
Memcached 功能
问:Amazon ElastiCache for Memcached 可以用来缓存什么内容?
您可以使用本服务缓存多种对象,从持久性数据存储(例如 Amazon RDS、DynamoDB 或 EC2 上的自管理型数据库)中的内容到动态生成的网页(例如使用 Nginx 生成的网页)均包含在内,还可以缓存可能不需要持久性备份存储的临时会话数据。也可以用它来实施高频计数器,以便在高容量 Web 应用程序中部署允入控制。
问:是否可以将 Amazon ElastiCache for Memcached 与 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 EC2 网络或从您自己的数据中心访问 Amazon VPC 中的 Amazon ElastiCache 集群,请参阅 Amazon VPC 访问模式了解更多详细信息。
Amazon ElastiCache 使用 DNS 条目来允许客户端应用程序定位服务器(节点)。节点的 DNS 名称保持不变,但节点的 IP 地址可能会不时更改。例如,在非 VPC 安装出现故障后,系统会自动更换节点,此时 IP 地址即会更改。有关如何处理节点故障的建议,请参阅此常见问题。
配置和扩展
问:如何为我的应用程序选择合适的节点类型?
虽然此问题没有明确的答案,但使用 Amazon ElastiCache 时,您无需担心节点数量是否恰当,因为日后您可以轻松添加或删除节点。在选择初始配置时,您可以考虑以下两个互为关联的因素:
- 达到目标缓存命中率所需的数据总内存量,以及
- 保持可接受的应用程序性能且不会在节点故障时造成数据库后端过载所需的节点数量。
所需的内存量取决于您的数据集的大小,以及应用程序的访问模式。要提高容错能力,请在大体了解所需的内存总量后,将该内存量分配到足够数量的节点,以便您的应用程序在一两个节点出现故障时依然可以运行。例如,如果您的内存要求为 13 GB,则您可能需要使用两个 cache.m4.large 节点,而不是一个 cache.m4.xlarge 节点。请务必确保在一个或多个节点的故障恢复期间,当缓存命中率暂时降低时,数据库等其他系统不会过载。有关详细信息,请参阅 Amazon ElastiCache 用户指南。
问:一个集群是否可以跨越多个可用区?
可以。创建集群或向现有集群添加节点时,可以为新节点选择可用区。可以在每个可用区中指定请求的节点数量,也可以选择“spread nodes across zones”。如果集群位于 VPC 中,则节点只可以放置在属于所选缓存子网组的可用区中。有关其他详细信息,请参阅 ElastiCache VPC 文档。
问:对于一个区域,我可以在 Amazon ElastiCache Memcached 中运行多少个节点?
您最多可以在每个区域运行 300 个节点。如果需要运行更多节点,请填写 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 客户端库适合众多流行的编程语言。如果您在使用 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
问:什么是 Auto Discovery?它对我有什么帮助?
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 控制台下载适用于 .Net、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 功能,必须使用支持 Auto Discovery 的客户端来连接 Amazon ElastiCache 集群。Amazon ElastiCache 当前支持适用于 .Net 、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 发布版本的频率和内容而异,由工程团队负责版本全面审查的最终结果。
问:Amazon ElastiCache 支持哪个版本的 Memcached 线路协议?
Amazon ElastiCache 支持 Memcached 版本 1.6.17、1.6.12、1.6.6、1.5.16、1.5.10、1.4.34、1.4.33、1.4.24、1.4.14 和 1.4.5 的 Memcached 文本和二进制协议。
问:如何升级到最新版 Memcached?
您可以通过“修改”过程来升级现有 Memcached 集群。从旧版 Memcached 升级到 Memcached 1.4.33 或更高版本时,请确保您的现有参数 max_chunk_size 的值满足 slab_chunk_max 参数需要的条件。请查看此处的升级先决条件。
详细了解 Amazon ElastiCache for Redis 的定价