对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

自动伸缩操作和警报

本页介绍自动伸缩操作:查看自动伸缩活动、配置自动伸缩警报、使用有效字段增强自动伸缩以及获取自动伸缩支持。

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

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

操作日志中的每个自动伸缩事件都包含有关触发扩展动作的原因的详细信息,包括:

  • 触发自动伸缩事件的特定指标(例如 CPU 利用率、内存使用量或磁盘空间)。

  • 超过的阈值。

  • 扩展是由反应式自动伸缩(响应当前资源使用情况)还是预测性自动伸缩(预期预测需求)触发的。

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

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

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

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

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

    显示项目操作日志页面。

1

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

2

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

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

重要

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

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

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

重要

自动伸缩警报应用于项目中的所有集群。您无法将警报范围限定为特定集群。警报通知通过集群名称和ID识别哪个集群触发了事件。

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

注意

此功能仅适用于 M10层级及以上的专用集群,Flex 集群不支持此功能。

在集群上启用自动伸缩后, Atlas会根据工作负载自动调整实例大小和存储容量。

如果使用MongoDB和 HashiCorp Terraform进行集群实例大小调整和存储配置,则可以为集群大小调整值的子集指定有效字段。我们建议采用这种方法:

  • 规范属性与您在 Terraform 配置中定义的完全相同。

  • 默认值和自动伸缩值在有效规范中可单独使用(示例effectiveElectableSpecs),并且当Atlas自动伸缩集群时,不会发生资源漂移。

  • 您的配置保持简洁并代表您的意图,而有效的规范则显示Atlas所预配的内容的实际情况。

有效字段仅忽略对由特定类型的自动伸缩托管的字段的更改。下表详细说明了启用有效字段和特定类型的自动伸缩时忽略的字段:

已启用的自动伸缩类型
specs
忽略的字段
节点类型

计算或存储

electableSpecs

instanceSize, diskSizeGB , diskIOPS

计算或存储

readOnlySpecs

instanceSize, diskSizeGB , diskIOPS

分析

analyticsSpecs

instanceSize

您不能将有效字段用于搜索节点。

要启用有效字段,请在API请求中包含以下标头:

--header "Use-Effective-Instance-Fields: true"

在集群的资源定义中将 use_effective_fields 参数设置为 true,如以下示例所示:

resource "mongodbatlas_advanced_cluster" "this" {
project_id = mongodbatlas_project.this.id
name = var.cluster_name
cluster_type = var.cluster_type
use_effective_fields = true
replication_specs = var.replication_specs
tags = var.tags
}

要学习;了解更多信息,请参阅有效字段模块示例。

重要

如果不启用有效字段,则必须手动配置 lifecycle.ignore_changes区块,以防止发生自动伸缩时出现资源漂移。我们不建议使用这种方法。要学习;了解更多信息,请参阅 Terraform 文档中的自动伸缩。

总体而言,有效字段行为属于以下三种情况之一:

Spec 字段存储上次的节点配置,而 valid 字段显示最近一次自动伸缩事件后的值。单击可查看此场景的代码示例。

注意

我们建议最佳实践是启用有效字段。

{
"replicationSpecs": [
{
"regionConfigs": [
{
"analyticsAutoScaling": {
"compute": {
"maxInstanceSize": "M30",
"minInstanceSize": "M10",
"enabled": true,
"scaleDownEnabled": true
},
"diskGB": {
"enabled": true
}
},
"autoScaling": {
"compute": {
"maxInstanceSize": "M30",
"minInstanceSize": "M10",
"enabled": true,
"scaleDownEnabled": true
},
"diskGB": {
"enabled": true
}
},
"effectiveAnalyticsSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"effectiveElectableSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 3
},
"effectiveReadOnlySpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"electableSpecs": {
"instanceSize": "M20",
"diskSizeGB": 50.0,
"nodeCount": 3
},
"priority": 7,
"providerName": "AWS",
"regionName": "US_EAST_1"
}
],
"zoneId": "6924a70c67695449ba5625ce",
"zoneName": "Zone 1"
}
]
}

规范字段存储最后节点配置,而有效字段显示Atlas内部存储的值。单击可查看此场景的代码示例。

注意

我们建议最佳实践是启用有效字段。

{
"replicationSpecs": [
{
"regionConfigs": [
{
"effectiveAnalyticsSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"effectiveElectableSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 3
},
"effectiveReadOnlySpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"electableSpecs": {
"instanceSize": "M30",
"diskSizeGB": 100.0,
"nodeCount": 3
},
"priority": 7,
"providerName": "AWS",
"regionName": "US_EAST_1"
}
],
"zoneId": "6924a70c67695449ba5625ce",
"zoneName": "Zone 1"
}
]
}

有效字段值始终与相应规范中设立的值完全匹配。单击可查看此场景的代码示例。

重要

如果不启用有效字段,则必须手动配置 lifecycle.ignore_changes区块,以防止发生自动伸缩时出现资源漂移。我们不建议使用这种方法。要学习;了解更多信息,请参阅 Terraform 文档中的自动伸缩。

{
"replicationSpecs": [
{
"regionConfigs": [
{
"analyticsAutoScaling": {
"compute": {
"maxInstanceSize": "M30",
"minInstanceSize": "M10",
"enabled": true,
"scaleDownEnabled": true
},
"diskGB": {
"enabled": true
}
},
"autoScaling": {
"compute": {
"maxInstanceSize": "M30",
"minInstanceSize": "M10",
"enabled": true,
"scaleDownEnabled": true
},
"diskGB": {
"enabled": true
}
},
"effectiveAnalyticsSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"effectiveElectableSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 3
},
"effectiveReadOnlySpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"analyticsSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"electableSpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 3
},
"readOnlySpecs": {
"instanceSize": "M30",
"diskIOPS": 3000,
"diskSizeGB": 100.0,
"ebsVolumeType": "STANDARD",
"nodeCount": 0
},
"priority": 7,
"providerName": "AWS",
"regionName": "US_EAST_1"
}
],
"zoneId": "6924a70c67695449ba5625ce",
"zoneName": "Zone 1"
}
]
}

如果您启用有效字段, Atlas会根据集群当前的有效实例大小验证任何新的自动伸缩范围。 Atlas会拒绝设置不包含当前有效实例大小范围的请求。此行为适用于使用自动伸缩的操作节点和分析节点。

在以下任何一种情况下,请求将因验证错误而失败:

  • 新的最小实例大小大于有效实例大小。

  • 新的最大实例大小小于有效实例大小。

如果新范围仍然包含当前有效实例大小,则可以在单个请求中更改界限。

如果当前有效实例大小超出新范围,请在更改边界之前使用以下过程将其移入新范围。如果您在范围更改时在同一请求中更新实例大小,则在使用有效字段启用自动伸缩时, Atlas不会应用新的实例大小,因此请求仍然会失败。

1

将 compute.enabled 设置为 false。

2

将 instanceSize 设置为目标值,然后发送请求。

3

将 compute.enabled 设置为 true。

4

将 minInstanceSize 和 maxInstanceSize 设置为新的界限,然后发送请求。

要使用 Terraform 调整自动伸缩范围,请参阅 Terraform提供商文档中的使用 use_ective_fields 调整自动伸缩范围。

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