配置自动伸缩
在此页面上
注意
功能可用性
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 在默认情况下启用集群存储自动伸缩。对于具有分析节点的集群,如果您为 Base Tier(基础层)和Analytics Tier(分析层)选择了不同集群类(例如 General(常规)或 Low-CPU(低 CPU)),Atlas 则会禁用磁盘自动伸缩,并显示以下错误消息:
Disk auto-scaling is not yet available for clusters with mixed instance classes.
当集群中任何节点的磁盘空间使用率达到 90% 时,Atlas 会自动增加集群存储。
重要
高速写入活动
扩展到更大的存储容量需要足够的时间来准备数据并将数据复制到新磁盘。当集群收到突发的大量高速写入活动(例如批量插入)时,可能不会进行自动伸缩。为了降低磁盘存储空间不足的风险,集群管理者应计划在批量插入和其他高速写入活动实例之前扩展集群。
扩展行为因云提供商而异:
在 AWS 、 Azure 和 GCP 集群上,Atlas 增加了集群存储容量,以实现70 % 的磁盘空间使用率。要了解详情,请参阅 更改 AWS 上的存储容量或 IOPS 、 扩展 Azure 上的存储容量和 IOPS 以及 更改 Google Cloud 上的存储容量。
重要
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 会:
将最大集群层提升到可容纳新存储容量的下一个最低层。
将集群层扩展至新的最高层。
注意
当 Atlas 覆盖您的最大集群层时,它还会为您的集群禁用自动缩减。要重新启用向下自动伸缩,请在集群设置中进行配置。另请参阅集群层和存储向下自动伸缩的注意事项。
如果 Atlas 尝试缩减您的集群层,而目标层无法支持您当前的磁盘容量和/或预配的 IOPS,则 Atlas 不会缩减您的集群。在这种情况下,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 将事件记录在项目 Activity Feed 中。要了解有关 Activity Feed 的详情,请参阅查看所有活动。
Atlas 会在自动伸缩事件发生后,向所有项目所有者发送一封关于原始集群层和新集群层的电子邮件。