Docs 菜单
Docs 主页
/ /

配置自动伸缩

Atlas使用自动伸缩进行集群计算,通过调整集群层帮助您优化资源利用率和费用。 Atlas使用存储自动伸缩来帮助您自动增加集群存储容量。

在本节中,您可以学习;了解:

  • 集群层自动伸缩:预测性和响应性

  • 集群层的响应式自动伸缩

  • 集群层的预测性自动伸缩

  • 集群存储自动伸缩

  • 配置自动伸缩选项

  • 自动伸缩事件警报

  • 在操作日志中查看自动伸缩事件

  • MongoDB对Atlas自动伸缩的支持

Atlas对集群层使用响应式和预测式自动伸缩。 Atlas会根据集群的类型、层级和工作负载模式选择自动伸缩机制。

  • 响应式自动伸缩。 Atlas使用阈值而不是预测来触发基于当前资源使用情况的扩展事件。被动式自动伸缩发生在资源使用率持续偏高或偏低的情况下。要学习;了解更多信息,请参阅集群层的响应式自动伸缩。

  • 预测性自动伸缩。 Atlas使用机器学习根据历史使用模式预测未来的扩展需求,并尝试在预测的工作负载峰值到来之前触发扩展事件。

    预测性自动伸缩是集群层自动伸缩的扩展,可以回退到反应式自动伸缩。 Atlas继续依靠响应式自动伸缩来管理非周期性或不可预测的意外工作负载峰值。 Atlas对符合条件的集群使用预测性自动伸缩。要学习;了解更多信息,请参阅集群层的预测性自动伸缩。

重要

如果您在Atlas中创建一个集群,并且该集群符合响应式自动伸缩和预测性自动伸缩的条件,并且您使用Atlas用户界面,则默认情况下会为新集群启用预测性和响应式自动伸缩机制。然后, Atlas会根据集群的类型、层级和工作负载使用自动伸缩机制。如果使用Atlas Administration API,则必须显式启用自动伸缩。

注意

自动扩展术语使用

在所有Atlas文档中,只要使用自动伸缩术语而不使用“预测”一词,则指的是响应式自动伸缩机制。另请参阅预测性自动伸缩。

您可以配置 Atlas 使用的集群层范围,以根据集群使用情况自动扩展集群层和/或存储容量。

为了优化资源利用率并改善费用状况, Atlas反应式自动伸缩可检测持续较高的需求和短期峰值流量,并根据实时资源使用情况调整集群层。

为了帮助控制成本,您可以指定集群可自动伸缩到的最大和最小集群大小范围。

响应式自动伸缩以滚动方式运行,并且该进程不会导致任何停机。在此进程中, Atlas会维护一个主节点 (primary node in the replica set)节点,但节点会逐个升级,并且在升级时不可用。

要学习;了解可扩展性的建议,包括在使用具有响应式自动伸缩的基础架构即代码工具时避免资源漂移,请参阅Atlas架构中心的Atlas可扩展性建议。

Atlas 集群层级响应式自动伸缩适用于 GeneralLow-CPU集群类下的所有专用集群层。

重要

Flex 集群不符合响应式自动伸缩的条件。

注意

层可用性

响应式自动伸缩适用于GeneralLow-CPU 类中的集群层,但不适用于 Local NVMe SSD类中的集群。

Atlas分析以下集群指标,以确定何时对集群进行被动扩展,以及是扩展还是缩减集群层:

  • 规范化系统 CPU 利用率

  • 系统内存利用率

Atlas 会根据可用节点内存和总内存来计算系统内存利用率,如下所示:

(memoryTotal - (memoryFree + memoryBuffers + memoryCached)) / (memoryTotal) * 100

在前面的计算中,memoryFreememoryBuffersmemoryCached 是 Atlas 可以回收用于其他目的的可用内存量。要了解更多信息,请参阅查看可用指标中的 System Memory(系统内存)部分。

如果新的集群层超出指定的 MinimumMaximum Cluster Size 范围,Atlas 不会扩展您的集群层。

