代管式自动扩缩器

本页面介绍了代管式自动扩缩器的工作原理,以及费用和 使用代管式自动扩缩器时存在的限制。它还为 可帮助您确定如何配置代管式自动扩缩器。

代管式自动扩缩器的工作原理

启用代管式自动扩缩器后,Spanner 会自动根据 实例大小代管式自动扩缩器功能会对更改做出响应 实例工作负载或存储空间需求的减少。 托管式自动扩缩功能可以纵向扩容(为实例增加计算容量), 或者缩容,移除实例的计算容量。

配置代管式自动扩缩器时,您可以使用处理单元 小型实例为节点;对于大型实例,则使用节点。在本文档中,我们将使用 计算容量来表示节点或处理单元。

Spanner 代管式自动扩缩器决定了 容量,具体取决于以下各项:

  • 高优先级 CPU 利用率目标
  • 存储空间利用率目标
  • 最低限额
  • 最大限额

每个伸缩维度都会生成一个建议的实例大小, Spanner 会自动使用最高的一个。这意味着,对于 例如,如果您的实例需要 10 个节点才能满足存储空间利用率 目标,但有 12 个节点以满足您的 CPU 利用率目标,Spanner 会将实例扩容到 12 个节点。

随着计算容量的变化,Spanner 持续 可优化存储空间它会重新平衡所有服务器中的数据 以确保流量均匀分布,且不会有个别服务器过载。 如需了解详情,请参阅限制

如果托管式自动扩缩器将实例扩容到其上限,但 但工作负载的 CPU 利用率仍高于 目标,工作负载请求的 延迟或失败如果实例纵向扩容到其最大计算容量目标 但工作负载需要的存储空间超过存储空间上限, 请求可能会失败要了解是否达到了最高目标值,您可以查看 Google Cloud 控制台中的代管式自动扩缩器系统事件日志 系统数据分析页面。如需了解详情,请参阅 存储空间上限

Spanner 对实例进行纵向缩容时,会移除计算容量 以低于纵向扩容时的速率,以减少对延迟时间的影响。

费用

您的 Spanner 总费用可能会较低或较高,具体取决于 在启用 以及您为代管式自动扩缩器设置的限制。

例如,如果您以前手动配置 Spanner 让实例有足够的计算容量来随时处理峰值工作负载, 托管式自动扩缩器的费用可能会较低 计算容量

如果您以前手动将 Spanner 实例配置为 可满足一般工作负载的计算容量,但总体性能会降低 当工作负载流量增加时,使用代管式自动扩缩器时产生的费用 可能会更高,因为代管式自动扩缩器可能会增加计算容量 在实例繁忙时启动不过,这样可为您的用户提供更多 性能稳定

您可以限制 Spanner 实例的费用上限 将节点或处理单元数上限设置为您希望 支出。

限制

启用或更改代管式 自动扩缩功能

  • 在以下情况下,您无法移动实例: 托管式自动扩缩器功能已启用。您必须先停用 然后移动实例移动实例后,您可以 重新启用托管式自动扩缩器。
  • 您必须将自动扩缩实例的最小限制设置为 1000 处理单元或更多,或者 1 个或更多节点。
  • 对现有实例启用自动扩缩时,现有实例 容量可以低于您设置的 在托管式自动扩缩器上进行配置。 但是,实例会自动扩容到配置的最小值 值。例如,如果您的实例有一个节点,但您 将最小值设为两个节点,那么当您启动实例时, 可自动扩容至最多 2 个节点

代管式自动扩缩器参数

当您创建或修改实例并选择启用代管式自动扩缩器时, 您可以定义下表中显示的值。

