本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以编程方式管理 Amazon Keyspaces 扩展策略
要以编程方式更新和管理 Amazon Keyspaces 自动扩展设置,您可以使用Amazon Command Line Interface (Amazon CLI) 或Amazon API。无法使用 Cassandra 查询语言 (CQL) 管理 Amazon Keyspaces 扩展策略。本主题概述了您可以使用 Amazon CLI 通过编程方式管理的自动扩展任务。
有关本主题中描述的Application Auto ScalingAmazon CLI 命令的更多信息,请参阅《Amazon CLI命令参考》中的应用程序自动缩放。有关使用Amazon API 的更多信息,请参阅 Application Auto Scaling API 参考。
开始前的准备工作
在开始之前,您需要完成以下任务。
配置权限
如果未完成这些任务,您必须为用户配置相应的权限,以创建和管理自动扩展设置。在Amazon Identity and Access Management (IAM) 中,需要使用Amazon托管策略AmazonKeyspacesFullAccess
来管理 Amazon Keyspaces 扩展策略。有关详细步骤,请参阅开始之前:向用户授予 Amazon Keyspaces 自动扩缩的权限。
安装 Amazon CLI
如果您尚未安装和配置 Amazon CLI,则必须先执行此操作。为此,请转到Amazon Command Line Interface用户指南并按照以下说明进行操作:
在现有表上启用自动扩展:注册一个可扩展目标
对于现有 Application AuKeyspaces o Scaling,将该表的写入或读取容量注册为使 Application Auto Scaling 的可扩展目标。这允许 Application Auto Scaling 调整您指定表的预置写或读取容量。在以下示例中,将 mytable 注册为可扩展目标,写入容量在 5—10 个容量单位的范围内。
注意
Amazon Keyspaces 自动扩展,需要存在一个代表您执行自动扩展操作的服务相关角色 (AWSServiceRoleForApplicationAutoScaling_CassandraTable
)。将自动为您创建此角色。有关更多信息,请参阅对 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
查看 Application 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 } } ] }
查看 Application Auto Scaling
要查看注册详细信息,请使用以下命令。
aws application-autoscaling describe-scalable-targets \ --service-namespace cassandra \ --resource-id "keyspace\mytable"
创建扩展缩缩缩缩缩缩
要通过编程方式管理自动扩展设置,请为表创建扩展策略。该策略定义指示 Application Auto Scaling 调整表的预置吞吐量的条件,以及调整表的预置吞吐量的条件。在此示例中,您将此策略与您以前定义的可扩展目标(mytable 表的写入容量单位)相关联。
该策略包含以下元素:
-
PredefinedMetricSpecification
— 允许应 Application Auto Scaling 调整的指标。对于 Amazon Keyspaces,以下值是有效值PredefinedMetricType
:-
CassandraReadCapacityUtilization
-
CassandraWriteCapacityUtilization
-
-
ScaleOutCooldown
— 扩展活动增加表的预置吞吐量。要为横向扩展活动增加冷却时间,请为ScaleOutCooldown
指定一个值(以秒为单位)。默认值为 0。有关更多信息,请参阅 App lication Auto Scaling 用户指南中的目标跟踪扩展扩展。 -
ScaleInCooldown
— 缩容活动会降低表的预置吞吐量。要为缩减活动增加冷却时间,请为ScaleInCooldown
指定一个值(以秒为单位)。默认值为 0。有关更多信息,请参阅 App lication Auto Scaling 用户指南中的目标跟踪扩展扩展。 -
TargetValue
— Application Auto Scaling 可确保消耗的容量与预置容量的比例保持在该值或接近该值。您将TargetValue
定义为百分比。
注意
为了进一步了解 TargetValue
的工作原理,假设您的表的预配置吞吐量设置为 200 个写入容量单位。您决定为此表创建扩展策略,并使用 TargetValue
的 70%。
现在假设您开始将写入流量驱动到表,以便实际写入吞吐量为 150 个容量单位。该 consumed-to-provisioned 比例现在为 (150/200),即 75%。此比率超出了您的目标值,因此 Application Auto Scaling 会将预置写入容量增加到 215,使该比率为 (150/215) 或 69.77% — 尽可能接近 TargetValue
,但不超过。
对于 mytable,你设置TargetValue
为 50%。将 Application Auto Scaling 在 5—10 个容量单位的范围内(请参阅在现有表上启用自动扩展:注册一个可扩展目标),将 consumed-to-provisioned 表的预置吞吐量调整在 50% 或接近 50%。您可以将 ScaleOutCooldown
和 ScaleInCooldown
值设置为 60 秒。
-
创建一个文件,在其中包含要应用于表的策略,如以下示例所示。然后,在本示例中,使用名称
scaling-policy.json
保存文件。{ "PredefinedMetricSpecification": { "PredefinedMetricType": "CassandraWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60, "TargetValue": 50.0 }
-
使用以下 Amazon 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 Auto Scaling 创建的 CloudWatch 警报,分别针对消耗的上限和下限,分别针对扩展目标范围的上限和下限。
{ "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" } ] }
查看扩缩展扩展
您可以使用以下 Amazon CLI 命令,查看现有扩展策略的详细信息:
aws application-autoscaling describe-scaling-policies \ --service-namespace cassandra \ --resource-ids "keyspace/mykeyspace/table/mytable" \ --policy-name "MyScalingPolicy"
在此命令的输出中,您可以查看 Application Auto Scaling 创建的详细信息以及 Application Auto Scaling 创建的 CloudWatch 警报,分别针对所消耗的上限和下限。
{ "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 } ] }
查看Application Auto Scaling
您可以使用以下Amazon CLI命令查看代表您启动的 Application 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
请求发送给 Amazon Ke
删除扩展策略
删除 mytable 的扩展策略。如果您不再需要扩展表的写入容量,则应考虑删除扩展策略,以便 Amazon Keyspaces 不会继续修改表的写入容量设置。您可以通过注销可扩展目标来删除扩展基础设施,也可以仅删除您的扩展策略并保持可扩展目标的注册状态,以便日后使用。
使用以下命令可删除指定的目标跟踪扩展策略。它还将删除 Application Auto Scaling 代表您创建的 CloudWatch 警报。
aws application-autoscaling delete-scaling-policy \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy"
禁用现有表的自动缩放:取消注册可扩展目标
使用以下 Amazon CLI 命令来注销可扩展目标。这还将删除附加到此目标的扩展策略。
aws application-autoscaling deregister-scalable-target \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits"