Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

配置自动伸缩

在此页面上

  • Atlas 如何扩展集群层
  • 扩展集群层
  • 缩减集群层
  • 扩展分片集群
  • Atlas 如何扩展集群存储
  • 集群层和集群存储可以并行伸缩
  • Oplog 注意事项
  • 配置自动伸缩选项
  • 默认启用自动伸缩
  • 查看集群层自动伸缩选项
  • 选择取消集群层和存储自动伸缩
  • 查看自动伸缩活动提要
  • 配置自动扩展事件警报

注意

功能可用性

Atlas 集群层自动扩展适用于 GeneralLow-CPU 集群类下的所有专用集群层。

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

Atlas 自动扩展会根据实时资源使用情况调整集群层。改进后的自动扩展引擎现在可以更准确地检测持续更高的需求和短期峰值流量,以便做出升级决策。同样,Atlas 还能更迅速地做出缩减规模的选择,以优化资源利用率和成本状况。

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

自动伸缩以滚动方式运行,并且该过程不会导致任何停机。在此过程中,Atlas 会保留一个主节点,但节点会逐个升级,并且在升级期间将不可用。

注意

层可用性

自动扩展适用于 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。过去 分钟内,平均标准化 9020相对系统 CPU 利用率 已超过 %,而 softIRQ 的平均非标准化 绝对系统 CPU 利用率 在过去 分钟内已超过10 3%。

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

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

    • System Memory Utilization 在过去 10 分钟内已超过集群可用资源的 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以来集群层级没有发生变化,Atlas 将在12:10扩展M30+集群,前提是集群当前的标准化系统 CPU 利用率大于90%。

重要

工作负载突然激增

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

为了优化费用,Atlas 会在本节描述的条件下缩减集群中的节点。

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

  • 操作节点:

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

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

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

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

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

      注意

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

    • 集群在过去 24 小时内未进行缩减(手动或自动)。

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

  • 分析节点:

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

    • 集群在过去 24 小时内未进行缩减(手动或自动)。

    注意

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

  • 当 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. Atlas 确定当前实例大小 M40,支持新的磁盘配置。磁盘自动伸缩事件成功。

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

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

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

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

警告

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

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

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

以下注意事项适用:

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

  • AWSAzureGCP 集群上,Atlas 增加了集群存储容量,实现了 70% 的磁盘空间使用率。要了解更多信息,请参阅更改存储容量或IOPSAWS更改IOPS和存储容量在Azure,以及更改 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 数量,并在 UI 中通知您。要了解更多信息,请参阅 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 会自动启用集群层自动伸缩和存储自动伸缩。

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

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

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

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

当您创建新集群时,Atlas 会为集群层和集群存储启用自动伸缩功能。您无需显式启用自动伸缩。如果您愿意,可以选择退出集群层和集群存储自动伸缩。

注意

当您在 Atlas UI 中创建集群时,Atlas 默认启用集群层自动伸缩。如果使用 API 创建群集,则 Atlas 默认会禁用集群层自动伸缩功能。

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

  • 扩展以通过更高的集群层来增加处理能力。

  • 将当前集群层降至较低的集群层。

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

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

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

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

  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(允许集群缩减)复选框。

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

您可以查看活动提要,来查看每个 Atlas 项目的事件。当发生自动伸缩事件时, Atlas 会在项目 Activity Feed 中记录该事件。

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

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

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

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

重要

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

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

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

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

后退

存储