管理 DAX 集群 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理 DAX 集群

本节介绍 Amazon DynamoDB Accelerator (DAX) 集群的一些常见管理任务。

用于管理 DAX 集群的 IAM 权限

在使用 Amazon Web Services Management Console或 Amazon Command Line Interface (Amazon CLI) 管理 DAX 集群时,强烈建议缩小用户可执行的操作范围。这样可以帮助在遵循最低权限准则的同时降低风险。

以下讨论侧重于 DAX 管理 API 的访问控制。有关更多信息,请参阅《Amazon DynamoDB API 参考》中的 Amazon DynamoDB Accelerator

注意

有关管理 Amazon Identity and Access Management (IAM) 权限的更多详细信息,请参见以下内容:

对于 DAX 管理 API,无法将 API 操作的范围限定为特定资源。Resource 元素必须设置为 "*"。这与 GetItemQueryScan 等 DAX 数据层面 API 操作不同。数据层面操作通过 DAX 客户端公开,此类操作的范围可以限定为特定资源。

为了说明这种情况,请考虑以下 IAM policy 文档。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }

假设此策略的目的是允许对集群 DAXCluster01 进行 DAX 管理 API 调用— 并且只有该集群。

现在假定用户发出以下 Amazon CLI 命令。

aws dax describe-clusters

此命令失败,显示未授权异常,因为基础 DescribeClusters API 调用的范围不能限定为特定集群。即使策略在语法上有效,此命令也将失败,因为 Resource 元素必须设置为 "*"。但是,如果用户运行程序将 DAX 数据层面调用(如 GetItemQuery)发送到 DAXCluster01,则这些调用成功。这是因为 DAX 数据层面 API 的范围可限定为特定资源(在本示例中为 DAXCluster01)。

如果要编写一个全面的 IAM policy 包含 DAX 管理 API 和 DAX 数据层面 API,建议在策略文档中包含两个不同的语句。一个语句用于 DAX 数据层面 API,另一个语句用于 DAX 管理 API。

下面示例策略说明此方法。注意将 DAXDataAPIs 语句的范围限定为 DAXCluster01 资源的方式,而 DAXManagementAPIs 的资源必须为 "*"。各个语句中显示的操作仅用于说明目的。可以根据需要自定义应用程序。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXDataAPIs", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ]}, { "Sid": "DAXManagementAPIs", "Action": [ "dax:CreateParameterGroup", "dax:CreateSubnetGroup", "dax:DecreaseReplicationFactor", "dax:DeleteCluster", "dax:DeleteParameterGroup", "dax:DeleteSubnetGroup", "dax:DescribeClusters", "dax:DescribeDefaultParameters", "dax:DescribeEvents", "dax:DescribeParameterGroups", "dax:DescribeParameters", "dax:DescribeSubnetGroups", "dax:IncreaseReplicationFactor", "dax:ListTags", "dax:RebootNode", "dax:TagResource", "dax:UntagResource", "dax:UpdateCluster", "dax:UpdateParameterGroup", "dax:UpdateSubnetGroup" ], "Effect": "Allow", "Resource": [ "*" ] } ] }

DAX 集群的扩缩

扩展 DAX 集群有两种方法。第一种是水平扩展,将只读副本添加到集群。第二种是垂直扩展,选择不同的节点类型。有关如何为应用程序选择合适集群大小和节点类型的建议,请参阅 DAX 集群大小调整指南

横向扩展

利用水平扩展,您可以将更多只读副本添加到集群,从而增加读取操作的吞吐量。一个 DAX 集群最多可支持 10 个只读副本,可以在集群运行时添加或删除副本。

以下 Amazon CLI 示例显示如何增加或减少节点数。--new-replication-factor 参数指定集群中的节点总数。其中一个节点是主节点,其他节点是只读副本。

aws dax increase-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 5
aws dax decrease-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 3
注意

修改复制系数时,集群状态将更改为 modifying。修改完成后,状态将变为 available

垂直扩缩

如果有大量工作数据,应用程序可能会受益于使用更大的节点类型。更大的节点可让集群在内存中存储更多数据,从而减少缓存未命中数和提高应用程序的整体性能。(一个 DAX 集群中的所有节点都必须是同一类型。)

如果 DAX 集群具有较高的写入操作速率或缓存未命中率,则应用程序也可能从使用更大的节点类型中受益。写入操作和缓存未命中将占用集群主节点的资源。因此,使用更大的节点类型可能会提高主节点的性能,以便能够为这些类型的操作提供更大的吞吐量。

无法修改正在运行的 DAX 集群中的节点类型。相反,必须使用所需的节点类型创建新集群。有关受支持的节点类型的列表,请参阅 节点

可以 Amazon Web Services Management Console、Amazon CloudFormation、Amazon CLI 或 Amazon SDK 创建新的 DAX 集群。(对于 Amazon CLI,使用 --node-type 参数指定节点类型。)

自定义 DAX 集群设置

