您可以扩缩 AlloyDB 实例,以调整集群的容量和性能,从而满足不断变化的工作负载需求。扩缩有助于管理费用,并便于处理流量高峰。
您可以通过多种方式扩缩 AlloyDB 实例,具体如下所示。
| 扩缩类型 | 方法 | 自动化 | 主实例 | 读取池实例 |
|---|---|---|---|---|
| 纵向 | 更改机器类型 | 手动 | 支持 | 支持 |
| 横向 | 更改节点数 | 手动和自动 | 不支持 | 支持 |
准备工作
- 您使用的 Google Cloud 项目必须已启用才能访问 AlloyDB。
- 您必须在所使用的 Google Cloud 项目中拥有以下 IAM 角色之一:
roles/alloydb.admin(AlloyDB Admin 预定义 IAM 角色)roles/owner(Owner 基本 IAM 角色)roles/editor(Editor 基本 IAM 角色)
如果您不拥有上述任何角色,请与组织管理员联系以申请访问权限。
手动扩缩
本部分介绍了手动扩缩 AlloyDB 实例的方法。例如,您可以通过更改实例的机器类型来纵向扩缩实例,也可以通过更改读取池实例的节点数来横向扩缩读取池实例。
扩缩实例的机器类型
您可以通过更改实例的机器类型来纵向扩缩主实例和读取池实例,这会修改其 vCPU 和 RAM。
控制台
在 Google Cloud 控制台中,前往集群页面。
在资源名称列中点击相应集群。
在概览页面中,前往集群中的实例部分,然后点击修改主实例或修改读取池。
选择以下机器系列之一:
- C4A:基于 Google Axion 的机器系列,以预览版形式提供。
- N2:默认的基于 x86 的机器系列。
- C4:Intel Xeon 可扩展处理器和基于 Titanium 的机器系列。
选择机器类型。
- C4A 支持 1、4、8、16、32、48、64 和 72 种机器类型或形式。
- N2 支持 2、4、8、16、32、64、96 和 128 种机器类型或形式。
C4 支持 4、8、16、24、32、48、96、144、192 和 288 种机器类型或形式。
如需详细了解如何使用基于 C4A Axion 的机器系列(包括 1 vCPU 机器类型),请参阅使用基于 C4A Axion 的机器系列时的注意事项。
点击更新实例或更新读取池。
gcloud
如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell。
使用 gcloud alloydb instances
update 命令可更改主实例的机器类型。
gcloud alloydb instances update INSTANCE_ID \
--cpu-count=CPU_COUNT \
--machine-type=MACHINE_TYPE \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID替换以下内容:
INSTANCE_ID:要更新的实例的 ID。CPU_COUNT:您希望实例拥有的 N2 vCPU 数量。默认值为 N2。有效值包括:2:2 个 vCPU,16 GB RAM4:4 个 vCPU,32 GB RAM8:8 个 vCPU,64 GB RAM16:16 个 vCPU,128 GB RAM32:32 个 vCPU,256 GB RAM64:64 个 vCPU,512 GB RAM96:96 个 vCPU,768 GB RAM128:128 个 vCPU,864 GB RAM
MACHINE_TYPE:可选。从受支持的机器类型列表中选择,例如n2-highmem-4、c4-highmem-4-lssd或c4a-highmem-4-lssd。如需了解详情,请参阅选择 AlloyDB 机器类型。将
MACHINE_TYPE和CPU_COUNT结合使用时,CPU_COUNT和MACHINE_TYPE中的值必须匹配,否则会出现错误。REGION_ID:实例所在的区域。CLUSTER_ID:实例所在集群的 ID。PROJECT_ID:集群所在项目的 ID。
如果该命令返回包含 invalid cluster state MAINTENANCE 字词的错误消息,则表示集群正在进行日常维护。这会暂时禁止实例重新配置。
在集群恢复为 READY 状态后,再次运行该命令。如需查看集群状态,请参阅查看集群详情。
加快机器类型更新速度
如需更快地更新机器类型,可以将 FORCE_APPLY 选项与 gcloud beta alloydb instances update 命令搭配使用。
gcloud beta alloydb instances update INSTANCE_ID \
--cpu-count=CPU_COUNT \
--machine-type=MACHINE_TYPE \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID
--update-mode=FORCE_APPLY实例会有大约 1 分钟的停机时间。
对实例机器类型的更改会在 10 到 15 分钟后生效。
扩缩读取池实例的节点数
AlloyDB 允许您在实例级层扩缩读取池实例中的节点数量,而不会造成任何停机。增加节点数量时,客户端连接不会受到影响。
减少节点数量时,之前连接到正在关停的节点的任何客户端都可以使用实例端点重新连接到其他节点。
控制台
在 Google Cloud 控制台中,前往集群页面。
在资源名称列中点击相应集群。
在概览页面中,前往集群中的实例部分,然后点击修改读取池。
在节点数字段中,输入节点数。
点击更新读取池。
gcloud
如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell。
使用 gcloud alloydb instances
update 命令可更改读取池实例中的节点数量。
gcloud alloydb instances update INSTANCE_ID \
--read-pool-node-count=NODE_COUNT \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_IDINSTANCE_ID:读取池实例的 ID。NODE_COUNT:读取池实例中的节点数量。指定1到20(含)之间的数字。请注意,一个集群中的所有读取池实例最多可以有 20 个节点。REGION_ID:实例所在的区域。CLUSTER_ID:实例所在项目的 ID。PROJECT_ID:集群所在项目的 ID。
如果该命令返回包含 invalid cluster state MAINTENANCE 字词的错误消息,则表示集群正在进行日常维护。这会暂时禁止实例重新配置。
在集群恢复为 READY 状态后,再次运行该命令。如需查看集群状态,请参阅查看集群详情。
自动扩缩读取池实例
借助 AlloyDB 读取池自动扩缩功能,您可以根据实时资源使用情况自动且自适应地更改读取节点数量。这有助于您应对使用情况变化并减少支出。
您可以使用以下政策配置自动扩缩:
- 基于 CPU 利用率:根据目标 CPU 利用率扩缩节点数。
- 基于时间表的扩缩:在指定的时间窗口内将节点数扩缩到最低数量。
您可以同时使用这些政策。当多个政策处于有效状态时,自动扩缩器会选择建议节点数量最多的政策。
限制
读取池自动扩缩器存在以下限制:
- 长时间运行的连接的负载分配:为了实现均匀的流量分配并充分利用自动扩缩带来的新增容量,我们建议您创建新的客户端连接。自动扩缩器在添加新节点时不会终止现有的长期连接,因此来自这些连接的流量不会路由到新添加的节点。
- 新节点的缓存预热:自动扩缩器添加新节点后,这些节点可能需要几分钟时间才能预热其缓存并达到最佳查询性能。
- 大型查询的行为:在执行非常大的读取查询期间,自动扩缩调整可能会延迟。
在新读取池实例上启用自动扩缩功能
您可以使用基于 CPU 的政策、基于时间表的政策或同时使用这两种政策来创建读取池实例,并启用和配置自动扩缩功能。
创建具有基于 CPU 的政策的读取池实例
如需创建具有基于目标 CPU 利用率的自动扩缩政策的读取池实例,请运行以下命令:
gcloud alloydb instances create INSTANCE_ID \
--instance-type=READ_POOL \
--read-pool-node-count=NODE_COUNT \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--enable-autoscaler \
--autoscaler-max-node-count=MAX_NODE_COUNT \
--autoscaler-target-cpu-usage=TARGET_CPU_USAGE替换以下内容:
INSTANCE_ID:读取池实例的 ID。READ_POOL:指定实例类型。NODE_COUNT:读取池实例中的节点数量。指定1到20(含)之间的数字。请注意,一个集群中的所有读取池实例最多可以有 20 个节点。REGION_ID::实例所在的区域。CLUSTER_ID:实例所在集群的 ID。PROJECT_ID:集群所在项目的 ID。MAX_NODE_COUNT:自动扩缩器可在读取池实例中创建的节点数上限。单个集群中所有读取池实例的节点总数不得超过 20 个。TARGET_CPU_USAGE:读取池实例的目标 CPU 利用率,以介于 0.0 到 1.0 之间的小数值表示。例如,0.7 表示 70%。
创建具有基于时间表的政策的读取池实例
如需创建具有基于时间表的自动扩缩政策的读取池实例,该政策可为特定时间窗口定义最少节点数,请运行以下命令:
gcloud alloydb instances create INSTANCE_ID \
--instance-type=READ_POOL \
--read-pool-node-count=NODE_COUNT \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--enable-autoscaler \
--autoscaler-max-node-count=MAX_NODE_COUNT \
--autoscaler-set-schedule=SCHEDULE_NAME \
--autoscaler-schedule-cron-exp