Atlas 可将您的集群扩展到同一类中的其他层。例如,Atlas 可将 General 集群扩展到其他 General 集群类型,但不会将 General 集群扩展到 Low-CPU 集群类型。

为了确保适当的集群资源利用率,确切的响应式自动伸缩标准可能会发生变化。

重要

迁移期间,如果待恢复的快照大于目标集群的存储容量,则集群不会自动扩展。

如果您部署只读节点并希望集群更快地扩展,请考虑调整副本集扩展模式。

为了管理应用程序的动态工作负载, Atlas会在本节描述的条件下被动扩展集群中的节点。

如果下一个集群层级在您的 Maximum Cluster Size 范围内,且该类型集群中的任意一个节点至少满足以下条件之一,Atlas 会将集群中的操作节点扩展至下一层级。

注意

以下列表将 CPU 相关标准分组在一起,然后是内存相关标准。在每个组中,标准按从最严格到最宽松的顺序排列,特定云提供商的标准如果存在,则优先显示。

  • M10M20 个集群:

    • AWS。过去 20 分钟内,标准化的平均相对系统 CPU 利用率已超过 90%,而在过去 3 分钟内,非标准化的平均绝对系统 CPU 利用率对于 CPU 窃取已超过 30%。

    • Azure。过去 20 分钟内,标准化的平均相对系统 CPU 利用率已超过 90%,在过去 3 分钟内,softIRQ 的非标准化平均绝对系统 CPU 利用率已超过 10%。

    • 过去 20 分钟内,标准化的平均绝对系统 CPU 利用率已超过集群可用资源的 90%。

    • 过去一小时内,平均标准化相对系统 CPU 利用率已超过集群可用资源的 75%。

    • 在过去 10 分钟内,平均 System Memory Utilization 已超过集群可用资源的 90%。 要学习;了解Atlas如何计算系统内存利用率,请参阅Atlas如何扩展集群层。

    • 过去一小时内,平均 System Memory Utilization 已超过集群可用资源的 75%。

  • M30+ 集群:

    • 过去 10 分钟内,平均System CPU Utilization已超过集群可用资源的 90%。

    • 过去一小时内,平均 System CPU Utilization 已超过集群可用资源的 75%。

    • 过去 10 分钟内,平均System Memory Utilization已超过集群可用资源的 90%。

    • 过去一小时内,平均 System Memory Utilization 已超过集群可用资源的 75%。

这些阈值可确保集群在高负载时快速扩展,并且应用程序可以处理流量或使用量的峰值,从而保持性能和可靠性。

注意

本节中的条件描述了操作节点。对于任意云提供商上的分析节点,如果过去一小时内平均标准化 System CPU UtilizationSystem Memory Utilization 超过任一集群节点可用资源的 75%,Atlas 便会将这些节点扩展到下一个层级。

为实现最佳资源利用率和成本配置,Atlas 会在以下情况下避免将集群扩展到下一个层级:

  • M10M20 集群在过去 20 分钟或 1 小时内已进行扩展,具体取决于阈值。

  • M30+ 集群在过去 10 分钟或 1 小时内已进行扩展,具体取决于阈值。

例如,如果自 12:00 以来集群层没有发生变化,则当集群的当前标准化系统 CPU 利用率大于 90% 时,Atlas 将在 12:10 扩展 M30+ 集群。

重要

工作负载突然激增

扩展至更大的集群层需要足够的时间来准备后备资源。当集群接收到大量活动(如批量插入)时,可能不会进行自动伸缩。为了降低资源耗尽的风险,请计划在批量插入和其他工作负载高峰之前扩展集群。

为了优化成本, Atlas会在本节描述的条件下以被动方式缩减集群中的节点。