创建 DAX 集群时,请使用以下默认设置:

  • 启用自动缓存移出,将存活时间 (TTL) 设置为 5 分钟

  • 无可用区首选项

  • 无维护时段首选项

  • 已禁用通知

对于新集群,可以在创建时自定义设置。要在 Amazon Web Services Management Console 执行此操作,请取消选择使用默认设置以修改以下设置:

  • 网络与安全性—允许在当前 Amazon 区域的不同可用区中运行各个 DAX 集群节点。如果选择无首选项,则这些节点将自动分配到各个可用区。

  • 参数组—应用于集群中每个节点的一组指定参数。可以使用参数组指定缓存 TTL 行为。可以随时更改参数组(默认参数组 default.dax.1.0 除外)中的任何给定参数的值。

  • 维护时段—每周的一个时间段,在此期间对集群节点应用软件升级和补丁。可以选择维护时段的开始日期、开始时间和持续时间。如果选择无首选项,则将从每个区域的 8 小时时间段中随机选择维护时段。有关更多信息,请参阅 维护时段

注意

也可以在正在运行的集群上随时更改参数组维护时段

如果发生维护事件,DAX 可以使用 Amazon Simple Notification Service (Amazon SNS) 通知您。要配置通知,请从 SNS 通知主题选择器选择一个选项。可以创建一个新 Amazon SNS 主题,也可以使用现有主题。

有关设置和订阅 Amazon SNS 主题的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 入门

配置 TTL 设置

DAX 为从 DynamoDB 读取的数据维护两种缓存:

  • 项目缓存—针对使用 GetItemBatchGetItem 检索到的项目。

  • 查询缓存—针对使用 QueryScan 检索到的结果集。

有关更多信息,请参阅 项目缓存查询缓存

所有这些缓存的默认 TTL 均为 5 分钟。如果要使用不同 TTL 设置,可以使用自定义参数组启动 DAX 集群。要在控制台中执行此操作,请在导航窗格中选择 DAX | 参数组

还可以使用 Amazon CLI 执行这些任务。下面的示例显示如何使用自定义参数组启动新 DAX 集群。在此示例中,项目缓存 TTL 设置为 10 分钟,查询缓存 TTL 设置为 3 分钟。

  1. 创建新参数组。

    aws dax create-parameter-group \ --parameter-group-name custom-ttl
  2. 将项目缓存 TTL 设置为 10 分钟(600000 毫秒)。

    aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
  3. 将查询缓存 TTL 设置为 3 分钟(180000 毫秒)。

    aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
  4. 确认已正确设置参数。

    aws dax describe-parameters --parameter-group-name custom-ttl \ --query "Parameters[*].[ParameterName,Description,ParameterValue]"

现在可以使用此参数组启动新 DAX 集群。

aws dax create-cluster \ --cluster-name MyNewCluster \ --node-type dax.r3.large \ --replication-factor 3 \ --iam-role-arn arn:aws:iam::123456789012:role/DAXServiceRole \ --parameter-group custom-ttl
注意

无法修改正在运行的 DAX 实例使用的参数组。

对 DAX 的标记支持

许多 Amazon 服务(包括 DynamoDB)都支持标记—使用用户定义的名称标记资源的功能。可以将标签分配给 DAX 集群,这样可以快速识别所有具有相同标签的 Amazon 资源,或按照分配的标签分类 Amazon 账单。

有关更多信息,请参阅向资源添加标签和标注

使用 Amazon Web Services Management Console

管理 DAX 集群标签
  1. 打开 DynamoDB 控制台:https://console.aws.amazon.com/dynamodb/

  2. 在导航窗格中的 DAX 下,选择 Clusters (集群)

  3. 选择要使用的集群。

  4. 选择标签选项卡。可以在此处添加、列出、编辑或删除标签。

    根据需要设置完毕后,选择应用更改

使用 Amazon CLI

使用 Amazon CLI 管理 DAX 集群标签时,必须先确定集群的 Amazon Resource Name (ARN)。下面的示例说明如何确定名为 MyDAXCluster 的集群的 ARN。

aws dax describe-clusters \ --cluster-name MyDAXCluster \ --query "Clusters[*].ClusterArn"

在输出中,ARN 与以下内容类似:arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster

下面的示例说明如何为集群添加标签。

aws dax tag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tags="Key=ClusterUsage,Value=prod"

列出集群的所有标签。

aws dax list-tags \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster

要删除标签,请指定标签键。

aws dax untag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tag-keys ClusterUsage

Amazon CloudTrail 集成

DAX 集成 Amazon CloudTrail,用于审计 DAX 集群活动。可以使用 CloudTrail 日志查看已在集群级进行的所有更改。还可以查看对集群组件进行的更改,例如节点、子网组和参数组。有关更多信息,请参阅使用 Amazon CloudTrail 记录 DynamoDB 操作日志

删除 DAX 集群

如果不再使用某个 DAX 集群,则应删除它以避免为未使用的资源付费。

可以使用控制台或 Amazon CLI 删除 DAX 集群。以下是示例。

aws dax delete-cluster --cluster-name mydaxcluster