参数 说明
高优先级 CPU 利用率目标 实例的高优先级 CPU 容量的百分比。此值 必须介于 10% 到 90% 之间。当实例的 CPU 利用率超过 所设目标值,Spanner 会立即将计算 为实例分配容量当 CPU 利用率大大低于 Spanner 会移除计算容量。如需相关指导, 请参阅 确定 CPU 利用率目标
存储空间利用率目标 节点上可供之前可用的存储空间百分比 Spanner 纵向扩容。此目标可确保 有足够的计算容量来处理存储的数据量波动。 该值必须介于 10-99% 之间。如需指导,请参阅 确定存储空间利用率目标
最低限额 系统为 Cloud Storage 存储分区 Spanner 会将实例缩容到。最小值不能 低于您为最高限额设置的值的 10%。例如: 如果上限为 40 个节点,则下限必须至少为 4 节点。10% 的要求是硬性限制。 对于 指南,请参阅确定最低限制
上限 Spanner 可扩缩的最高计算容量 实例。对于节点,此值必须大于 1 个节点(或 1000 个处理单元)且大于或等于 1000 个处理单元的 节点或处理单元该值不能超过 您为最小计算容量选择的数值。这 10 个 次数要求是一个硬性限制。如需指导,请参阅 确定上限

配置代管式自动扩缩器

本部分介绍了如何确定为受管理的账号选择哪些号码 自动扩缩器参数。设置初始值后 监控您的实例并根据需要调整数量。

确定 CPU 利用率目标

实例的最佳目标取决于延迟时间和吞吐量 工作负载要求查看我们针对 CPU 使用率上限提供的建议 如需了解单区域、双区域和多区域实例配置,请参阅 CPU 利用率高的提醒

通常,如果观察到延迟时间过长,则应降低 CPU 利用率目标。

确定存储空间利用率目标

对于自动扩缩,存储空间利用率目标表示为 节点。对于具有 1 个节点(1000 个处理单元)及更大容量的实例, 上限为每个节点 4 TB。

确定上限

您选择的最大计算容量值等于 实例处理实例所需的计算容量 流量最多,即使您预计在大部分时间里不会达到 。Spanner 扩容后的计算容量绝不会超过它 需求。您也可以将此数字视为 您愿意为其付费的容量请参阅 如需详细了解可接受的值,请参阅自动扩缩器参数

此上限必须允许 CPU 利用率目标和 您为自动扩缩设置的存储空间利用率目标。

  • 将实例从手动分配更改为代管式 请根据实例自动扩缩 在过去一两个月的转化率代管式自动扩缩器上限 上限至少应该达到这么高

  • 如果要为新实例启用代管式自动扩缩器,请查看 指标,并在设置 上限。

  • 如果您有新的工作负载,并且不确定其增长情况, 您可以估算满足 内置的存储空间利用率目标,日后再调整该数值。

您还需要知道节点上还剩多少配额,因为 代管式自动扩缩器无法将您的实例配置为具有更多计算容量 超过配额如需了解详情,请参阅节点限制

在实例启动并运行并启用自动扩缩后 监控实例,并确保您为 此上限至少与 CPU 目标的建议上限一样高 以及存储目标的建议上限

确定最低限制

您为代管式自动扩缩器设置最低限制,以确保您的 Spanner 实例可以缩容到最小、 具有成本效益的大小Spanner 会自动阻止该节点 使 CPU 数量降至保持 CPU 和存储空间 利用率目标

托管式自动扩缩器允许的最小值为 1 个节点或 1,000 处理单元如果您为已拥有该实例组的现有实例启用自动扩缩, 容量小于为托管式自动扩缩器配置的最小值, 实例会在您启动后自动扩容到这个最小值。

启动启用了托管自动扩缩的实例后,您应该执行 进行初始测试,确保其可在最小规模下正常运行。您应该测试 以确保其继续按预期运行。

如需详细了解可接受的值,请参阅 本文档中的代管式自动扩缩器参数

在许多情况下,您需要将最小值设为多个值。请选择一个 或在下列情况下提高下限:

  • 您有一个即将到来的峰值事件,预计您的流量将达到 您需要确保有足够的计算资源 容量。
  • 应用发送的流量急剧增加。添加新的计算容量时 Spanner 会自动进行再平衡,以使用新节点或 处理单元由于此过程可能需要几分钟的时间,因此您可能需要 可以考虑采用保守的方法,选择较高的 最低。这样,您的实例就可以顺畅地应对高峰时段。
  • 增加计算容量上限。最小值必须始终为 10 不超过计算容量目标上限的百分比。例如,如果您 将节点数上限设置为 30,则必须设置 节点数量至少增加至 3