如果下一个最低的集群层在 Minimum Cluster Size 范围内,并且指定集群类型的所有节点都满足以下所有条件,则 Atlas 会将集群中的节点缩减到下一个最低层:

  • 所有节点:

    • Atlas 在过去的 24 小时内没有缩小集群(无论是手动还是自动)。

    • 在过去 24 小时内,Atlas 没有预配或恢复集群的运行。

    • Atlas在过去 12 小时内未停止和重新启动任何集群节点。

  • 操作节点:

    • 在至少过去 10 分钟过去 4 小时内,平均标准化System CPU Utilization低于集群可用资源的 45%。Atlas 将“4 小时平均值”检查点用作 CPU 负载已在观察到的水平上稳定下来的一个指示。Atlas 将“10 分钟平均值”检查点用作一个指示,以表明最近没有发生以下情况:Atlas 未通过“4 小时平均值”检查点来捕获 CPU 峰值。

    • 当前的集群层大小水平上,平均 WiredTiger 缓存使用量在至少过去 10 分钟过去 4 小时内低于最大 WiredTiger 缓存大小的 90%。它向 Atlas 表明当前集群没有出现过载。

    • 在新的较低集群层水平,预计总系统内存利用率在至少过去 10 分钟过去 4 小时内低于 60%。Atlas 按如下方式计算前面语句中提到的预计总内存使用量

      Atlas 会测量当前的内存使用量,并将当前的 WiredTiger 缓存使用量替换为新的较低级别集群上的 WiredTiger 缓存大小的 80%。

      接下来,Atlas 会检查在新的层级大小水平上,预计总内存使用量是否至少在过去 4 小时和 10 分钟内低于 60%。

      注意

      Atlas 会在其内存计算中包含 WiredTiger 缓存,以使具有完整缓存但流量较低的集群更有可能缩减。换言之,Atlas 会检查 WiredTiger 缓存的大小,以确定在集群的 WiredTiger 缓存可能达到集群最大 WiredTiger 缓存大小的 90% 的情况下,它可以安全地缩减标准化系统 CPU 利用率较低的空闲集群。

    这些条件可确保 Atlas 缩减集群中的操作节点,防止出现高利用率状态。

  • 分析节点:

    • 过去 24 小时的平均 Normalized System CPU UtilizationSystem Memory Utilization 低于集群可用资源的 50%。

    注意

    M10M20 集群使用较低的阈值来考虑云提供商在突发周期后设置的 CPU 使用上限。这些阈值因您的云提供商和集群层而异。

Atlas 使用与副本集相同的条件自动伸缩分片集群的集群层。Atlas 会应用以下规则:

  • 对于启用了独立分片扩展的集群, Atlas中的自动伸缩会独立评估和扩展每个分片。独立分片扩展要求最小分片大小不小于最大分片以下的两个集群层,以保持可用性和性能。如果Atlas为此类集群触发自动伸缩,并扩展最大的分片,它还会在必要时扩展较小的分片,以确保一致的可用性和性能。

  • 如果分片内的操作或分析节点满足自动伸缩的条件,则只有该特定分片上的操作或分析节点会更改层级。

  • 配置服务器副本集不会自动伸缩。

从 API 资源版本2024-08-05 的版本化 Atlas Administration API 开始,您可以独立扩展每个分片的集群层。此 API 版本对 Atlas 集群的底层扩展模型进行了重大更改。

警告

2024-08-05 API 版本是一项重大变更。如果您使用新 API 发送请求从而以非对称方式描述集群内的分片,则之前的仅对称 API 将无法再用于该集群。要返回到上一 API 版本,首先需重新配置该集群,以使所有分片在同一层级上运行。

新的 API 能够描述非对称集群。新 API 架构中不存在 replicationSpec.numShards 字段。相反,即使在所有分片配置相同的对称集群中,每个分片也由单独的 replicationSpec 指定。

预测性自动伸缩是自动伸缩的扩展。

Atlas使用需求预测来预测托管资源利用率,并先发制人地扩展集群计算,以确保实现最佳资源利用率。通过预测性自动伸缩, Atlas尝试在周期性工作负载负载峰值之前主动扩展集群。

预测性自动伸缩由...提供支持基于历史模式的机器学习模型提供支持。如果模型预测资源利用率很高,则Atlas会纵向扩展集群。 MongoDB不断更新模型及其标准,以优化Atlas性能。

