配置自动伸缩
在此页面上
注意
功能可用性
Atlas 集群层自动扩展适用于 General 和 Low-CPU 集群类下的所有专用集群层。
您可以配置 Atlas 使用的集群层范围,以根据集群使用情况自动扩展集群层和/或存储容量。
Atlas 自动扩展会根据实时资源使用情况调整集群层。改进后的自动扩展引擎现在可以更准确地检测持续更高的需求和短期峰值流量,以便做出升级决策。同样,Atlas 还能更迅速地做出缩减规模的选择,以优化资源利用率和成本状况。
为了帮助控制成本,您可以指定集群可自动伸缩到的最大和最小集群大小范围。
自动伸缩以滚动方式运行,并且该过程不会导致任何停机。在此过程中,Atlas 会保留一个主节点,但节点会逐个升级,并且在升级期间将不可用。
Atlas 如何扩展集群层
注意
层可用性
自动扩展适用于 General 和 Low-CPU 类中的集群层,但不适用于 Local NVMe SSD 类中的集群。
Atlas 会分析以下集群指标以确定何时伸缩集群,以及是扩展还是缩减集群层:
规范化系统 CPU 利用率
系统内存利用率
Atlas 会根据可用节点内存和总内存来计算系统内存利用率,如下所示:
(memoryTotal
- (memoryFree
+ memoryBuffers
+ memoryCached
)) / (memoryTotal
) * 100
在前面的计算中,memoryFree
、memoryBuffers
和 memoryCached
是 Atlas 可以回收用于其他目的的可用内存量。要了解详情,请参阅查看可用指标中的 System Memory(系统内存)部分。
如果新的集群层超出指定的 Minimum 和 Maximum Cluster Size 范围,Atlas 不会扩展您的集群层。
Atlas 可将您的集群扩展到同一类中的其他层。例如,Atlas 可将 General 集群扩展到其他 General 集群类型,但不会将 General 集群扩展到 Low-CPU 集群类型。
为了确保集群资源利用率适当,确切的自动伸缩标准可能会发生变化。
重要
迁移期间,如果待恢复的快照大于目标集群的存储容量,则集群不会自动扩展。
如果您部署只读节点并希望集群更快地扩展,请考虑调整副本集扩展模式。
扩展集群层
为了有效管理应用程序的动态工作负载,Atlas 会在本节描述的条件下扩展集群中的节点。
如果下一个集群层级在您的 Maximum Cluster Size 范围内,那么对于集群中任何指定类型的节点,如果以下至少一个条件为真,Atlas 就会将集群中的节点扩展到下一个层级:
对于
M10
集群中的运行节点,过去一小时内的平均 Normalized System CPU Utilization(标准化系统 CPU 使用率)或 System Memory Utilization(系统内存使用率)已超过集群可用资源的 75%。对于
M20
集群中的操作节点,平均 Normalized System CPU Utilization 或 System Memory Utilization 已超过集群可用资源的 90% 至少 20 分钟,或者已超过集群可用资源的 75% 至少一小时。对于
M30+
集群中的操作节点,平均 Normalized System CPU Utilization 或 System Memory Utilization 在过去 10 分钟内已超过集群可用资源的 90%,或者在至少一小时内已超过集群可用资源的 75%。这些阈值可确保集群在高负载时快速扩展,并且应用程序可以处理流量或使用量的峰值,从而保持性能和可靠性。
Normalized System CPU Utilization 或 System Memory Utilization 在过去一小时内已超过集群可用资源的 75%。
如果集群在以下情况中没有扩展,Atlas 会将集群扩展到下一层级。
M10+
集群在过去一小时内没有扩展。M20+
集群在过去 20 分钟或 1 小时内未进行扩展,具体取决于阈值。M30+
集群在过去 10 分钟或 1 小时内未进行扩展,具体取决于阈值。
例如,如果集群的当前规范化系统 CPU 利用率大于 90%,Atlas 将以 T+10
扩展 M30+
集群。
重要
工作负载突然激增
扩展至更大的集群层需要足够的时间来准备后备资源。当集群接收到大量活动(如批量插入)时,可能不会进行自动伸缩。为了降低资源耗尽的风险,请计划在批量插入和其他工作负载高峰之前扩展集群。
缩减集群层
为了优化费用,Atlas 会在本节描述的条件下缩减集群中的节点。
如果下一个最低的集群层在 Minimum Cluster Size 范围内,并且指定集群类型的所有节点都满足以下所有条件,则 Atlas 会将集群中的节点缩减到下一个最低层:
在至少过去 4 小时内的平均 Normalized System CPU Utilization(标准化系统 CPU 使用率)低于集群可用资源的 50%。
在当前集群层大小下,WiredTiger 的平均 缓存使用量至少在 4 小时内低于最大 WiredTiger 缓存大小的 90%。这向 Atlas 表明当前集群没有过载。
在至少 4 小时内,新的较低集群层的预计总系统内存利用率低于 60%。Atlas 按如下方式计算前面语句中提到的预计总内存使用量。
Atlas 会测量当前的内存使用量,并将当前的 WiredTiger 缓存使用量替换为新的较低级别集群上的 WiredTiger 缓存大小的 80%。
接下来,Atlas 将检查在新的层级大小下,预计的总内存使用量是否至少在 4 小时内低于 60%。
注意
Atlas 在其内存计算中包含了 WiredTiger 缓存,以使具有完整缓存但流量较低的集群更有可能缩小规模。换句话说,Atlas 会检查 WiredTiger 缓存的大小,以确定在集群的 WiredTiger 缓存可能达到集群最大 WiredTiger 缓存大小的 90% 的情况下,它可以安全地缩减标准化系统 CPU 利用率较低的空闲集群。
集群在过去 24 小时内未进行缩减(手动或自动)。
这些条件可确保 Atlas 缩减集群中的操作节点,防止出现高利用率状态。
过去 24 小时的平均 Normalized System CPU Utilization 和 System Memory Utilization 低于集群可用资源的 50%。
集群在过去 24 小时内未进行缩减(手动或自动)。
注意
M10
和M20
集群使用较低的阈值来考虑云提供商在突发周期后设置的 CPU 使用上限。这些阈值因您的云提供商和集群层而异。
向下自动伸缩集群层和存储的注意事项
当 Atlas 缩减集群的存储容量时,由于伸缩过程的机制,这可能要比扩展存储容量花费更长的时间。
估算部署的工作负载范围,然后将 Minimum Cluster Size 的值设置为具有足够容量来处理部署工作负载的集群层。请考虑集群活动中任何可能的峰值或低谷。
您无法扩展到小于
M10
的集群层。您不能选择低于集群当前磁盘配置的最小集群层。如果您的存储增加,超出了最小集群层支持的范围,Atlas 会增加集群存储配置,超过最小集群层支持的范围,然后 Atlas 会自动将最小集群层调整为支持集群当前存储要求的层级。
例子
您已将自动伸缩边界设立为
M20
-M60
,当前集群层为M40
,磁盘容量为 200 GB。Atlas 会触发磁盘自动伸缩事件,将容量增加到 320 GB ,因为当前磁盘使用量超过 180 GB,即超过 200 GB容量的 90%。Atlas:
将集群层级下限提升到可容纳新存储容量的下一个最低层级
M30
。M20
支持的最大存储容量为 256GB,因此它不再是有效的自动伸缩限制。Atlas 确定当前实例大小
M40
,支持新的磁盘配置。磁盘自动伸缩事件成功。
扩展分片集群
Atlas 使用与副本集相同的条件自动伸缩分片集群的集群层。Atlas 会应用以下规则:
自动伸缩适用于分片集群中的所有分片。您无法对某些分片应用自动伸缩,也不能对同一集群中的其他分片应用自动伸缩。
如果任何分片满足自动伸缩其集群层的标准,则所有分片都将伸缩其集群层。
集群中的所有分片都必须满足条件,Atlas 才会自动缩减集群层。
配置服务器副本集不会自动伸缩。
Atlas 如何扩展集群存储
Atlas 默认启用集群存储自动扩展。当集群中任何节点的磁盘空间使用率达到 90% 时,Atlas 会自动增加集群存储。
以下注意事项适用:
Atlas 仅自动扩展集群存储。您可以在编辑集群页面中手动减少集群存储。
在 AWS、Azure 和 GCP 集群上,Atlas 增加了集群存储容量,实现了 70% 的磁盘空间使用率。要了解更多信息,请参阅更改 AWS 上的存储容量或 IOPS、扩展 Azure 上的存储容量和 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 Tier 和 Analytics 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 会:
将最大集群层提升到可容纳新存储容量的下一个最低层。
将集群层扩展至新的最高层。
注意
当 Atlas 覆盖您的最大集群层时,它还会为您的集群禁用自动缩减。如要重新启用向下自动伸缩,请在集群设置中进行相应配置。另请参阅向下自动伸缩集群层和存储的注意事项。
如果 Atlas 尝试缩减您的集群层,而目标层无法支持您当前的磁盘容量和/或预配的 IOPS,则 Atlas 不会缩减您的集群。在这种情况下,Atlas 会根据当前集群层与配置的最大集群层之间的关系来更新您的自动伸缩设置:
如果集群当前处于配置的最大集群层,Atlas 会禁止集群自动缩小规模,因为所有较小的层将无法容纳必要的存储设置。如果要重新启用向下自动伸缩,则必须在群集设置中手动执行此操作。
如果集群当前未处于配置的最大集群层,Atlas 会将最小集群层提升至当前集群层。在这种情况下,Atlas 不会禁用向下自动伸缩。
当存储设置与工作负载不匹配时,这种自动扩展逻辑可减少停机时间。
Oplog 注意事项
Atlas 会根据最小 oplog 保留窗口或 oplog 大小来管理 oplog 条目,具体取决于您是否选择使用存储自动伸缩。要了解详情,请参阅 Oplog 大小行为。Atlas 默认启用存储自动伸缩。
配置自动伸缩选项
在创建或修改集群时,您可以配置自动伸缩选项。对于新集群,Atlas 会自动启用集群层自动伸缩和存储自动伸缩。
您可以执行下列操作之一:
查看并调整 Atlas 在自动扩展集群时应使用的集群层上限和下限,或者
选择退出,不使用自动缩放。
Atlas 会在集群构建器的 Auto-scale 部分显示 General 和 Low-CPU 层集群的自动伸缩选项。
默认启用自动伸缩
当您创建新集群时,Atlas 会为集群层和集群存储启用自动伸缩功能。您无需显式启用自动伸缩。如果您愿意,可以选择退出集群层和集群存储自动伸缩。
注意
当您在 Atlas UI 中创建集群时,Atlas 默认启用集群层自动伸缩。如果使用 API 创建群集,则 Atlas 默认会禁用集群层自动伸缩功能。
启用自动伸缩后,您的集群可以自动执行以下操作:
扩展以通过更高的集群层来增加处理能力。
将当前集群层降至较低的集群层。
在Auto-scale选项的Cluster tier部分中,您可以指定集群可自动扩展到的Maximum Cluster Size和Minimum Cluster Size值。Atlas 会按以下方式设置这些值:
已将Maximum Cluster Size设为当前集群层的上一层级。
已将 Minimum Cluster Size(最小集群大小)设为当前集群层。
查看集群层自动伸缩选项
要查看已为集群层和存储启用的自动伸缩选项,请执行以下操作:
在选定的Auto-Scale复选框中,检查Maximum Cluster Size和Minimum Cluster Size值,并根据需要进行调整。
查看创建新群集时默认选中的 Allow cluster to be scaled down(允许缩减集群)选项。
查看 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 中记录该事件。
要仅查看或下载自动扩展事件,请执行以下操作:
在 Activity Feed 中,单击 Filter by event(s) 菜单并检查 Atlas。
在列表上方的搜索框中,开始输入
auto-scaling
。在菜单的右侧,将显示所有自动扩展事件。取消选择任何你不想看到的内容。操作列表会根据您所做的每次更改而自动更新。
配置自动扩展事件警报
重要
在 2024 年 8 月初,Atlas 使用可配置的自动扩展事件替换了旧版自动扩展通知电子邮件。默认情况下,Atlas 会继续向项目所有者发送所有警报通知。您可以自定义自动扩展警报分配以更改警报接收者或分配方法。
自动伸缩活动是 Atlas 警报的子集。
Atlas 会自动为自动扩展事件设置默认警报。您可以在项目级别选择退出或更改部分或全部自动扩展事件的警报配置。
要修改警报配置,请在 Category 部分中选择 Atlas Auto Scaling ,然后从列表中选择 Condition/Metric 。然后,您可以修改警报接收者的角色,更改通知方法(例如电子邮件或短信)以及添加 Slack 等通知程序。要了解更多信息,请参阅配置自动伸缩警报。