DAX 集群组件 - Amazon DynamoDB

DAX 集群组件

Amazon DynamoDB Accelerator (DAX) 集群由多个 AWS 基础设施组件组成。本节介绍这些组件及其协作方式。

Nodes

节点是 DAX 集群的最小构建块。每个节点运行一个 DAX 软件实例,并维护一个缓存数据副本。

可以采用以下两种方法扩展 DAX 集群:

  • 将更多节点添加到集群。这会增加集群中的总体读取吞吐量。

  • 使用更大的节点类型。更大的节点类型可提供更多容量并增加吞吐量。(必须使用新节点类型创建新集群。)

一个集群的所有节点都具有相同的节点类型并运行相同 DAX 缓存软件。有关可用节点类型的列表,请参见 Amazon DynamoDB 定价

集群

集群是 DAX 将其作为一个单元来管理的一个或多个节点的逻辑分组。集群的其中一个节点指定为节点,其他节点(如果有)指定为只读副本

主节点负责完成以下工作:

  • 满足缓存数据的应用程序请求。

  • 处理对 DynamoDB 的写入操作。

  • 根据集群的移出策略,从缓存中移出数据。

更改主节点上的缓存数据后,DAX 使用复制日志将这些更改传播到所有只读副本节点。在收到所有只读副本的确认后,DynamoDB 会从主节点中删除复制日志。

只读副本负责完成以下工作:

  • 满足缓存数据的应用程序请求。

  • 根据集群的移出策略,从缓存中移出数据。

但与主节点不同,只读副本不会对 DynamoDB 进行写入。

只读副本有另外两种用途:

  • 可扩展性。如果有大量需要同时访问 DAX 的客户端,可以添加多个副本用于读取扩展。DAX 在集群中所有节点均匀分布负载。(另一种增加吞吐量的方式是使用更大的缓存节点类型。)

  • 高可用性。如果发生主节点故障,DAX 将自动故障转移到一个只读副本并指定该副本作为新的主节点。如果副本节点发生故障,DAX 集群的其他节点仍能够处理请求,直到发生故障的节点恢复为止。为实现最大容错能力,应在单独的可用区中部署只读副本。此配置将确保您的 DAX 集群可以继续正常运行,即使整个可用区变得不可用。

一个 DAX 集群最多可支持每集群 11 个节点(主节点以及最多 10 个只读副本)。

重要

对于生产使用,我们强烈建议使用具有至少三个节点的 DAX,其中每个节点都放置在不同的可用区中。DAX 集群需要三个节点才能容错。

DAX 集群可以部署在一个或两个节点上,用于开发或测试工作负载。单节点和双节点集群不具有容错能力,我们不建议对生产使用少于三个节点。如果单节点或双节点集群遇到软件或硬件错误,则集群会变得不可用或丢失缓存数据。

区域和可用区

一个 AWS 区域的一个 DAX 集群只能与位于同一区域的 DynamoDB 表进行交互。因此,需要确保在正确的区域中启动 DAX 集群。如果其他区域有 DynamoDB 表,则必须在这些区域也启动 DAX 集群。

从设计而言,每个区域都与其他区域完全隔离。每个区域内有多个可用区。在不同的可用区内启动节点,可以实现可能的最大容错。

重要

请勿将集群的所有节点放置在单个可用区内。在此配置下,如果可用区发生故障,DAX 集群将变得不可用。

对于生产使用,我们强烈建议使用具有至少三个节点的 DAX,其中每个节点都放置在不同的可用区中。DAX 集群需要三个节点才能容错。

DAX 集群可以部署在一个或两个节点上,用于开发或测试工作负载。单节点和双节点集群不具有容错能力,我们不建议对生产使用少于三个节点。如果单节点或双节点集群遇到软件或硬件错误,则集群会变得不可用或丢失缓存数据。

参数组

参数组用于管理 DAX 集群的运行时设置。DAX 具有可用于优化性能(如为缓存数据定义 TTL 策略)的多个参数。参数组是一组可以应用于集群的指定参数。这样可以确保该集群中的所有节点都以完全相同的方式进行配置。

安全组

DAX 集群在 Amazon Virtual Private Cloud (Amazon VPC) 环境中运行。此环境是一个专用于 AWS 账户的虚拟网络,并且与其他 VPC 分隔开。安全组充当 VPC 的虚拟防火墙,控制入站和出站网络流量。

在 VPC 中启动集群时,将向安全组添加入口规则以允许传入网络流量。入口规则为集群指定协议 (TCP) 和端口号 (8111)。将此规则添加到安全组后,在 VPC 中运行的应用程序可以访问 DAX 集群。