预测性自动伸缩对于具有预测性、周期性工作负载的集群具有以下好处:

  • 根据周期性工作负载模式(示例每日或每周峰值)自动扩展集群。

  • 在可预测的高需求期间保持一致的性能和可用性。

  • 让Atlas管理容量增加,从而减少手动扩展任务或计划脚本。

  • 当集群工作负载的变更超出可预测模式且非周期性或不可预测时,无缝回退到响应式自动伸缩。

以下语句描述了预测性自动伸缩的工作原理:

  • Atlas会尝试在预测负载到达之前扩展集群实例大小。

  • 当Atlas根据预测指标对集群进行预测性扩展时,它一次最多可以扩展两层。

  • 预测性自动伸缩仅适用于计算,不适用于存储。

  • 预测性自动伸缩遵循现有自动伸缩的最小和最大实例大小。

  • 当Atlas无法使用预测性自动伸缩来扩展集群时,它会转而使用响应式自动伸缩。

  • 预测性自动伸缩仅支持升级。不存在预测性缩减。 Atlas使用响应式自动伸缩,在工作负载减少时自动缩减集群扩展。

  • 如果预测性扩展计划在接下来的 1 小时内进行,则Atlas会跳过被动式缩减。

  • 如果您使用独立分片扩展,并在集群上启用并激活预测性自动伸缩后添加一个或多个分片,则这些新分片不会进行预测性自动扩展,直到两周后,即确定其工作负载模式。同时,这些分片在Atlas中使用响应式自动伸缩行为。

Atlas对符合条件的集群使用预测性自动伸缩。符合预测性自动伸缩的集群必须满足以下所有条件:

  • 属于 GeneralLow-CPU集群类。

  • 层级大于 M30

  • 启用自动伸缩。如果启用缩减,自动伸缩的最小实例大小应等于或大于 M30

  • 已活跃至少两周。

  • 不使用NVMe 存储或不属于Local NVMe SSD 集群类。

此外,以下条件会影响Atlas是否对符合条件的集群使用预测性自动伸缩:

  • 预测性自动伸缩仅适用于可选节点和只读节点。 Atlas不会对搜索或分析节点使用预测性自动伸缩。

  • 预测性自动伸缩可能无法预测任何符合条件的集群中的非周期性和高度动态的工作负载负载峰值。在这些情况下, Atlas依赖于响应式自动伸缩。

Atlas 默认启用集群存储自动扩展。当集群中任何节点的磁盘空间使用率达到 90% 时,Atlas 会自动增加集群存储。

要选择退出集群存储扩展,请取消选中 Auto-scale(存储扩展)部分中的 Storage Scaling(存储扩展)复选框。

以下注意事项适用:

  • Atlas仅自动向上扩展集群存储。您可以在“编辑集群”页面中手动减少集群存储。

  • AWSAzureGCP 集群上,Atlas 增加了集群存储容量,实现了 70% 的磁盘空间使用率。要了解更多信息,请参阅AWS 上更改存储容量或 IOPSAzure 上更改存储容量和 IOPS 以及在 Google Cloud 上更改存储容量

  • 如果您计划扩展集群,请避免高速写入活动。将集群扩展到更大的存储容量需要足够时间来准备数据并将其复制到新磁盘。如果集群突然出现高速写入活动(如批量插入),由于磁盘存储容量暂时激增,可能无法进行自动扩展。为了降低磁盘存储空间不足的风险,请计划在批量插入和其他高速写入活动实例之前扩展集群。

  • 如果您为基本节点指定一个集群层类,并为分析节点指定另一个不同的集群层类,则 Atlas 会禁用磁盘自动扩展。例如,如果您在 Base Tier 中为操作节点指定 General 集群类,并在 Analytics Tier 中为分析节点指定 Low-CPU 集群类,则 Atlas 将禁用磁盘自动扩展,并显示以下错误消息:Disk auto-scaling is not yet available for clusters with mixed instance classes

  • 如果您在不同的云提供商区域中部署Base TierAnalytics Tier 节点, Atlas会禁用磁盘响应式自动伸缩。

作为自动伸缩的一部分,当Atlas尝试自动扩展集群存储容量时,它可能需要将存储扩展到当前集群层支持的范围之外。为了帮助确保您的集群不会出现任何停机, Atlas会扩展您的集群层(除了集群存储之外)以适应新的存储容量。

