在 Amazon Keyspaces 中使用自动缩放功能在预配置模式下创建多区域表 - Amazon Keyspaces(Apache Cassandra 兼容)

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

在 Amazon Keyspaces 中使用自动缩放功能在预配置模式下创建多区域表

本节提供示例,说明如何在预配置模式下使用 auto Scaling 创建多区域表。您可以在 Amazon Keyspaces 控制台上使用CQL或执行此操作。 AWS CLI

有关支持的配置和多区域复制功能的更多信息,请参阅Amazon Keyspaces 多区域复制使用说明

要创建多区域密钥空间,请参阅。在 Amazon Keyspaces 中创建多区域密钥空间

当您在预配置模式下使用自动缩放设置创建新的多区域表时,您可以为该表指定对复制 AWS 区域 该表的所有内容有效的常规设置。然后,您可以覆盖每个副本的读取容量设置并读取 auto Scaling 设置。但是,写入容量在所有副本之间保持同步,以确保有足够的容量跨所有区域复制写入。

注意

Amazon Keyspaces 自动扩缩需要存在一个代表您执行自动扩缩操作的服务相关角色 (AWSServiceRoleForApplicationAutoScaling_CassandraTable)。将自动为您创建此角色。有关更多信息,请参阅 对 Amazon Keyspaces 使用服务相关角色

Console
创建启用自动缩放功能的新多区域表
  1. 登录并在家中打开 Amazon Keyspaces 控制台。 AWS Management Console https://console.aws.amazon.com/keyspaces/

  2. 选择一个多区域键空间。

  3. 选项卡上,选择创建表

  4. 创建表页面的表详细信息部分中,选择一个键空间并为新表提供一个名称。

  5. 在 “” 部分中,为您的表创建架构。

  6. 主键部分中,定义表的主键并选择可选的聚类列。

  7. 表设置部分,选择自定义设置

  8. 继续读取/写入容量设置

  9. 对于 Capacity mode (容量模式),选择 Provisioned (预置)

  10. Read capacity (读取容量) 部分中,确认已选择 Scale automatically(自动扩展)

    您可以选择为所有 AWS 区域 复制表的读取容量单位配置相同的读取容量单位。或者,您可以清除该复选框并以不同的方式配置每个区域的读取容量。

    如果您选择以不同的方式配置每个区域,则可以为每个表副本选择最小和最大读取容量单位以及目标利用率。

    • 最小容量单位:输入表应始终支持的最小吞吐量级别的值。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。

    • 最大容量单位-输入要为表预配置的最大吞吐量。该值必须介于 1 和账户的每秒最大吞吐量配额(默认为 40000)之间。

    • 目标利用率:输入介于 20% 和 90% 之间的目标利用率。当流量超过定义的目标利用率时,容量将自动扩展。当流量低于定义的目标时,容量将自动重新缩减。

    • 如果要手动配置表的读取容量,请清除 “自动扩展” 复选框。此设置适用于表的所有副本。

      注意

      为确保所有副本都有足够的读取容量,我们建议 Amazon Keyspaces 自动扩展预配置的多区域表。

    注意

    要了解有关账户的默认配额以及如何增加此配额的更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)限额

  11. “写入容量” 部分,确认已选择 “自动缩放”。然后为表配置容量单位。写入容量单位在所有区域之间保持同步, AWS 区域 以确保有足够的容量跨区域复制写入事件。

    • 如果要手动配置表的写入容量,请清除 “自动扩展”。此设置适用于表的所有副本。

      注意

      为确保所有副本都有足够的写入容量,我们建议 Amazon Keyspaces 自动扩展预配置的多区域表。

  12. 选择创建表。使用指定的自动扩展参数创建表。

Cassandra Query Language (CQL)
使用预置容量模式和 auto Scaling 创建多区域表 CQL
  • 要使用 auto Scaling 在预配置模式下创建多区域表,必须先通过CUSTOM_PROPERTIES为表定义来指定容量模式。指定预配置容量模式后,您可以使用配置表的 auto Scaling 设置。AUTOSCALING_SETTINGS

    有关 auto Scaling 设置、目标跟踪策略、目标值和可选设置的详细信息,请参阅创建具有自动缩放功能的新表

    要定义特定区域中表副本的读取容量,您可以将以下参数配置为表的一部分replica_updates

    • 区域

    • 预配置的读取容量单位(可选)

    • 读取容量的自动缩放设置(可选)

    以下示例显示了预配置模式下多区域表的CREATE TABLE语句。一般的写入和读取容量 auto scaling 设置相同。但是,在向上或向下扩展表的读取容量之前,read auto scaling 设置指定了 60 秒的额外冷却时间。此外,美国东部区域(弗吉尼亚北部)的读取容量 auto scaling 设置高于其他副本的读取容量 auto scaling 设置。此外,目标值设置为 70% 而不是 50%。

    CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 5, 'write_capacity_units': 5 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } }, 'replica_updates': { 'us-east-1': { 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 20, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 70 } } } } } };
CLI
使用 auto Scaling 在预配置模式下创建新的多区域表 AWS CLI
  • 要在预配置模式下创建具有 auto Scaling 配置的多区域表,可以使用。 AWS CLI请注意,您必须使用 Amazon Key CLI create-table spaces 命令来配置多区域自动扩展设置。这是因为 Amazon Keyspaces 用来代表您执行自动扩展的服务 Application Auto Scaling 不支持多个区域。

    有关 auto Scaling 设置、目标跟踪策略、目标值和可选设置的更多信息,请参阅创建具有自动缩放功能的新表

    要定义特定区域中表副本的读取容量,您可以将以下参数配置为表的一部分replicaSpecifications

    • 区域

    • 预配置的读取容量单位(可选)

    • 读取容量的自动缩放设置(可选)

    当您使用复杂的自动缩放设置和不同的表副本配置创建预配置的多区域表时,从文件加载表的自动缩放设置和副本配置会很有帮助。JSON

    要使用以下代码示例,您可以从 auto-scaling.zip 下载示例JSON文件,然后提取auto-scaling.jsonreplication.json。记下文件的路径。

    在此示例中,JSON文件位于当前目录中。有关不同的文件路径选项,请参阅如何从文件加载参数

    aws keyspaces create-table --keyspace-name mykeyspace --table-name mytable \ --schema-definition 'allColumns=[{name=pk,type=int},{name=ck,type=int}],partitionKeys=[{name=pk},{name=ck}]' \ --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 \ --auto-scaling-specification file://auto-scaling.json \ --replica-specifications file://replication.json