配置自动伸缩
在此页面上
注意
功能可用性
Atlas 可为 General(常规)和 Low-CPU(低 CPU)层集群下的所有集群层(最高集群层除外)启用集群自动伸缩。
您可以配置 Atlas 使用的集群层范围,以根据集群使用情况自动扩展集群层和/或存储容量。
集群自动伸缩无需编写脚本或使用咨询服务来做出伸缩决策。为了帮助控制成本,您可以指定集群可自动伸缩到的最大和最小集群大小范围。
自动伸缩以滚动方式运行,这意味着该过程不会导致停机。
Atlas 如何扩展集群层
Atlas 会分析以下集群指标以确定何时伸缩集群,以及是扩展还是缩减集群层:
CPU使用率
内存利用率
Atlas 会根据可用内存和总内存来计算内存利用率,如下所示:
( memoryTotal
- ( memoryFree
+ memoryBuffers
+ memoryCached
)) / ( memoryTotal
) * 100
在前面的计算中, memoryFree
、 memoryBuffers
和memoryCached
是 Atlas 可以回收用于其他目的的可用内存量。要了解更多信息,请参阅System Memory 查看可用指标中的 。
如果满足以下任一条件,则 Atlas 不会扩展集群层:
新的集群层将超出您指定的 Minimum(最小)和 Maximum Cluster Size(最大集群大小)范围。
内存利用率将超过新集群层的可用内存。
Atlas 可将您的集群扩展到同一类中的其他层。例如,Atlas 可将 General 集群扩展到其他 General 集群层,但不会将 General 集群扩展到 Low-CPU 集群层。
为了确保集群资源利用率适当,确切的自动伸缩标准可能会发生变化。
重要
迁移期间,如果待恢复的快照大于目标集群的存储容量,则集群不会自动扩展。
如果您部署只读节点并希望集群更快地扩展,请考虑调整副本集扩展模式。
扩展集群层
注意
层可用性
自动扩展适用于 General 和 Low-CPU 层级集群,但不适 用于 Local NVMe SSD 层级集群。
如果下一最高集群层处于 Maximum Cluster Size(最大集群大小)范围内,且集群中的任一节点均满足以下条件之一,Atlas 则会将此集群扩展为下一层级:
过去一小时内,Average CPU Utilization 已超过可用资源的 75%。75% 阈值相对于集群层有权访问的资源。
过去一小时内,Memory Utilization 已超过可用资源的 75%。75% 阈值相对于集群层有权访问的资源。
如果集群在过去一小时内没有扩展,Atlas 会将集群扩展到下一层级。
重要
工作负载突然激增
扩展至更大的集群层需要足够的时间来准备后备资源。当集群接收到大量活动(如批量插入)时,可能不会进行自动伸缩。为了降低资源耗尽的风险,请计划在批量插入和其他工作负载高峰之前扩展集群。
缩减集群层
如果下一最低集群层处于 Minimum Cluster Size(最小集群大小)范围内,且集群中的所有节点均满足以下两个条件,Atlas 则会将此集群缩减为下一最低层:
过去 24 小时的平均 CPU Utilization(CPU 利用率)和 Memory Utilization(内存利用率)低于 50%。50% 阈值相对于集群层有权访问的资源。
集群在过去 24 小时内未进行缩减(手动或自动)。
注意
M10
和 M20
集群使用较低的阈值来考虑云提供商在突发周期后设置的 CPU 使用上限。这些阈值因您的云提供商和集群层而异。
要了解有关向下自动伸缩行为的更多信息,请参阅 集群层和存储向下自动伸缩的注意事项。
向下自动伸缩集群层和存储的注意事项
由于扩展过程的机制,当 Atlas 缩减集群的存储容量时,这可能比扩展存储容量需要更长的时间。
当 Atlas 将您的集群缩减到较低的集群层时,它会使用Minimum Cluster Size中的值。估计部署的工作负载范围,然后将Minimum Cluster Size值设置为具有足够容量来处理部署工作负载的集群层。考虑集群活动中任何可能的峰值或谷值。
您无法扩展到小于
M10
的集群。您不能选择低于群集当前磁盘配置的最小群集层级。如果您的存储超出最低集群层级支持的范围,Atlas 会自动将您的最小集群层级调整为支持集群当前存储要求的层级。
例子
您已将自动伸缩范围设为
M20
-M60
,且当前集群层为M40
。Atlas 会在以下情况下触发向下自动伸缩事件:在过去 24 小时内,当前集群上的平均 CPU Utilization(CPU 利用率)和 Memory Utilization(内存利用率)低于 50%。Atlas 尝试将集群自动缩减到
M30
。M30
支持您的当前磁盘配置,因此自动伸缩操作会成功。Atlas 确定
M20
是可支持当前磁盘配置的最低集群层,并将最低集群层设置为M20
。
扩展分片集群
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中为分析节点指定
Disk auto-scaling is not yet available for clusters with mixed instance classes
Low-CPU集群类,则 Atlas 将禁用磁盘自动伸缩,并显示以下错误消息: 。如果您在不同的云提供商区域中部署Base Tier和Analytics Tier节点,Atlas 会禁用磁盘自动伸缩。
集群层和集群存储可以并行伸缩
当 Atlas 尝试自动扩展集群存储容量时,它可能需要将存储扩展到当前集群层支持的范围之外。为了帮助确保您的集群不会出现任何停机,Atlas 会扩展您的集群层(除了集群存储之外)以适应新的存储容量。
在 Azure 上,如果您在部署在 支持扩展存储的区域 之一的集群上启用自动伸缩,并且当前 IOPS 低于自动 伸缩 磁盘大小的默认 IOPS ,则 Atlas 会增加IOPS 滑块,并在用户界面中通知您。要了解详情,请参阅 扩展 Azure 上的存储容量和 IOPS 。
例子
M30
集群的最大存储容量为480 GB。如果您的M30
集群分配了最大存储空间,并且已使用的磁盘空间达到90 %,则存储自动伸缩事件会要求将存储容量增加到600 GB。在这种情况下,Atlas 会将您的集群层扩展到M40
,因为这是可以支持所需的新存储容量的最低集群层。在Azure上,如果您将集群部署在支持扩展存储的区域之一,Atlas 还会自动增加IOPS以匹配该层集群的IOPS级别。
如果您指定的最大群集层无法支持新的存储容量,Atlas 会:
将最大集群层提升到可容纳新存储容量的下一个最低层。
将集群层扩展至新的最高层。
注意
当 Atlas 覆盖您的最大集群层时,它还会为您的集群禁用自动缩减。如要重新启用向下自动伸缩,请在集群设置中进行相应配置。另请参阅向下自动伸缩集群层和存储的注意事项。
如果 Atlas 尝试缩减您的集群层,而目标层无法支持您当前的磁盘容量和/或预配的 IOPS,则 Atlas 不会缩减您的集群。在这种情况下,Atlas 会根据当前集群层与配置的最大集群层之间的关系来更新您的自动伸缩设置:
如果集群当前处于配置的最大集群层,Atlas 会禁止集群自动缩小规模,因为所有较小的层将无法容纳必要的存储设置。如果要重新启用向下自动伸缩,则必须在群集设置中手动执行此操作。
如果集群当前未处于配置的最大集群层,Atlas 会将最小集群层提升至当前集群层。在这种情况下,Atlas 不会禁用向下自动伸缩。
当存储设置与工作负载不匹配时,这种自动伸缩逻辑可以减少停机时间。
重要
在 8 月初2024 ,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
。菜单右侧显示所有自动伸缩事件。取消选择任何您不想看到的内容。 Feed 列表会根据您所做的每次更改而自动更新。
为自动伸缩事件配置警报
重要
在 8 月初2024 ,Atlas 用可配置的自动伸缩事件替换了传统的自动伸缩通知电子邮件。默认情况下,Atlas 会继续向项目所有者发送所有警报通知。您可以自定义自动伸缩警报分配,以更改警报接收者或分配方法。
自动伸缩活动是Atlas 警报的子集。
Atlas 会自动为自动伸缩事件设置默认警报。您可以在项目级别选择退出或更改部分或全部自动伸缩事件的警报配置。
要修改警报配置,请在Category部分中选择Atlas Auto Scaling ,然后从列表中选择Condition/Metric 。然后,您可以修改警报接收者的角色,更改电子邮件或短信等通知方法,以及添加 Slack 等通知程序。要了解更多信息,请参阅配置自动伸缩警报。