Azure 上,如果您在某一支持扩展存储的区域中部署的集群上启用自动扩展,并且当前 IOPS 低于自动扩展磁盘大小的默认 IOPS,则 Atlas 会在 IOPS 滑块中增加分配的 IOPS 数量,并在用户界面中通知您。要了解更多信息,请参阅Azure 上更改存储容量和 IOPS

例子

M30集群的最大存储容量为 480 GB。如果您的 M30 集群分配了最大存储空间,并且磁盘空间使用率已达到 90%,则存储自动伸缩事件需要将存储容量增加到 600 GB。在本例中,Atlas 会将您的集群层扩展到 M40,因为这是可以支持所需要的新存储容量的最低集群层。在 Azure 上,如果您将集群部署在支持扩展存储的区域之一,Atlas 还会自动增加 IOPS,以匹配该层集群的 IOPS 水平。

如果您指定的最大群集层无法支持新的存储容量,Atlas 会:

  1. 将最大集群层提升到可容纳新存储容量的下一个最低层。

  2. 将集群层扩展至新的最高层。

注意

当 Atlas 覆盖您的最大集群层时,它还会为您的集群禁用自动缩减。如要重新启用向下自动伸缩,请在集群设置中进行相应配置。另请参阅向下自动伸缩集群层和存储的注意事项

如果 Atlas 尝试缩减您的集群层,而目标层无法支持您当前的磁盘容量和/或预配的 IOPS,则 Atlas 不会缩减您的集群。在这种情况下,Atlas 会根据当前集群层与配置的最大集群层之间的关系来更新您的自动伸缩设置:

  • 如果集群当前处于配置的最大集群层,Atlas 会禁止集群自动缩小规模,因为所有较小的层将无法容纳必要的存储设置。如果要重新启用向下自动伸缩,则必须在群集设置中手动执行此操作。

  • 如果集群当前未处于配置的最大集群层,Atlas 会将最小集群层提升至当前集群层。在这种情况下,Atlas 不会禁用向下自动伸缩。

当存储设置与工作负载不匹配时,这种自动扩展逻辑可减少停机时间。

Atlas 会根据最小 oplog 保留窗口或 oplog 大小来管理 oplog 条目,具体取决于您是否选择使用存储自动伸缩。要了解详情,请参阅 Oplog 大小行为。Atlas 默认启用存储自动伸缩。

  • 当 Atlas 缩减集群的存储容量时,由于伸缩过程的机制,这可能要比扩展存储容量花费更长的时间。

  • 估算部署的工作负载范围,然后将 Minimum Cluster Size 的值设置为具有足够容量来处理部署工作负载的集群层。请考虑集群活动中任何可能的峰值或低谷。

  • 您无法扩展到小于 M10 的集群层。

  • 您选择的最低集群层不能低于集群的当前磁盘配置。如果您的存储增加超出了最低集群层支持的范围,并且Atlas增加的集群存储配置超出了最低集群层支持的范围,则Atlas会自动将您的最低集群层调整到支持集群当前存储要求的层级。

    例子

    您已将自动伸缩边界设立为 M20 - M60 ,当前集群层为 M40,磁盘容量为 200 GB。Atlas 会触发磁盘自动伸缩事件,将容量增加到 320 GB ,因为当前磁盘使用量超过 180 GB,即超过 200 GB容量的 90%。

    Atlas采取以下行动:

    1. 将集群层级下限提升到可容纳新存储容量的下一个最低层级 M30M20 支持的最大存储容量为 256GB,因此它不再是有效的自动伸缩限制。

    2. 确定当前实例大小 M40 支持新的磁盘配置。磁盘自动伸缩事件成功。

创建修改集群时,您可以配置自动伸缩选项。对于新集群,Atlas 会自动启用集群层自动伸缩和存储自动伸缩。

您可以执行下列操作之一:

  • 查看并调整 Atlas 在自动扩展集群时应使用的集群层上限和下限,或者

  • 选择退出,不使用自动缩放。

