自动扩展 Amazon Neptune 数据库集群中的副本数量 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

自动扩展 Amazon Neptune 数据库集群中的副本数量

您可以使用 Neptune 自动扩展来自动调整数据库集群中 Neptune 副本的数量,以满足您的连接和工作负载要求。自动扩展允许您的 Neptune 数据库集群处理工作负载的增加,然后,当工作负载减少时,自动扩展会删除不必要的副本,因此您无需为未使用的容量付费。

您只能对已经有一个主写入器实例和至少一个只读副本实例的 Neptune 数据库集群使用自动扩展(参见亚马逊 Neptune 数据库集群和实例)。此外,集群中的所有只读副本实例都必须处于可用状态。如果任何只读副本处于可用以外的状态,则在集群中的每个只读副本可用之前,Neptune 自动缩放不执行任何操作。

创建数据库集群如果你需要创建一个新的集群。

使用Amazon CLI,你定义并应用扩展策略到数据库集群。你也可以使用Amazon CLI编辑或删除您的自动扩展策略。该策略指定了以下自动扩展参数:

  • 集群中要拥有的最小和最大副本数。

  • 一个ScaleOutCooldown添加副本之间的间隔,以及ScaleInCooldown副本删除之间的间隔。

  • 该CloudWatch指标和用于向上或向下扩展的指标触发值。

Neptune 自动缩放操作的频率可以通过多种方式降低:

  • 最初,为了自动缩放以添加或删除阅读器,CPUUtilization必须突破高警报至少 3 分钟,或者必须突破低警报至少 15 分钟。

  • 在首次添加或删除之后,随后 Neptune 自动缩放操作的频率受限于ScaleOutCooldownScaleInCooldown自动扩缩策略中的设置。

如果CloudWatch您正在使用的指标达到了您在政策中指定的高阈值,并且如果ScaleOutCooldown自上次自动扩展操作以来已经过去了间隔,如果您的数据库集群还没有达到您设置的最大副本数,Neptune 自动扩展会使用与数据库集群的主实例相同的实例类型创建一个新的副本。

同样,如果指标达到您指定的低阈值,并且如果ScaleInCooldown自上次自动扩展操作以来已经过去了间隔,如果您的数据库集群的副本数超过了您指定的最小副本数,Neptune 自动扩展会删除其中一个副本。

注意

Neptune 自动缩放仅移除其创建的副本。它不会删除先前存在的副本。

使用neptune_autoscaling_数据库集群参数,您还可以指定 Neptune 自动扩展创建的新只读副本的实例类型、这些只读副本的维护窗口以及与每个新只读副本关联的标签。您可以在 JSON 字符串中提供这些配置设置作为的值neptune_autoscaling_config参数,像这样:

"{ \"tags\": [ { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" }, { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" }, ], \"maintenanceWindow\" : \"wed:12:03-wed:12:33\", \"dbInstanceClass\" : \"db.r5.xlarge\" }"

请注意,JSON 字符串中的引号必须全部使用反斜杠字符进行转义 (\)。像往常一样,字符串中的所有空格都是可选的。

中未指定的三种配置设置中的任何一种neptune_autoscaling_config参数是从数据库集群的主写入器实例的配置中复制的。

什么时候自动缩放添加一个新的只读副本实例,它在数据库实例 ID 的前缀为autoscaled-reader(例如,autoscaled-reader-7r7t7z3lbd-20210828)。它还会为使用密钥创建的每个只读副本添加一个标签autoscaled-reader且值为TRUE。你可以在上看到这个标签标签中的数据库实例详细信息页面的选项卡Amazon Web Services Management Console。

"key" : "autoscaled-reader", "value" : "TRUE"

通过自动扩展创建的所有只读副本实例的升级层是最低优先级,即15默认情况下。这意味着,在故障切换期间,任何优先级更高的副本(例如手动创建的副本)都将首先升级。请参阅Neptune 数据库集群的容错能力

Neptune 自动缩放是使用应用程序自动缩放实现的目标跟踪扩展策略使用海王星的CPUUtilization CloudWatch指标作为预定义的指标。

在 Neptune 无服务器数据库集群中使用自动扩展

当需求超过实例容量时,Neptune Serverless 的响应速度比 Neptune 自动扩展快得多,并且向上扩展实例而不是添加另一个实例。自动扩展旨在适应工作负载的相对稳定的增加或减少,而serverless则擅长处理需求的快速峰值和抖动。

了解它们的优势,您可以将自动扩展和无服务器相结合,创建灵活的基础架构,以高效处理工作负载变化并满足需求,同时最大限度地降低成本。

为了使自动扩展能够与无服务器有效地协同工作,重要的是配置您的无服务器集群maxNCU设置得足够高,足以适应需求的峰值和短暂的变化。否则,临时更改不会触发无服务器扩展,这可能会导致自动扩展启动许多不必要的额外实例。如果maxNCU设置得足够高,无服务器扩展可以更快、更便宜地处理这些变化。

如何为亚马逊 Neptune 启用自动扩展

只能使用以下方法为 Neptune 数据库集群启用自动扩展Amazon CLI。您无法使用启用自动扩展Amazon Web Services Management Console。

此外,以下亚马逊地区不支持自动扩展:

  • 非洲(开普敦):af-south-1

  • 中东(阿联酋):me-central-1

  • Amazon GovCloud(美国东部):us-gov-east-1

  • Amazon GovCloud(美国西部):us-gov-west-1

为 Neptune 数据库集群启用自动扩展包括三个步骤:

1. 使用应用程序自动扩展注册您的数据库集群

为 Neptune 数据库集群启用自动扩展的第一步是使用应用程序自动扩展将集群注册到应用程序 Auto ScalingAmazon CLI或应用程序自动扩展 SDK 之一。集群必须已经有一个主实例和至少一个只读副本实例:

例如,要注册一个集群以自动扩展到从一个副本扩展到八个副本,可以使用Amazon CLI register-scalable-target命令如下:

aws application-autoscaling register-scalable-target \ --service-namespace neptune \ --resource-id cluster:(your DB cluster name) \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --min-capacity 1 \ --max-capacity 8

这等同于使用RegisterScalableTarget应用程序自动扩展 API 操作。

该Amazon CLI register-scalable-target命令采用以下参数:

  • service-namespace – 设置为 neptune

    此参数等同于ServiceNamespace应用程序自动扩展 API 中的参数。

  • resource-id— 将其设置为 Neptune 数据库集群的资源标识符。资源类型是cluster,后面是冒号 (':'),然后是您的数据库集群的名称。

    此参数等同于ResourceID应用程序自动扩展 API 中的参数。

  • scalable-dimension— 在这种情况下,可扩展维度是数据库集群中副本实例的数量,因此您将此参数设置为neptune:cluster:ReadReplicaCount

    此参数等同于ScalableDimension应用程序自动扩展 API 中的参数。

  • min-capacity— 由应用程序 Auto Scaling 管理的读取器数据库副本实例的最小数量。此值应设置在 0 到 15 的范围内,并且必须等于或小于为 Neptune 副本的最大数量指定的值max-capacity。数据库集群中必须至少有一个读取器才能使自动扩展正常工作。

    此参数等同于MinCapacity应用程序自动扩展 API 中的参数。

  • max-capacity— 数据库集群中读取器数据库副本实例的最大数量,包括先前存在的实例和由 Application Auto Scaling 管理的新实例。此值必须设置在 0 到 15 的范围内,并且必须等于或大于为 Neptune 副本的最小数量指定的值min-capacity

    max-capacity Amazon CLI参数等同于MaxCapacity应用程序自动扩展 API 中的参数。

当您注册数据库集群时,应用程序 Auto Scaling 会创建一个AWSServiceRoleForApplicationAutoScaling_NeptuneCluster服务相关角色。有关更多信息,请参见应用程序自动扩展的服务相关角色应用程序自动扩展用户指南

2. 定义用于数据库集群的自动扩缩策略

目标跟踪扩展策略定义为 JSON 文本对象,也可以保存在文本文件中。对于海王星来说,此政策目前只能使用海王星CPUUtilization CloudWatch指标作为名为的预定义指标NeptuneReaderAverageCPUUtilization

以下是 Neptune 的目标跟踪扩展配置策略示例:

{ "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" }, "TargetValue": 60.0, "ScaleOutCooldown" : 600, "ScaleInCooldown" : 600 }

TargetValue此处的元素包含 CPU 利用率的百分比,超过该百分比会自动缩放向外扩展(也就是说,添加更多的副本),低于这个副本缩放(即,删除副本)。在这种情况下,触发缩放的目标百分比为60.0%。

ScaleInCooldown元素以秒为单位指定缩减活动完成后再开始向内扩展的时间。默认值为 300 秒。此处,值 600 指定从一个副本删除完成到另一个副本删除开始之间必须经过至少十分钟。

ScaleOutCooldown元素以秒为单位指定扩展活动完成后再开始向外扩展的时间。默认值为 300 秒。此处,值 600 指定从一个副本添加完成到另一个副本开始之间必须经过至少十分钟。

DisableScaleIn元素是一个布尔值,如果存在并设置为true完全禁用缩容,这意味着自动缩放可能会添加副本,但永远不会移除任何副本。默认情况下,向内缩放处于启用状态,并且DisableScaleInfalse

向 Application Auto Scaling 注册您的 Neptune 数据库集群并在文本文件中定义 JSON 扩展策略后,接下来将扩展策略应用于已注册的数据库集群。你可以使用Amazon CLI put-scaling-policy执行此操作的命令,其参数如下所示:

aws application-autoscaling put-scaling-policy \ --policy-name (name of the scaling policy) \ --policy-type TargetTrackingScaling \ --resource-id cluster:(name of your Neptune DB cluster) \ --service-namespace neptune \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)

应用自动扩展策略后,将在数据库集群上启用自动扩展。

你也可以使用Amazon CLI put-scaling-policy用于更新现有自动扩展策略的命令。

另见PutScalingPolicy应用程序自动扩展 API 参考

从 Neptune 数据库集群中删除自动扩展

要从 Neptune 数据库集群中删除自动缩放功能,请使用Amazon CLI delete-scaling-policyderegister-scalable-target命令。