配置高可用性和工作负载隔离
在此页面上
提示
您可以使用以下云服务提供商的任意组合在 Atlas 中创建多云 MongoDB 部署:AWS、Azure 以及 Google Cloud。
您可将 MongoDB 部署中的节点设为使用不同的:
云提供商
地理地区
工作负载优先级
复制配置
使用这些选项可提高集群的可用性和工作负载均衡。
要为集群配置节点特定的选项,请将 Multi-Cloud, Multi-Region & Workload Isolation (M10+ clusters) 切换至 On。
集群可以托管在:
单个 cloud 提供商内的多个区域。
跨多个 cloud 提供商的多个区域。
由于每个云提供商均有自己的一组地区,因此多云集群也属于多区域集群。
注意事项
Atlas 不保证在拓扑更改期间主机名会与节点类型保持一致。
例子
如果您有一个名为
foo123
的集群,其中包含一个分析节点foo123-shard-00-03-a1b2c.mongodb.net:27017
,Atlas 不保证特定主机名在拓扑结构更改后(例如将集群扩展到 )将继续引用分析节点修改其节点或区域的数量。在分片集群中,Atlas 根据集群中可选地区的数量分配三个配置服务器节点。如果集群中有:
只有一个可选地区,Atlas 会在该地区中部署所有三个配置节点。
两个可选举区域,Atlas 在最高优先级区域部署两个配置节点,在第二高优先级区域部署一个配置节点。
三个或更多可选举区域,Atlas 在三个最高优先级区域各部署一个配置节点。
地区数量过多或节点分布过远可导致选举时间过长或复制延迟。
添加、删除或修改投票成员的集群更改将需要更长的时间,因为 Atlas 以 滚动方式 一次添加、删除或修改一个 投票成员 。
集群可跨区域和云服务提供商。跨区域集群的节点总数对每个项目都有特定的约束。
Atlas 将一个项目中其他地区的节点总数限制为 40 个。此总数不包括:
相互通信的 Google Cloud 地区
免费集群或共享集群
无服务器实例
分片集群包括额外的节点。专用配置服务器副本集 (CSRS) 上的可选节点计入允许的节点总数。作为专用 CSRS 的一部分,每个分片集群在每个区域都有一个额外的可选节点。如要了解详细信息,请参阅副本集配置服务器。
任意两个区域之间的节点总数必须满足此限制。
例子
如果 Atlas 项目的集群节点分布在三个区域:
地区 A 中 30 个节点
地区 B 中 10 个节点
地区 C 中 5 个节点
您只能再向区域 C 添加 5 个节点,因为:
如果排除地区 C,则地区 A + 地区 B = 40。
如果不包括地区 B、地区 A + 地区 C = 15,<= 40。
如果不包括地区 A、地区 B + 地区 C = 15,<= 40。
每种添加了 5 个节点的地区组合仍符合每个项目的限制:
地区 A + B = 40
地区 A + C = 40
地区 B + C = 20
如果项目中有一个或多个集群跨越其他区域的 40 个或更多节点,则无法在该项目中创建多区域集群。
有关提高此限制的问题或需要帮助,请联系 Atlas支持部门。
Atlas 为多区域集群提供了内置自定义写关注。使用这些写关注可确保将您的写入操作传播到所需数量的地区,从而确保跨地区的数据一致性。要了解详情,请参阅内置自定义写关注。
一个区域中的可用区、区域或故障域的数量对 Atlas 可以部署的 MongoDB 节点数量没有影响。Mongo DB Atlas 集群总是由至少有三个 MongoDB 节点的副本集组成。
如果使用标准连接字符串格式而不是DNS种子列表格式,则从现有跨区域集群中删除整个区域可能会产生新的连接字符串。
要在部署更改后验证正确的连接字符串:
1在 AtlasClusters 中,转到项目的 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。
此时会显示“集群”页面。
如计划在所选地区的第一个
M10+
专用付费集群上创建一个或多个 VPC 对等互连,请首先查看有关 VPC 对等互连的文档。
高可用性可选节点
如果您添加具有可选举节点的地区,您可以:
提高数据可用性和
减少数据中心停机造成的影响。
您可以从一个云提供商设置不同的地区,也可以选择不同的云提供商。
Atlas 会将 Electable nodes(可选举节点)表第一行内的节点设为 Highest Priority作(最高优先级)地区。
Atlas 对此区域内的节点进行优先排序,确定主节点资格。其他节点按出现的先后顺序排列。要了解更多信息,请参阅成员优先级。
每个可选举节点都可以:
参加副本集选举。
成为主节点,而副本集中的大部分节点仍然可用。
添加可选举节点
您可通过 Electable nodes for high availability(用于实现高可用性的可选举节点)部分在一个云提供商和区域中添加可选举节点。
要添加可选举节点,请执行以下操作:
单击 Add a provider/region(连接)。
从 Provider(提供商)下拉列表选择云提供商。
从 Region 下拉列表中选择区域。
当您更改 Provider 选项时, Region 将变为空白选项。如果没有不选择地区,则单击 Create Cluster 时,Atlas 会显示错误。
指定提供者和区域所需的 Nodes(节点)数。
集群中所有提供者和区域的可选节点总数必须等于 3、5 或 7。
Atlas 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。
要了解详情,请参阅:
删除可选举节点
要从区域中删除节点,请单击此区域右侧的图标。您无法删除 Highest Priority 区域中的节点。
要了解更多信息,请参阅多区域集群备份。
将可选举节点更改为只读节点
您可以在添加只读节点的同时删除可选举节点,以便将可选举节点更改为只读节点。要了解更多信息,请参阅更改节点的工作负载用途。
提高集群的可用性
要提高集群的冗余性和可用性,请增加此区域中可选节点的数量。每个 Atlas 集群都有一个Highest Priority区域。如果您的集群跨越多个区域,则可选择哪个云提供商地区应具有Highest Priority。
若要防止可用性和性能损失,请考虑以下方案:
故障点 | 如何防止此故障点 |
---|---|
云服务提供商 | 在所有三个云提供者中至少设置一个节点。每个区域不止一个节点。 |
区域 | 在三个或以上不同区域至少设置一个节点。每个区域不止一个节点。 |
节点 |
|
更改最高优先级提供商或地区
如果您更改活动多区域集群中的 Highest Priority(最高优先级)提供商和区域,Atlas 会在您指定的提供商和区域中选择一个新的主节点(假设每个提供商和区域中的节点数保持不变,且未修改其他内容)。
例子
如果有一个活动的 5 节点集群,其配置如下:
节点 | 提供商 | 区域 | 优先级 |
---|---|---|---|
3 | AWS | us-east-1 | 最高 |
2 | Google Cloud | us-west3 |
要将 Google Cloud us-west3 节点设为 Highest Priority(最高优先级),请将其行拖动到集群 Electable nodes(可选举节点)列表的顶部。在此更改之后,Atlas 会在 us-west3 中选举一个新的 PRIMARY(主节点)。更改该配置时,Atlas 不会启动初始同步或重新预配主机。
用于实现最佳本地读取的只读节点
使用只读节点来优化这些节点各自服务区域内的本地读取。
添加只读节点
您可以从 Read-Only Nodes for Optimal Local Reads 部分添加只读节点。
要在一个 cloud 提供商和区域中添加只读节点:
单击 Add a provider/region(连接)。
从 Provider(提供商)下拉列表选择云提供商。
从 Region 下拉列表中选择区域。
当您更改 Provider 选项时, Region 将变为空白选项。如果没有不选择地区,则单击 Create Cluster 时,Atlas 会显示错误。
指定提供者和区域所需的 Nodes(节点)数。
Atlas 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。
只读节点不提供高可用性,因为它们不参与选举。他们无法成为其集群的主节点。只读节点具有不同的读取偏好标签,可将查询定向到所需区域。
删除只读节点
如需删除某个云提供商和区域中的所有只读节点,请单击该云提供商和区域右侧的图标。
更改节点的工作负载用途
你可以通过同时添加和删除节点来更改节点的工作负载用途。
注意
您必须在同一配置更改中添加和删除节点才能重复使用节点。如果删除节点,保存更改,然后添加节点,Atlas 会改为预配一个新节点。
例如,若要将只读节点更改为可选举节点:
用于工作负载隔离的分析节点
使用分析节点来隔离您不希望与运行工作负载进行竞争的查询。分析节点有助于处理数据分析操作,例如来自 BI Connector for Atlas 的报告查询。分析节点具有不同的副本集标签,而这些标签允许您将查询定向到所需地区。
单击 Add a region(添加区域),选择要在其中部署分析节点的区域。指定此区域所需的 Nodes(节点)数。
注意
mongo shell 无法使用 readPreference 和 readPreferenceTags 连接字符串选项。要了解更多信息,请改为参阅 cursor.readPref() 和 Mongo.setReadPref()。
添加分析节点
您可以从 Analytics nodes for workload isolation(用于工作负载隔离的分析节点)部分添加分析节点。
要在一个云提供商和地区中添加分析节点,请执行以下操作:
单击 Add a provider/region(连接)。
从 Provider(提供商)下拉列表选择云提供商。
从 Region 下拉列表中选择区域。
当您更改 Provider 选项时, Region 将变为空白选项。如果没有不选择地区,则单击 Create Cluster 时,Atlas 会显示错误。
指定提供者和区域所需的 Nodes(节点)数。
Atlas 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。
分析节点无法提供高可用性,因为它们不参与选举。他们不能成为其集群的主节点 (primary node in the replica set)。
为您的分析节点选择集群层
分析节点和操作节点之间的工作负载可能会有很大差异。为帮助管理此问题,对于 M10+
集群,您可以选择适合分析工作负载大小的集群层。您可以为分析节点选择集群层级,该层级可大于或小于为可选节点和只读节点(运行节点)选择的集群层级。此功能有助于确保您获得事务性和分析性查询所需的性能,而无需为分析性工作负载而过多或过少地配置整个集群。
以下注意事项适用于 Analytics Tier(分析层级)标签页和分析节点:
如果您在 Analytics Tier(分析层)标签页上选择 General(常规)集群层,并在 Base Tier(基础层)标签页上选择 Low-CPU(低 CPU)集群层,则集群不支持磁盘自动伸缩。如果您在 Base Tier(基础层)标签页上选择 General(常规)集群层,并在 Analytics Tier(分析层)标签页上选择 Low-CPU(低 CPU)集群层,则也不支持磁盘自动伸缩。
所有节点类型的磁盘大小和 IOPS 必须保持不变。
存储大小必须在 Base Tier(基础层)标签页和 Analytics Tier(分析层)标签页之间保持匹配。您可在 Base Tier(基础层)标签页上设置存储大小。
如果要在Base Tier标签页上选择Local NVME SSD类,则必须在Analytics Tier标签页上选择相同的层级。
如果集群层显示为灰色,则该集群层与集群的磁盘大小或 Local NVME SSD 类不兼容。
在 Analytics Tier(分析层)标签页上选择的集群层与在 Base Tier(基础层)标签页上选择的集群层定价相同。但是,当 Analytics Tier(分析层)高于或低于 Base Tier(基础层)时,价格会根据每个节点按比例进行相应调整。当您创建或编辑集群时,定价将显示在 Atlas 用户界面中。要了解详情,请参阅管理计费。
添加分析节点后,您可以根据分析工作负载选择适当大小的集群层。
在 Cluster Tier(集群层)部分中,单击 Analytics Tier(分析层)标签页。
选择 Cluster Tier(集群层)。
删除分析节点
要删除某个云服务提供商和地区的所有分析节点,请点击该云服务提供商和地区右侧的图标。
搜索工作负载隔离节点
您可以将集群中的节点设置为仅运行 Atlas Search mongot
进程。当您单独运行 Atlas Search mongot
进程时,可以提高mongot
进程的可用性和工作负载平衡。要了解更多信息,请参阅节点架构。
注意事项
在运行 MongoDB v6.0 及更高版本的 M10
或更高层级的 Atlas 集群上,您可将搜索节点与数据库节点分开配置。在单独部署 Atlas Search 节点之前,请查看以下内容。
集群层
您只能为专用( M10
或更高)集群部署搜索节点。您无法在免费 ( M0
) 和共享 ( M2
和M5
) 层集群上添加搜索节点。您可以使用 Atlas 用户界面和 Atlas Administration API 为AWS 、 Google Cloud 或Azure上的新集群和现有集群预配搜索节点。
云服务提供商
您可以在任何云提供商上托管搜索节点。您无法为无服务器实例或全局集群单独部署搜索节点。
云提供商区域
Atlas 将搜索节点部署在与可选举、只读和分析节点相同的AWS 、Google Cloud 或Azure区域。
Atlas 支持单独部署搜索节点,以在任何 Google Cloud 和Azure区域中实现工作负载隔离。但是,您无法在某些AWS区域部署搜索节点。以下 Atlas 用户界面行为适用:
如果您首先为集群节点选择以下任何 AWS 区域,则 Atlas 将禁用 Search nodes for workload isolation 切换。
如果您先启用 Search nodes for workload isolation(搜索工作负载隔离节点),Atlas 则会在 Electable nodes for high availability(高可用性可选举节点)下地区的对应下拉列表中禁用以下功能。
Atlas 不支持在以下 AWS 区域部署搜索节点。
地区名称 | AWS 区域 |
---|---|
巴黎 | eu-west-3 |
苏黎世 | eu-central-2 |
米兰 | eu-south-1 |
西班牙 | eu-south-2 |
阿联酋 | me-central-1 |
巴林 | me-south-1 |
开普敦 | af-south-1 |
香港 | ap-east-1 |
雅加达 | ap-southeast-3 |
墨尔本 | ap-south-4 |
海得拉巴 | ap-south-2 |
要单独部署搜索节点,您必须从Electable nodes for high availability下拉列表中选择支持的AWS 、Google Cloud 或Azure区域。要了解有关支持区域的更多信息,请参阅专用搜索节点的区域。 Atlas 会自动为集群上的只读节点和分析节点使用相同的区域。部署后,您无法更改 Atlas 集群的云提供商或云提供商区域。
多地区和多云集群
Atlas 支持跨多个地区和云提供商部署搜索节点。为多区域或多云集群部署搜索节点时,请考虑以下因素:
Atlas 在每个区域部署相同数量的搜索节点。
跨区域的所有节点都具有相同的搜索层。
如果您使用Atlas Administration API将新区域添加到现有搜索节点,则 Atlas 会在新区域中部署相同数量的搜索节点。但是,如果新区域不支持当前搜索层,则请求将失败。
搜索层级
您可以在 Search Tier 标签页中选择搜索节点的搜索层级。
默认情况下,Atlas 在 S20
上部署搜索节点。您可以选择较高的层来实现更快的查询和更复杂的聚合,也可以选择较低的层来实现较小的工作负载。对于某些层级,您还可以选择低 CPU(推荐用于 Atlas Vector Search)和高 CPU(对 Atlas Vector Search 进行优化)。
对于部署在AWS上的搜索节点,Atlas 在不同地区提供不同的搜索层级。如果您所选择的搜索层级在您所在区域不可用,Atlas 会自动在该区域可用的下一个更高层级中部署搜索节点。要了解更多信息,请参阅AWS 搜索层级。
要详细了解 Google Cloud 或 Azure 上部署的搜索节点的搜索层级,请参阅:
添加搜索节点
要在 Atlas 集群上配置单独的搜索节点,请执行以下操作:
将 Multi-Cloud, Multi-Region & Workload Isolation (M10+ clusters) 切换到 On。
将 Search nodes for workload isolation 切换到 On。
指定要部署的节点数量。您可以指定最少 2 个节点,最多 32 个节点。
部署后,您可以修改集群以添加和删除任何其他搜索节点。
注意
对于多区域集群,Atlas 会在每个区域部署指定数量的节点。要了解更多信息,请参阅多区域和多云集群。
单击复选框确认您已了解并同意创建具有搜索节点的集群的注意事项。
展开 Cluster Tier 以在 Search Tiers 标签页中为您的搜索节点选择一个层级。
要详细了解搜索节点的不同层级,请参阅搜索层级。
要使用 Atlas CLI 为集群创建搜索节点,请运行以下命令:
atlas clusters search nodes create [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas clusters search nodes create 部分。
当您将搜索节点添加到没有任何搜索节点的集群中时,与 mongod
同时运行的现有 mongot
进程将尾随数据库写入操作,这发生在 Atlas Search 完成初始同步之后,而新的专用搜索节点上的 mongot
进程会对所需的集合执行初始同步。这会导致迁移进程中出现双重读取。
删除搜索节点
要删除某些搜索节点,请调整 Search nodes for workload isolation 下的 Number of Search Nodes 设置。您可以在集群上部署 2 到 32 个搜索节点。
要删除 Atlas 集群上的所有搜索节点,请执行以下操作:
将 Search nodes for workload isolation 切换到 Off。
现在,您可以从可用的云提供商中选择任何地区。
在Are you sure you want to remove Search Nodes?模式中单击Remove进行确认。
单击 Review Changes(连接)。
单击复选框以确认您了解并同意删除具有搜索节点的集群的注意事项。
处理搜索查询结果时会出现短暂中断。
单击 Apply Changes(连接)。
要使用 Atlas CLI 删除集群的搜索节点,请运行以下命令:
atlas clusters search nodes delete [options]
要了解命令语法和参数详情,请参阅 Atlas CLI 文档中的 atlas clusters search nodes delete 部分。
如果删除集群上的所有现有搜索节点,则在处理搜索查询结果时会出现短暂中断,同时 Atlas 会从在专用搜索节点上单独运行的 mongot
进程迁移到与 mongod
并行运行的 mongot
进程。不过,在迁移索引时不会出现任何停机,也不会出现过时数据。
限制
如果您通过私有连接 连接到多云部署中托管的副本集,则只能访问您连接时位于同一云提供商和同一区域中的节点。该云提供商在其区域中可能没有主节点。发生这种情况时,您必须在连接字符串中指定从节点读取偏好模式才能访问部署。如果您需要通过私有连接从当前提供商访问多云部署的所有节点,则必须:
在当前提供者中为每个其余提供者配置一个 VPN。
为其余每个提供商配置一个连接到 Atlas 的私有端点。
作为替代方案,我们建议为通过私有端点访问的多云部署创建分片集群。部署分片集群时,无论是单个分片还是多个分片,都可以通过本地私有端点连接到集群并执行读写操作。即使集群主节点位于不同区域,您也无需指定从节点读取偏好模式。如果需要,您连接到的云提供商区域中的mongos
会将请求路由到不同区域中的主节点。要了解更多信息,请参阅部署分片集群。