Atlas 会在集群构建器的 Auto-scale 部分显示 GeneralLow-CPU 层集群的自动伸缩选项。

创建新集群时, Atlas会为集群层和集群存储启用自动伸缩(预测性和响应性)。 (预测性自动伸缩仅影响集群层,不影响存储。)您无需显式启用自动伸缩。如果您愿意,可以选择退出集群层和集群存储。

注意

当您在 Atlas UI 中创建集群时,Atlas 会默认启用集群层自动伸缩。如果您使用 API 创建集群,默认情况下不会选择集群自动伸缩,您必须在一个项目中更新一个集群终结点的 autoScaling 对象中明确启用该功能。

启用自动伸缩后,您的集群可以自动执行以下操作:

  • 根据集群和工作负载负载资格,使用反应性或预测性自动伸缩,通过更高的集群层进行扩展以增加功能。

  • 使用 响应式自动伸缩将当前集群层降低到较低的集群层。

Auto-scale选项的Cluster tier部分中,您可以指定集群可自动扩展到的Maximum Cluster SizeMinimum Cluster Size值。Atlas 会按以下方式设置这些值:

  • 已将Maximum Cluster Size设为当前集群层的上一层级。

  • 已将 Minimum Cluster Size(最小集群大小)设为当前集群层。

此外,如果您的集群符合条件并且其工作负载是周期性且可预测的,则Atlas可能会使用预测性自动伸缩。

要查看已为集群层和存储启用的自动伸缩选项,请执行以下操作:

  1. 在选定的Auto-Scale复选框中,检查Maximum Cluster SizeMinimum Cluster Size值,并根据需要进行调整。

  2. 查看创建新群集时默认选中的 Allow cluster to be scaled down(允许缩减集群)选项。

  3. 查看 Storage Scaling(存储伸缩)复选框下默认选中的选项。

要选择退出集群自动伸缩(增加集群层),请在创建新集群时导航到 Cluster Tier(集群层)菜单,然后取消选中 Auto-scale(自动伸缩)部分中的 Cluster Tier Scaling(集群层伸缩)复选框。

要选择禁用集群自动缩放(降低集群层),请在创建新集群时导航至 Cluster Tier(集群层)菜单,然后取消选中 Auto-scale(自动伸缩)部分的 Allow cluster to be scaled down(允许集群缩减)复选框。

您可以查看操作日志,以查看每个Atlas项目的事件。发生任何自动伸缩事件时, Atlas都会将该事件记录在项目Activity Feed 中。

Atlas使用以下Atlas 审核自动伸缩事件。

要仅查看或下载自动扩展事件,请执行以下操作:

  1. 在 Atlas 中,前往 Project Activity Feed 页面。

    1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

    2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

    3. 在侧边栏中,单击 Security 标题下的 Activity Feed

      显示项目操作日志页面。

  2. Activity Feed 中,单击 Filter by event(s) 菜单并检查 Atlas

  3. 在列表上方的搜索框中,开始输入 auto-scaling

    在菜单的右侧,将显示所有自动扩展事件。取消选择任何你不想看到的内容。操作列表会根据您所做的每次更改而自动更新。

重要

在 2024 年 8 月初,Atlas 使用可配置的自动扩展事件替换了旧版自动扩展通知电子邮件。默认情况下,Atlas 会继续向项目所有者发送所有警报通知。您可以自定义自动扩展警报分配以更改警报接收者或分配方法。

自动伸缩活动是 Atlas 警报的子集。

每次Atlas触发任何自动伸缩事件时,您都会收到默认的Atlas警报。

您可以在项目级别选择退出或更改部分或全部自动扩展事件的警报配置。

要修改警报配置,请在Category Atlas Auto ScalingCondition/Metric部分中选择 ,然后从列表中选择 。然后,您可以修改警报接收者的角色,更改通知方法(例如电子邮件或短信)以及添加通知程序,例如Slack。要学习;了解更多信息,请参阅配置自动伸缩警报。

如果您有任何问题或顾虑,联系支持。

后退

集群分片

在此页面上