本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以编程方式管理 Amazon Keyspaces 扩展策略
要以编程方式更新和管理 Amazon Keyspaces 自动扩展设置,您可以使用 AWS 命令行界面 (AWS CLI) 或 AWS API。无法使用 Cassandra 查询语言 (CQL) 管理 Amazon Keyspaces 扩展策略。本主题概述了您可以使用 AWS CLI 以编程方式管理的自动扩展任务。有关本主题中描述的 Application Auto Scaling AWS CLI 命令的更多信息,请参阅 AWS CLI 命令参考 中的 application-autoscaling。有关使用 AWS API 的更多信息,请参阅应用程序 Auto Scaling API 参考。
开始前的准备工作
在开始之前,您需要完成以下任务。
配置 权限
如果未完成这些任务,您必须为用户配置相应的权限,以创建和管理自动扩展设置。在 AWS Identity and Access Management (IAM) 中,需要使用
AWS 托管策略 AmazonKeyspacesFullAccess
来管理 Amazon Keyspaces 扩展策略。有关详细步骤,请参阅开始之前:向用户授予对 Amazon Keyspaces 自动扩展的权限.
安装 AWS CLI
如果您尚未安装和配置 AWS CLI,则必须先执行此操作。为此,请转到 AWS 命令行界面用户指南并按照以下说明操作:
在现有表上启用自动扩展:注册可扩展目标
对于现有 Amazon Keyspaces 表,您可以将表的写入或读取容量注册为应用程序 Auto Scaling 的可扩展目标。这将允许应用程序 Auto Scaling 调整您指定的表的预置的写入或读取容量。在以下示例中,我们将 mytable 注册为具有写入容量的可扩展目标,容量单位范围为 5 到 10 个。
Amazon Keyspaces 自动扩展需要是否存在代表您执行自动扩展操作的服务相关角色 (AWSServiceRoleForApplicationAutoScaling_CassandraTable
)。此角色是自动为您创建的。有关更多信息,请参阅 Using Service-Linked Roles for Amazon Keyspaces.
输入以下命令,将表注册为可扩展目标。
aws application-autoscaling register-scalable-target \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --min-capacity 5 \ --max-capacity 10
查看向应用程序 Auto Scaling 注册的可扩展目标
要查看注册详细信息,请使用以下命令。
aws application-autoscaling describe-scalable-targets --service-namespace cassandra --resource-ids "keyspace/mykeyspace/table/mytable"
该命令的输出如下所示。
{ "ScalableTargets": [ { "ServiceNamespace": "cassandra", "ResourceId": "keyspace/mykeyspace/table/mytable", "ScalableDimension": "cassandra:table:WriteCapacityUnits", "MinCapacity": 5, "MaxCapacity": 10, "RoleARN": "arn:aws:iam::012345678910:role/aws-service-role/cassandra.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_CassandraTable", "CreationTime": 1587495787.412, "SuspendedState": { "DynamicScalingInSuspended": false, "DynamicScalingOutSuspended": false, "ScheduledScalingSuspended": false } } ] }
查看向应用程序 Auto Scaling 注册的可扩展目标
要查看注册详细信息,请使用以下命令。
aws application-autoscaling describe-scalable-targets \ --service-namespace cassandra \ --resource-id "keyspace\mytable"
创建扩展策略
要通过编程方式管理自动扩展设置,请为表创建扩展策略。该策略定义指示应用程序 Auto Scaling 调整表的预置吞吐量的条件,以及它在执行此操作时要执行的操作。在此示例中,您将此策略与您之前定义的可扩展目标(mytable 表的写入容量单位)关联。
该策略包含以下元素:
-
PredefinedMetricSpecification
– 允许应用程序 Auto Scaling 调整的指标。对于 Amazon Keyspaces,以下值是PredefinedMetricType
的有效值:-
CassandraReadCapacityUtilization
-
CassandraWriteCapacityUtilization
-
-
ScaleOutCooldown
– 扩展活动会增加表的预置吞吐量。要为向外扩展活动添加冷却时间,请为ScaleOutCooldown
指定一个值(以秒为单位)。 默认值是 0。有关更多信息,请参阅应用程序 Auto Scaling Auto Scaling 中的目标跟踪扩展策略。 -
ScaleInCooldown
– 缩减活动会减少表的预置吞吐量。要为缩减活动添加冷却时间,请为ScaleInCooldown
指定一个值(以秒为单位)。 默认值是 0。有关更多信息,请参阅应用程序 Auto Scaling Auto Scaling 中的目标跟踪扩展策略。 -
TargetValue
– 应用程序 Auto Scaling 确保消耗的容量与预置容量的比例保持在该值或接近该值。您将TargetValue
定义为百分比。
要进一步了解 TargetValue
的工作方式,假设您有一个预置吞吐量设置为 200 个写入容量单位的表。您决定为此表创建扩展策略,TargetValue
为 70%。
现在,假设您开始增加对表的写入流量,以使实际写入吞吐量为 150 个容量单位。消耗/预置比率现在为 (150/200) 或 75%。此比率超过您的目标,因此应用程序
Auto Scaling 会将预置的写入容量增加到 215,以便该比率尽可能接近您的 TargetValue
,但不会超过它。
对于 mytable,请将 TargetValue
设置为 50%。应用程序 Auto Scaling 在 5 到 10 个容量单位范围内调整表的预置吞吐量(请参阅在现有表上启用自动扩展:注册可扩展目标),以便消耗/预置比率保持在或接近 50%。您将 ScaleOutCooldown
和 ScaleInCooldown
的值设置为 60 秒。
-
创建一个文件,在其中包含要应用于表的策略,如以下示例所示。然后,在本示例中,使用名称 保存文件。
scaling-policy.json
.{ "PredefinedMetricSpecification": { "PredefinedMetricType": "CassandraWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60, "TargetValue": 50.0 }
-
使用以下 AWS CLI 命令创建策略。
aws application-autoscaling put-scaling-policy \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy" \ --policy-type "TargetTrackingScaling" \ --target-tracking-scaling-policy-configuration file://scaling-policy.json
在此命令的输出中,您可以看到 Application CloudWatchAuto Scaling Auto Scaling 警报 - 每个警报用于消耗的上限容量和下限容量,每个警报用于扩展目标范围的上边界和下边界。
{ "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:8d606c33-2078-4f37-8305-36e89c56a779:resource/cassandra/keyspace/mykeyspace/table/mytable:policyName/MyScalingPolicy", "Alarms": [ { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215" } ] }
查看扩展策略
您可以使用以下 AWS CLI 命令查看现有扩展策略的详细信息:
aws application-autoscaling describe-scaling-policies \ --service-namespace cassandra \ --resource-ids "keyspace/mykeyspace/table/mytable" \ --policy-name "MyScalingPolicy"
在此命令的输出中,您可以查看扩展策略的详细信息以及应用程序 CloudWatchAuto Scaling Auto Scaling 警报 - 每个警报分别针对消耗的上限容量和下限容量,每个警报针对扩展目标范围的上边界和下限。
{ "ScalingPolicies": [ { "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:8d606c33-2078-4f37-8305-36e89c56a779:resource/cassandra/keyspace/mykeyspace/table/mytable:policyName/MyScalingPolicy", "PolicyName": "MyScalingPolicy", "ServiceNamespace": "cassandra", "ResourceId": "keyspace/mykeyspace/table/mytable", "ScalableDimension": "cassandra:table:WriteCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "CassandraWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60 }, "Alarms": [ { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215" } ], "CreationTime": 1587497009.591 } ] }
查看应用程序 Auto Scaling 操作
您可以使用以下 AWS CLI 命令,查看代表您启动的应用程序 Auto Scaling 操作。
aws application-autoscaling describe-scaling-activities \ --service-namespace cassandra
如果您对某个表运行此命令,而该表上的自动扩展功能正在更改写入容量,您会看到类似下面这样的输出:
... { "ScalableDimension": "cassandra:table:WriteCapacityUnits", "Description": "Setting write capacity units to 10.", "ResourceId": "keyspace/mykeyspace/table/mytable", "ActivityId": "0cc6fb03-2a7c-4b51-b67f-217224c6b656", "StartTime": 1489088210.175, "ServiceNamespace": "cassandra", "EndTime": 1489088246.85, "Cause": "monitor alarm AutoScaling-keyspace/mykeyspace/table/mytable-AlarmHigh-1bb3c8db-1b97-4353-baf1-4def76f4e1b9 in state ALARM triggered policy MyScalingPolicy", "StatusMessage": "Successfully set write capacity units to 10. Change successfully fulfilled by cassandra.", "StatusCode": "Successful" }, ...
此示例输出指示 Application Auto Scaling 已向 Amazon Keyspaces 发出 Alter Table
请求以更改写入容量。
删除扩展策略
删除 mytable. 的扩展策略。如果您不再需要扩展表的写入容量,则应考虑删除扩展策略,以便 Amazon Keyspaces 不会继续修改表的写入容量设置。您可以通过注销可扩展目标来删除扩展基础设施,也可以仅删除您的扩展策略并保持可扩展目标的注册状态,以便日后使用。
使用以下命令可删除指定的目标跟踪扩展策略。它还会删除 Application CloudWatchAuto Scaling Auto Scaling 警报。
aws application-autoscaling delete-scaling-policy \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy"
禁用现有表上的自动扩展:注销可扩展目标
使用以下 AWS CLI 命令取消注册可扩展目标。这还将删除附加到此目标的扩展策略。
aws application-autoscaling deregister-scalable-target \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits"