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

配置高可用性和工作负载隔离

提示

在Atlas Core 集群上,您可以使用 AWS、 Azure和 Google Cloud云提供商的任意组合在Atlas中创建多云MongoDB部署。 Atlas无限集群在公共预览版中不支持多云集群。

在Atlas Core 集群上,您可以将集群中的节点设立为使用不同的:

  • 云提供商:在 AWS、 Azure或 Google Cloud 上部署节点。您可以在一个云提供商中部署所有节点,也可以跨不同云提供商部署具有节点的多云集群。

  • 地理区域:在一个或多个云提供商区域部署节点,并设立Atlas优先考虑主节点 (primary node in the replica set)资格的地区。这些区域可以位于同一云提供商中,也可以跨不同的云提供商。

  • 工作负载用途:部署可选节点、只读节点、分析和搜索节点。

在公开预览版的Atlas无限集群上, Atlas将所有节点部署在 AWS 上的一个地区中。您可以部署只读节点和分析节点,将工作负载与主节点 (primary node in the replica set)节点隔离。要学习;了解更多信息,请参阅Atlas无限集群上的工作负载隔离性。

要为您的Atlas Core集群配置云提供商、地区和工作负载隔离性选项,请参阅以下过程:

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

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

  3. 在侧边栏中,单击 Database 标题下的 Clusters。

此时会显示“集群”页面。

2

对于相关集群,请单击 Edit configuration。

3

点击右下角的 Edit additional configuration 。

4

展开 Cloud Provider & Region,并将 Multi-Cloud, Multi-Region & Workload Isolation (M10+ clusters) 切换为 On。

引用多个区域、多个云提供商或分片的集群的注意事项仅应用于Atlas Core 集群。 Atlas无限集群在公共预览版中不支持这些配置。要学习;了解哪些工作负载隔离性选项应用于Atlas Infinite 集群,请参阅Atlas Infinite 集群上的工作负载隔离。

  • Atlas 不保证在拓扑更改期间主机名会与节点类型保持一致。

    例子

    如果您有一个名为 foo123 且包含分析节点 foo123-shard-00-03-a1b2c.mongodb.net:27017 的集群,Atlas 不能保证在拓扑结构发生变化(例如扩展集群以修改其节点或区域的数量)后,特定主机名会继续引用分析节点。

  • 在使用专用配置服务器的分片集群中,Atlas 根据集群中可选区域的数量分配三个配置服务器节点。如果集群中有:

    • 只有一个可选地区,Atlas 会在该地区中部署所有三个配置节点。

    • 两个可选举区域,Atlas 在最高优先级区域部署两个配置节点,在第二高优先级区域部署一个配置节点。

    • 三个或更多可选举区域,Atlas 在三个最高优先级区域各部署一个配置节点。

  • 地区数量过多或节点分布过远可导致选举时间过长或复制延迟。

  • Gen1 集群可以跨区域和云服务提供商。 Gen2 集群不提供跨云支持,但可以跨越多个区域,只要所有区域都支持给定云提供商的 Gen2 集群。要学习;了解详情,请参阅:

    Atlas将一个项目中其他区域的节点总数限制为 100,不包括: - 相互通信的 Google Cloud 区域 - 免费集群 - Flex 集群

    分片集群包括额外的节点。专用配置服务器副本集 (CSRS) 上的可选举节点计入允许的节点总数。每个分片集群的每个地区都有一个额外的可选举节点,作为专用 CSRS 的一部分。要学习;了解更多信息,请参阅副本集配置服务器。

    任意两个区域之间的节点总数必须满足此限制。

    例子

    如果 Atlas 项目的集群节点分布在三个区域:

    • 区域 A 中的 75 个节点

    • 地区 B 中 10 个节点

    • 地区 C 中 5 个节点

    您只能再向区域 C 添加 10 个节点,因为:

    1. 如果排除区域 C,则区域 A + 区域 B = 85,<= 100。

    2. 如果排除区域 B,则区域 A + 区域 C = 80,<= 100。

    3. 如果排除区域 A,则区域 B + 区域 C = 15,<= 100。

    4. 每种添加了 10 个节点的区域组合仍符合每个项目的限制:

      • 区域 A + B = 85,<= 100

      • 区域 A + C = 90,<= 100

      • 区域 B + C = 25,<= 100

    如果项目中有一个或多个集群跨越其他区域的 100 个或更多节点,则无法在该项目中创建多区域集群。

    有关提高此限制的问题或需要帮助,请联系Atlas支持。

  • Atlas限制项目中任意两个地区之间的节点数量。要学习;了解更多信息,请参阅Atlas支持多少种跨区域网络权限?

  • Atlas 为多区域集群提供了内置自定义写关注。使用这些写关注可确保将您的写入操作传播到所需数量的地区,从而确保跨地区的数据一致性。要了解详情,请参阅内置自定义写关注。

  • 一个区域中的可用区、区域或故障域的数量对 Atlas 可以部署的 MongoDB 节点数量没有影响。Mongo DB Atlas 集群总是由至少有三个 MongoDB 节点的副本集组成。

  • 如果使用标准连接字符串格式而不是 DNS 种子列表格式,则从现有跨区域集群中删除整个地区可能会产生新的连接字符串。

    要在部署更改后验证正确的连接字符串:

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

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

    3. 在侧边栏中,单击 Database 标题下的 Clusters。

    此时会显示“集群”页面。

    2
  • 如果您计划在所选地区的第一个M10+ 专用付费集群上创建一个或多个VPC对等互连,请首先查看有关VPC对等互连互连的文档。

  • Atlas 可能会针对特定 GCP 区域中的 M10 和 M20 集群使用不同的云提供商硬件。因此,多区域 M10 和 M20 集群可能不支持某些 GCP 区域组合。

如果您添加具有可选举节点的地区,您可以:

  • 提高数据可用性

  • 减少数据中心服务中断的影响

在Atlas Core 集群上,您可以将节点部署到同一云提供商内或跨多个云提供商的多个区域。 Atlas无限集群在公共预览版中不支持多区域或多云集群。

Atlas将 Electable nodes 表第一行中的节点设置为 Highest Priority地区。 Atlas会对该地区中的节点进行优先排序,以确定主节点 (primary node in the replica set)资格。其他节点按出现的先后顺序排列。有关详细信息,请参阅成员优先级。

注意

此功能不适用于Atlas Infinite。要学习;了解有关Atlas Infinite 功能和行为的更多信息,请参阅MongoDB Atlas Infinite:概述。

每个可选举节点都可以:

  • 参加副本集选举

  • 成为主节点 (primary node in the replica set),而副本集的大多数节点仍然可用

重要

启用全局写入后,Atlas 全球集群不支持专用搜索节点。

您可通过 Electable nodes for high availability(用于实现高可用性的可选举节点)部分在一个云提供商和区域中添加可选举节点。

要添加可选举节点,请执行以下操作:

  1. 单击 Add a provider/region(连接)。

  2. 从 Provider(提供商)下拉列表选择云提供商。

  3. 从 Region 下拉列表中选择区域。

    当您更改 Provider 选项时, Region 将变为空白选项。如果没有不选择地区,则单击 Create Cluster 时,Atlas 会显示错误。

  4. 指定提供者和区域所需的 Nodes(节点)数。

    集群中所有提供者和区域的可选节点总数必须等于 3、5 或 7。

Atlas 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。

要了解详情,请参阅:

要从区域中删除节点,请单击此区域右侧的图标。您无法删除 Highest Priority 区域中的节点。

要了解更多信息,请参阅多区域集群备份。

警告

当您将可选举节点从一个地区迁移到另一区域时, Atlas会立即预配新节点并取消预配旧节点。Atlas不会等待MongoDB Search 索引在新区域完成构建后,再取消预配旧节点,因此在创建新索引期间,您可能会遇到MongoDB Search 停机的情况。

为避免停机,请分两步完成迁移:

  1. 添加新区域并等待所有节点完全预配。如果您使用搜索节点,请确保MongoDB Search 在继续之前完成所有索引的构建。

  2. 删除旧区域。

为了进一步降低停机风险,请使用读取偏好(read preference)标签将读取操作路由到索引就绪的区域。

您可以通过添加只读节点并同时删除可选举节点,将可选举节点更改为只读节点。要学习;了解更多信息,请参阅更改节点的工作负载用途。

要提高集群的冗余性和可用性,请增加此区域中可选节点的数量。每个 Atlas 集群都有一个Highest Priority区域。如果您的集群跨越多个区域,则可选择哪个云提供商地区应具有Highest Priority。

若要防止可用性和性能损失,请考虑以下方案:

故障点
如何防止此故障点

云服务提供商

在所有三个云提供者中至少设置一个节点。每个区域不止一个节点。

区域

在三个或以上不同区域至少设置一个节点。每个区域不止一个节点。

Node

  • Recommended区域中的三个或更多可选举节点,或

  • 跨两个或更多地区的三个或更多可选举节点。

如果您更改活动多区域集群中的 Highest Priority提供商或地区, Atlas会在您指定的提供商和地区中选择一个新的主节点 (primary node in the replica set)节点(假设每个提供商和地区中的节点数保持不变,并且没有其他被修改)。

如果在更改主节点 (primary node in the replica set)区域时在集群上启用了云备份,Atlas会按需快照并将其存储在新的主节点 (primary node in the replica set)区域中,而无需等待下一个计划的快照。如果新的主节点 (primary node in the replica set)区域以前是用于快照分发的从节点(secondary node from replica set)备份区域, Atlas会自动更新您的备份策略,将快照从新的主节点 (primary node in the replica set)区域分发到原始主节点 (primary node in the replica set)区域和其他从节点(secondary node from replica set)区域。

例子

如果有一个活动的 5 节点集群,其配置如下:

Nodes
提供商
区域
优先级

3

AWS

us-east-1

最高

2

Google Cloud

us-west3

要将 Google Cloud us-west3 节点设为 Highest Priority(最高优先级),请将其行拖动到集群 Electable nodes(可选举节点)列表的顶部。在此更改之后,Atlas 会在 us-west3 中选举一个新的 PRIMARY(主节点)。更改该配置时,Atlas 不会启动初始同步或重新预配主机。

重要

某些情况可能会延迟新主主节点 (primary node in the replica set)的选举。

示例,主分片上有大量工作负载的分片集群可能会延迟选举。这会导致所有主节点 (primary node in the replica set)节点暂时不在同一地区。

为了最大限度降低这些风险,请避免在工作负载较高期间修改主区域。

使用只读节点来优化这些节点各自服务区域内的本地读取。

您可以从 Read-Only Nodes for Optimal Local Reads 部分添加只读节点。

要在一个 cloud 提供商和区域中添加只读节点:

  1. 单击 Add a provider/region(连接)。

  2. 从 Provider(提供商)下拉列表选择云提供商。

  3. 从 Region 下拉列表中选择区域。

    当您更改 Provider 选项时, Region 将变为空白选项。如果没有不选择地区,则单击 Create Cluster 时,Atlas 会显示错误。

  4. 指定提供者和区域所需的 Nodes(节点)数。

Atlas 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。

只读节点不提供高可用性,因为它们不参与选举。他们无法成为其集群的主节点(primary node in the replica set)。要将查询定向到只读节点,请使用预定义的副本集标签。

如需删除某个云提供商和区域中的所有只读节点,请单击该云提供商和区域右侧的图标。

你可以通过同时添加和删除节点来更改节点的工作负载用途。

注意

您必须在同一配置更改中添加和删除节点才能重复使用节点。如果删除节点,保存更改,然后添加节点,Atlas 会改为预配一个新节点。

示例,要将只读节点更改为可选举节点:

  1. 单击 Review Changes(连接)。

  2. 单击 Apply Changes(连接)。

使用分析节点来隔离您不希望与运行工作负载进行竞争的查询。分析节点有助于处理数据分析操作,例如来自 BI Connector for Atlas 的报告查询。要将查询定向到分析节点,请使用预定义的副本集标签。

注意

您可以仅为专用(M10 或更高版本)集群部署分析节点。您无法在免费集群或 Flex 集群上添加分析节点。

对于公开预览版的Atlas无限集群,请指定 Nodes 的数量。 Atlas将它们部署在与Atlas Infinite集群相同的地区。对于Atlas Core 集群,单击 Add a region 选择一个地区,然后指定该地区的 Nodes 数量。

您可以从 Analytics nodes for workload isolation(用于工作负载隔离的分析节点)部分添加分析节点。

要在一个云提供商和地区中添加分析节点,请执行以下操作:

  1. 单击 Add a provider/region(连接)。

  2. 从 Provider(提供商)下拉列表选择云提供商。

  3. 从 Region 下拉列表中选择区域。

    当您更改 Provider 选项时, Region 将变为空白选项。如果没有不选择地区,则单击 Create Cluster 时,Atlas 会显示错误。

  4. 指定提供者和区域所需的 Nodes(节点)数。

Atlas 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。

分析节点不提供高可用性,因为它们不参与选举。他们无法成为其集群的主节点(primary node in the replica set)。

分析节点和操作节点之间的工作负载可能会有很大差异。为帮助管理此问题,对于 M10+ 集群,您可以选择适合分析工作负载大小的集群层。您可以为分析节点选择集群层级,该层级可大于或小于为可选节点和只读节点(运行节点)选择的集群层级。此功能有助于确保您获得事务性和分析性查询所需的性能,而无需为分析性工作负载而过多或过少地配置整个集群。

以下注意事项适用于 Analytics Tier(分析层级)标签页和分析节点:

重要

如果您在 Analytics Tier标签页上选择的集群层明显低于在 Base Tier标签页上选择的集群层,则可能会导致复制延迟。分析节点可能会完全脱离oplog 。

  • 在Atlas Core 集群上,如果您在 Analytics Tier标签页上选择 General集群层,并在 Base Tier标签页上选择 Low-CPU集群层,则该集群不支持磁盘自动伸缩。如果您在 Base Tier标签页上选择 General集群层,并在 Analytics Tier标签页上选择 Low-CPU集群层,也不支持磁盘自动伸缩。

  • 在Atlas Core 集群上,所有节点类型的磁盘大小和 IOPS 必须保持不变。

  • 在Atlas Core 集群上,Base Tier标签页和 Analytics Tier标签页之间的存储大小必须匹配。您可以在 Base Tier标签页上设立存储大小。 Atlas会随着数据的增长而扩展Atlas Infinite集群的存储,因此您无需设立存储大小。

  • 在Atlas Core 集群上,如果您想在 Base Tier标签页上选择 Local NVME SSD 类,则必须在 Analytics Tier标签页选择相同的层级级别。 Atlas无限集群在公共预览版中不支持本地连接的 NVMe 固态硬盘存储。

  • 在Atlas Core 集群上,如果集群层显示为灰色,则该集群层与集群的磁盘大小或 Local NVME SSD 类不兼容。

  • 在 Analytics Tier(分析层)标签页上选择的集群层与在 Base Tier(基础层)标签页上选择的集群层定价相同。但是,当 Analytics Tier(分析层)高于或低于 Base Tier(基础层)时,价格会根据每个节点按比例进行相应调整。当您创建或编辑集群时,定价将显示在 Atlas 用户界面中。要了解详情,请参阅管理计费。

添加分析节点后,您可以选择适合分析工作负载大小的集群层。

  1. 在 Cluster Tier(集群层)部分中,单击 Analytics Tier(分析层)标签页。

  2. 选择 Cluster Tier(集群层)。

要删除某个云服务提供商和地区的所有分析节点,请点击该云服务提供商和地区右侧的图标。

您可以将集群中的节点设立为仅运行MongoDB Search mongot进程。当您单独运行MongoDB Search mongot进程时,可以提高 mongot进程的可用性和工作负载平衡。要学习;了解更多信息,请参阅节点架构。

在运行MongoDB v6.0 及更高版本的 M10 或更高版本的Atlas集群上,您可以将搜索节点与数据库节点分开配置。在单独部署MongoDB搜索节点之前,请查看以下内容。

您只能为专用(M10 或更高)集群部署搜索节点。您无法在免费 (M0)层级集群或 Flex 集群上添加搜索节点。您可以使用Atlas用户界面和Atlas Administration API为 AWS、Google Cloud 或Azure上的新集群和现有集群预配搜索节点。

您可以在云提供商上托管搜索节点。 您无法为全局集群单独部署搜索节点。

Atlas将搜索节点部署在与可选举、只读和分析节点相同的 AWS、Google Cloud 或Azure区域。

Atlas支持单独部署搜索节点,仅在特定的 AWS、Google Cloud 和Azure区域中实现工作负载隔离性。以下Atlas用户界面行为适用:

  • 如果您首先选择以下任何 AWS 或Azure区域作为集群节点, Atlas会禁用 Search nodes for workload isolation 切换。

  • 如果您先启用 Search nodes for workload isolation(搜索工作负载隔离节点),Atlas 则会在 Electable nodes for high availability(高可用性可选举节点)下地区的对应下拉列表中禁用以下功能。

Atlas不支持在以下 AWS、Google Cloud 和Azure区域作为搜索节点。

地区名称
AWS 区域

巴林

me-south-1

墨尔本

ap-south-4

要单独部署搜索节点,您必须从 Electable nodes for high availability 下拉列表中选择支持的 AWS、Google Cloud 或Azure地区。要学习;了解有关支持区域的更多信息,请参阅专用搜索节点的区域。 Atlas自动为集群上的只读节点和分析节点使用相同的地区。部署后,您无法更改Atlas 集群的云提供商或云提供商地区。

Atlas 支持跨多个区域和云提供商部署搜索节点。为多区域或多云集群部署搜索节点时,请考虑以下因素:

Atlas要求Atlas集群中的每个区域至少有两个搜索节点。此要求应用于所有集群类型,包括分片的集群。

在部署严重依赖MongoDB 搜索或MongoDB 向量搜索的分片集群时,了解搜索节点拓扑结构要求对于确保高可用性和最佳性能至关重要。以下拓扑结构要求特别应用于具有搜索节点的分片集群:

  • 多区域部署:如果您的集群跨越多个区域,Atlas会自动在每个包含数据库节点的区域部署指定数量的搜索节点。

  • 最小节点数:每个具有数据库节点的区域必须至少有两个搜索节点,以在维护操作或节点故障期间保持可用性。

您可以在 Search Tier 标签页中选择搜索节点的搜索层级。

默认下,Atlas在 S20 上部署搜索节点。您可以选择较高的层级来实现更快的查询和更复杂的聚合,也可以选择较低的层级来实现较小的工作负载。如果要缩减到较低的层级,则搜索层级必须容纳所有现有的搜索索引,以及用于缓冲文件和日志的额外磁盘空间。

S10 是最低的搜索层级,适合索引占用空间小于 10 GB 的小型工作负载,例如 M10 到 M30 集群上的工作负载。由于 S10 提供的存储空间和 vCPU 数量少于较高层级,因此不适合大型索引或查询密集型工作负载。对于这些工作负载,请选择 S20 或更高级别。

对于部署在 AWS 上的搜索节点, Atlas在不同区域提供不同的搜索层级。如果您所选择的搜索层级在您所在地区不可用, Atlas会自动在该地区可用的下一个更高层级中部署搜索节点。要学习;了解更多信息,请参阅 AWS 搜索层级。

要详细学习;了解部署在 Google Cloud 或Azure上的搜索节点的搜索层级,请参阅:

默认下, MongoDB和搜索进程在同一节点上运行。在这种架构中,客户管理的加密适用于数据库数据,但不适应用搜索索引。

启用专用搜索节点后,搜索进程将在单独的节点上运行。这允许您启用搜索节点数据加密,以便您可以使用相同的客户托管密钥对数据库数据和搜索索引进行加密,以实现全面的加密覆盖范围。

在公开预览期间, Atlas Infinite 集群不支持专用搜索节点。

要了解更多信息,请参阅为搜索节点启用客户密钥管理。

重要

此功能适用于所有KMS提供商。

Atlas 会在日志中记录 Project Activity Feed 中的搜索节点的创建、更新和删除操作。每个条目都会标识执行操作的用户。要查看这些事件,请参阅查看操作日志。

要部署搜索节点,您必须对项目拥有 Project Owner 访问权限。

当您将搜索节点添加到没有任何搜索节点的集群时,与 mongod 同时运行的现有 mongot 进程会在MongoDB搜索完成初始同步后向数据库,而 mongot 进程会在新的专用搜索节点对所需集合执行初始同步。这会导致迁移进程中出现双重读取。

如果删除集群上的所有现有搜索节点,则在处理搜索查询结果时会出现中断,同时 Atlas 会从在专用搜索节点上单独运行的 mongot 进程迁移到与 mongod 并行运行的 mongot 进程。当索引在托管 mongot 和 mongod 进程的节点上构建时,您无法运行查询,并且您将遇到查询停机。

在公共预览期间, Atlas Infinite 集群支持以下工作负载隔离性选项:

要将这些节点添加到Atlas Infinite集群,请指定每种节点类型的 Nodes 数量。 Atlas将节点部署在与Atlas Infinite集群相同的地区,因此您无需为它们选择云提供商或地区。要学习;了解Atlas无限集群支持哪些区域,请参阅Amazon Web Services (AWS) 区域表中的 Atlas Infinite Support 列。

有关Atlas Infinite 在公共预览版中支持的功能的完整列表,请参阅公共预览版。以下限制应用于工作负载隔离性:

  • Atlas Infinite 集群不支持多区域集群。

  • Atlas Infinite 集群不支持多云集群。

  • Atlas Infinite 集群不支持添加其他可选举节点。

  • Atlas Infinite 集群不支持搜索节点。

注意

此功能不适用于Atlas Infinite。要学习;了解有关Atlas Infinite 功能和行为的更多信息,请参阅MongoDB Atlas Infinite:概述。

如果您通过私有连接连接到多云部署中托管的副本集,则只能访问权限您连接时位于同一云提供商和同一地区中的节点。该云提供商在其地区中可能没有主节点 (primary node in the replica set)节点。发生这种情况时,您必须在连接字符串中指定从节点(secondary node from replica set)读取偏好(read preference)模式才能访问权限部署。如果您需要通过私有连接从当前提供商访问权限多云部署的所有节点,则必须:

  • 在当前提供者中为每个其余提供者配置一个 VPN。

  • 为其余每个提供商配置一个连接到 Atlas 的私有端点。

作为替代方案,我们建议为通过私有端点访问的多云部署创建分片集群。当您部署分片集群时,无论是单个分片还是多个分片,您都可以通过本地私有端点连接到集群并执行读写操作。即使集群主节点位于不同区域,也无需指定辅助读取首选模式。如果需要,您连接到的云提供商区域中的 mongos 会将请求路由到其他区域中的主节点。如需了解更多信息,请参阅部署分片集群。