如果您增加实例上最小计算容量的值, Spanner 会立即尝试将实例扩容到新的 最低。标准限制条件 。配额用尽时,系统会请求更改代管式自动扩缩器 配置失败,配置也未更新。

Google Cloud CLI 参数标志和限制

使用 Google Cloud CLI 配置代管式自动扩缩器时,需要注意以下几点: 两个必需标志还有一些可选标志 是要使用节点还是处理单元。如需详细了解 使用代管式自动扩缩器创建新实例,或者启用代管式 自动扩缩,请参阅以下内容:

在 Google Cloud 控制台上启用代管式自动扩缩器时,必须使用以下标志 实例:

  • autoscaling-high-priority-cpu-percent
  • autoscaling-storage-percent

如果您选择使用节点,则在 则启用代管式自动扩缩器:

  • autoscaling-min-nodes
  • autoscaling-max-nodes

如果您选择使用处理单元,则还必须同时使用以下两种方法: 标志:

  • autoscaling-min-processing-units
  • autoscaling-max-processing-units

将代管式自动扩缩器添加到 现有实例:

  • 您不能将 --nodes 标志与 --autoscaling-min-nodes--autoscaling-max-nodes 标志,因为使用 --nodes 会设置特定的 而非伸缩范围同样,您也不能使用 --processing-units 标志,并且设置为 autoscaling-min-processing-unitsautoscaling-max-processing-units标记,因为使用 --processing-units 会设置特定数量的处理单元, 超过伸缩范围。
  • 您不能将节点和处理单元的标志混合在一起。对于 例如,您不能将 --autoscaling-max-nodes 用于 autoscaling-min-processing-units.

微调设置

请留意计算容量使用情况并调整您的设置,如有 这对您来说尤为必要,尤其是在首次启用代管式自动扩缩器之后。我们建议 使用系统数据分析页面 Google Cloud 控制台。

访问权限控制

如需配置代管式自动扩缩器,您需要是具备以下角色的角色: 创建和更新权限 实例配置。

监控

Spanner 提供了多个指标来帮助您了解 托管式自动扩缩器在扩容和缩容的过程中能够正常运行 工作负载要求这些指标还可以帮助您衡量设置 是满足企业工作负载和费用要求的最优方案。例如: 如果您观察到实例的节点数通常接近于最大数量 则可以考虑提高上限。要详细了解 监控 Spanner 资源,请参阅 使用 Cloud Monitoring 监控实例

以下指标 以图表形式显示System Insights 页面。您还可以使用 Cloud Monitoring

  • spanner.googleapis.com/instance/autoscaling/min_node_count
  • spanner.googleapis.com/instance/autoscaling/max_node_count
  • spanner.googleapis.com/instance/autoscaling/min_processing_units
  • spanner.googleapis.com/instance/autoscaling/max_processing_units
  • spanner.googleapis.com/instance/autoscaling/high_priority_cpu_target_utilization
  • spanner.googleapis.com/instance/autoscaling/storage_target_utilization

日志记录

Spanner 每次扩缩时都会创建一个系统事件审核日志。 实例。

您可以在以下位置查看托管式自动扩缩器系统事件日志: Google Cloud 控制台中的系统数据分析页面。

您还可以使用日志浏览器查看日志:

  1. 在 Google Cloud 控制台中,打开日志浏览器:

    转到日志浏览器

  2. 选择相应的 Google Cloud 项目。

  3. 查询字段中,输入以下查询:

     protoPayload.methodName="AutoscaleInstance"
    

    您可以添加以下查询,以进一步过滤到日志中:

    resource.type="spanner_instance"
    resource.labels.instance_id=INSTANCE_ID
    resource.labels.project_id=PROJECT_ID
    logName="projects/span-cloud-testing/logs/cloudaudit.googleapis.com%2Fsystem_event"
    protoPayload.methodName="AutoscaleInstance"
  4. 点击运行查询

查询结果窗格显示过去一小时的日志。

如需详细了解如何查看日志,请参阅 Cloud Logging。 您可以设置基于日志的提醒 Google Cloud页面中,或使用 Cloud Monitoring API

后续步骤