本页面介绍了代管式自动扩缩器的工作原理,以及费用和 使用代管式自动扩缩器时存在的限制。它还为 可帮助您确定如何配置代管式自动扩缩器。
代管式自动扩缩器的工作原理
启用代管式自动扩缩器后,Spanner 会自动根据 实例大小代管式自动扩缩器功能会对更改做出响应 实例工作负载或存储空间需求的减少。 托管式自动扩缩功能可以纵向扩容(为实例增加计算容量), 或者缩容,移除实例的计算容量。
配置代管式自动扩缩器时,您可以使用处理单元 小型实例为节点;对于大型实例,则使用节点。在本文档中,我们将使用 计算容量来表示节点或处理单元。
Spanner 托管的自动扩缩器会根据以下因素确定所需的计算容量:
- 高优先级 CPU 利用率目标
- 存储空间利用率目标
- 最低限额
- 最大限额
每个伸缩维度都会生成一个建议的实例大小, Spanner 会自动使用最高的一个。这意味着,例如,如果实例需要 10 个节点来满足存储空间利用率目标,但需要 12 个节点来满足 CPU 利用率目标,则 Spanner 会将实例扩容到 12 个节点。
随着计算容量的变化,Spanner 持续 可优化存储空间它会在所有服务器之间重新平衡数据,以确保流量均匀分布,并且没有单个服务器过载。如需了解详情,请参阅限制。
如果托管式自动扩缩器将实例扩容到其上限,但 但工作负载的 CPU 利用率仍高于 目标,工作负载请求可能会 延迟或失败如果实例纵向扩容到其最大计算容量目标 但工作负载需要的存储空间超过存储空间上限, 请求可能会失败如需了解是否已达到上限,您可以在 Google Cloud 控制台的系统数据分析页面上查看托管式自动扩缩器系统事件日志。如需了解详情,请参阅 存储空间上限。
Spanner 对实例进行纵向缩容时,会移除计算容量 以低于纵向扩容时的速率,以减少对延迟时间的影响。
费用
您的 Spanner 总费用可能会降低或增加,具体取决于您在启用托管式自动扩缩器之前对 Spanner 实例的配置方式,以及您为托管式自动扩缩器设置的限制。
例如,如果您以前手动配置 Spanner 让实例有足够的计算容量来随时处理峰值工作负载, 托管式自动扩缩器的费用可能会较低 计算容量
如果您以前手动将 Spanner 实例配置为 可满足一般工作负载的计算容量,但总体性能会降低 当工作负载流量增加时,使用代管式自动扩缩器时产生的费用 可能会更高,因为代管式自动扩缩器可能会增加计算容量 在实例繁忙时启动不过,这样可为您的用户提供更多 性能稳定
您可以将节点数或处理单元数上限设置为您希望的支出水平,从而限制 Spanner 实例的最高费用。
限制
在实例上启用或更改托管式自动扩缩功能时,存在以下限制:
- 在以下情况下,您无法移动实例: 托管式自动扩缩器功能已启用。您必须先停用托管式自动扩缩器,然后再移动实例。迁移实例后,您可以重新启用托管式自动扩缩器。
- 您必须将自动扩缩实例的最小限制设置为 1000 处理单元或更多,或者 1 个或更多节点。
- 在现有实例上启用自动扩缩后,现有实例容量可能会低于您在托管式自动扩缩器上配置的下限值。不过,在您启动实例时,实例会自动扩缩到配置的最小值。例如,如果您的实例有一个节点,但您 将最小值设为两个节点,那么当您启动实例时, 可自动扩容至最多 2 个节点
托管式自动扩缩器参数
当您创建或修改实例并选择启用代管式自动扩缩器时, 您可以定义下表中显示的值。
参数 | 说明 |
---|---|
高优先级 CPU 利用率目标 | 实例的高优先级 CPU 容量的百分比。此值 必须介于 10% 到 90% 之间。当实例的 CPU 利用率超过 所设目标值,Spanner 会立即将计算 为实例分配容量当 CPU 利用率大大低于 Spanner 会移除计算容量。如需获取相关指导,请参阅确定 CPU 利用率目标。 |
存储空间利用率目标 | 节点上可供之前可用的存储空间百分比 Spanner 纵向扩容。此目标可确保 有足够的计算容量来处理存储的数据量波动。 该值必须介于 10-99% 之间。如需指导,请参阅 确定存储空间利用率目标。 |
最低限额 | 您在创建集群时 Spanner 会将实例缩容到。最小值不能 低于您为最高限额设置的值的 10%。例如,如果上限为 40 个节点,则下限必须至少为 4 个节点。10% 的要求是硬性限制。 对于 指南,请参阅确定最低限制。 |
上限 | Spanner 可扩缩的最高计算容量 实例。对于节点,此值必须大于 1 个节点(或 1,000 个处理单元),并且等于或大于节点数或处理单元数下限。该值不能超过 您为最小计算容量选择的数值。这 10 个 次数要求是一个硬性限制。如需指导,请参阅 确定上限。 |
配置代管式自动扩缩器
本部分介绍了如何确定为受管理的账号选择哪些号码 自动扩缩器参数。设置初始值后 监控您的实例并根据需要调整数量。
确定 CPU 利用率目标
实例的最佳目标取决于延迟时间和吞吐量 工作负载要求查看我们针对 CPU 使用率上限提供的建议 如需了解单区域、双区域和多区域实例配置,请参阅 CPU 利用率高的提醒。
通常,如果观察到延迟时间过长,则应降低 CPU 利用率目标。
确定存储空间利用率目标
对于自动扩缩,存储空间利用率目标表示为 节点。对于具有 1 个节点(1000 个处理单元)及更大容量的实例, 上限为每个节点 4 TB。
确定上限
您选择的最大计算容量值等于 实例处理实例所需的计算容量 流量最多,即使您预计在大部分时间里不会达到 。Spanner 扩容的计算容量绝不会超出所需的数量。您也可以将此数字视为 您愿意为其付费的容量请参阅 如需详细了解可接受的值,请参阅自动扩缩器参数。
此上限必须允许 CPU 利用率目标和 您为自动扩缩设置的存储空间利用率目标。
将实例从手动分配更改为代管式 请根据实例自动扩缩 在过去一两个月的转化率代管式自动扩缩器上限 上限至少应该达到这么高
如果要为新实例启用代管式自动扩缩器,请查看 指标,并在设置 上限。
如果您有新的工作负载,并且不确定其增长情况,则可以估算需要满足内置存储空间利用率目标的计算容量,并在稍后再调整该数量。
您还需要知道节点上还剩多少配额,因为 代管式自动扩缩器无法将您的实例配置为具有更多计算容量 超过配额如需了解详情,请参阅节点限制。
在实例启动并运行并启用自动扩缩后 监控实例,并确保您为 此上限至少与 CPU 目标的建议上限一样高 以及存储目标的建议上限
确定最低限额
您可以为托管式自动扩缩器设置最小限制,以确保 Spanner 实例可以缩容到最小、最经济实惠的大小。Spanner 会自动阻止该节点 使 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-units
或autoscaling-max-processing-units
标记,因为使用--processing-units
会设置特定数量的处理单元, 超过伸缩范围。 - 您不能将节点和处理单元的标志混合在一起。例如,您不能将
--autoscaling-max-nodes
与autoscaling-min-processing-units
搭配使用。
微调设置
请留意计算容量使用情况并调整您的设置,如有 这对您来说尤为必要,尤其是在首次启用代管式自动扩缩器之后。我们建议您使用 Google Cloud 控制台中的系统数据分析页面。
访问权限控制
如需配置代管式自动扩缩器,您需要是具备以下角色的角色: 创建和更新权限 实例配置。
监控
Spanner 提供了多个指标来帮助您了解 托管式自动扩缩器在扩容和缩容的过程中能够正常运行 工作负载要求这些指标还可以帮助您衡量设置 是满足企业工作负载和费用要求的最优方案。例如: 如果您观察到实例的节点数通常接近于最大数量 则可以考虑提高上限。要详细了解 监控 Spanner 资源,请参阅 使用 Cloud Monitoring 监控实例。
在 Google Cloud 控制台中的系统数据分析页面上,以下指标显示在图表中。您还可以使用 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 控制台中的系统数据分析页面。
您还可以使用日志浏览器查看日志:
在 Google Cloud 控制台中,打开日志浏览器:
选择相应的 Google Cloud 项目。
在查询字段中,输入以下查询:
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"
点击运行查询。
查询结果窗格显示过去一小时的日志。
如需详细了解如何查看日志,请参阅 Cloud Logging。 您可以设置基于日志的提醒 Google Cloud页面中,或使用 Cloud Monitoring API。
后续步骤
- 了解如何创建实例
- 了解如何修改实例以添加自动扩缩功能或更改自动扩缩设置
- 了解如何将实例从使用自动扩缩更改为使用手动扩缩