集群 ARN

将为每个 DAX 集群分配一个 Amazon Resource Name (ARN)。ARN 格式如下所示。

arn:aws:dax:region:accountID:cache/clusterName

在 IAM 策略中使用集群 ARN 定义 DAX API 操作的权限。有关更多信息,请参阅 DAX 访问控制

集群端点

每个 DAX 集群提供一个集群端点供应用程序使用。使用集群端点访问集群,应用程序无需知道集群中各个节点的主机名和端口号。您的应用程序将自动“获知”集群中的所有节点,即使您添加或删除只读副本也是如此。

以下是 us-east-1 区域中未配置为在传输过程中使用加密的集群端点示例。

dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com

以下是同一区域中配置为在传输过程中使用加密的集群端点示例。

daxs://my-encrypted-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com

节点端点

DAX 集群中的每个节点均有自己的主机名和路径点号。以下是节点端点的示例。

myDAXcluster-a.2cmrwl.clustercfg.dax.use1.cache.amazonaws.com:8111

应用程序可以使用端点直接访问节点。不过,建议您将 DAX 集群视为一个单元,通过集群端点访问。集群端点使应用程序无需维护节点列表,在集群中添加或删除节点时保持列表最新。

子网组

对 DAX 集群节点的访问限制为在 Amazon VPC 环境内的 Amazon EC2 实例上运行的应用程序。可以使用子网组授予从在特定子网上运行的 Amazon EC2 实例进行集群访问的权限。子网组是您可为在 Amazon VPC 环境中运行的集群指定的子网(通常为私有子网)集合。

创建 DAX 集群时,必须指定一个子网组。DAX 使用该子网组选择与节点关联的子网和子网中的 IP 地址。

事件

DAX 记录集群内的重大事件,如添加节点失败、添加节点成功或更改安全组。通过监控关键事件,可以了解集群的当前状态,并且能够根据事件采取相应的纠正措施。可以使用 DAX 管理 API 的 AWS Management Console 或 DescribeEvents 操作访问这些事件。

也可以请求将通知发送到特定 Amazon Simple Notification Service (Amazon SNS) 主题。DAX 集群发生事件时将立即收到通知。

维护时段

每个集群都有一个每周维护时段,在此期间会应用任何系统更改。按顺序应用更改时,会替换现有节点,并将具有已应用更改的新节点添加到集群中。在此期间,您的应用程序可能会出现瞬时错误或节流。因此,建议您将维护时段安排在使用率最低的时间内,并根据需要定期调整此时间表。您可以指定多达 24 小时持续时间的时间范围,您请求的任何维护活动均应在此期间进行。

如果创建或修改缓存集群时未指定首选维护时段,DAX 将在随机选择的某个工作日分配 60 分钟的维护时段。此 60 分钟的维护时段是从每个 AWS 区域的 8 小时时间段中随机选择出来的。下表列出分配了默认维护窗口的各个地区的时间段。

区域代码 区域名称 维护时段
ap-northeast-1 亚太(东京)区域 13:00–21:00 UTC
ap-southeast-1 亚太(新加坡)区域 14:00–22:00 UTC
ap-southeast-2 亚太(悉尼)区域 12:00–20:00 UTC
ap-south-1 亚太(孟买)区域 17:30–1:30 UTC
cn-northwest-1 中国(宁夏)区域 23:00–07:00 UTC
cn-north-1 中国(北京)区域 14:00–22:00 UTC
eu-central-1 欧洲地区(法兰克福)区域 23:00–07:00 UTC
eu-north-1 欧洲地区(斯德哥尔摩)区域 01:00–09:00 UTC
eu-south-2 欧洲地区(西班牙)区域 21:00–05:00 UTC
eu-west-1 欧洲(爱尔兰)区域 22:00–06:00 UTC
eu-west-2 欧洲地区(伦敦)区域 23:00–07:00 UTC
eu-west-3 欧洲地区(巴黎)区域 23:00–07:00 UTC
sa-east-1 南美洲(圣保罗)区域 01:00–09:00 UTC
us-east-1 美国东部(弗吉尼亚北部)区域 03:00–11:00 UTC
us-east-2 美国东部(俄亥俄州)区域 23:00–07:00 UTC
us-west-1 美国西部(加利福尼亚北部)区域 06:00–14:00 UTC
us-west-2 美国西部(俄勒冈)区域 06:00–14:00 UTC