提示
您可以使用以下云服务提供商的任意组合在 Atlas 中创建多云 MongoDB 部署:AWS、Azure 以及 Google Cloud。
您可将 MongoDB 部署中的节点设为使用不同的:
云提供商
地理地区
工作负载优先级
复制配置
使用这些选项可提高集群的可用性和工作负载均衡。
要为集群配置节点特定的选项,请将 Multi-Cloud, Multi-Region & Workload Isolation (M10+ clusters) 切换至 On 。
集群可以托管在:
单个 cloud 提供商内的多个区域。
跨多个 cloud 提供商的多个区域。
由于每个云提供商均有自己的一组地区,因此多云集群也属于多区域集群。
Considerations
Atlas 不保证在拓扑更改期间主机名会与节点类型保持一致。
例子
如果您有一个名为
foo123且包含分析节点foo123-shard-00-03-a1b2c.mongodb.net:27017的集群,Atlas 不能保证在拓扑结构发生变化(例如扩展集群以修改其节点或区域的数量)后,特定主机名会继续引用分析节点。在使用专用配置服务器的分片集群中,Atlas 根据集群中可选区域的数量分配三个配置服务器节点。如果集群中有:
只有一个可选地区,Atlas 会在该地区中部署所有三个配置节点。
两个可选举区域,Atlas 在最高优先级区域部署两个配置节点,在第二高优先级区域部署一个配置节点。
三个或更多可选举区域,Atlas 在三个最高优先级区域各部署一个配置节点。
地区数量过多或节点分布过远可导致选举时间过长或复制延迟。
集群可跨区域和云服务提供商。跨区域集群的节点总数对每个项目都有特定的约束。
Atlas将一个项目中其他区域的节点总数限制为40 ,不包括:
相互通信的 Google Cloud 地区
免费集群
Flex 集群
分片集群包括额外的节点。专用配置服务器副本集 (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 种子列表格式,则从现有跨区域集群中删除整个地区可能会生成新的连接字符串。
要在部署更改后验证正确的连接字符串:
1AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
如计划在所选地区的第一个
M10+专用付费集群上创建一个或多个 VPC 对等互连,请首先查看有关 VPC 对等互连的文档。Atlas 可能会针对特定 GCP 区域中的
M10和M20集群使用不同的云提供商硬件。因此,多区域M10和M20集群可能不支持某些 GCP 区域组合。
高可用性可选节点
如果您添加具有可选举节点的地区,您可以:
提高数据可用性和
减少数据中心停机造成的影响。
您可以从一个云提供商设置不同的地区,也可以选择不同的云提供商。
Atlas 会将 Electable nodes(可选举节点)表第一行内的节点设为 Highest Priority作(最高优先级)地区。
Atlas 对此区域内的节点进行优先排序,确定主节点资格。其他节点按出现的先后顺序排列。要了解更多信息,请参阅成员优先级。
每个可选举节点都可以:
参加副本集选举。
成为主节点,而副本集中的大多数节点仍然可用。
重要
启用全局写入后,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。
若要防止可用性和性能损失,请考虑以下方案:
故障点 | 如何防止此故障点 |
|---|---|
云服务提供商 | 在所有三个云提供者中至少设置一个节点。每个区域不止一个节点。 |
区域 | 在三个或以上不同区域至少设置一个节点。每个区域不止一个节点。 |
Node |
|
更改最高优先级提供商或地区
如果您更改活动多区域集群中的 Highest Priority 提供商和区域,Atlas 会在您指定的提供商和区域中选择一个新的主节点(假设每个提供商和区域中的节点数保持不变,且未修改其他内容)。
例子
如果有一个活动的 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 不会启动初始同步或重新预配主机。
用于实现最佳本地读取的只读节点
使用只读节点来优化这些节点各自服务区域内的本地读取。
添加只读节点
您可以从 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 会将标有 的地区视为推荐地区。与其他地区相比,这些区域可提供更高可用性。
为您的分析节点选择集群层
分析节点和操作节点之间的工作负载可能会有很大差异。为帮助管理此问题,对于 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(集群层)。
删除分析节点
要删除某个云服务提供商和地区的所有分析节点,请点击该云服务提供商和地区右侧的图标。
搜索工作负载隔离节点
您可以将集群中的节点设立为仅运行MongoDB Search mongot进程。当您单独运行MongoDB Search mongot进程时,可以提高 mongot进程的可用性和工作负载平衡。要学习;了解更多信息,请参阅节点架构。
Considerations
在运行MongoDB v6.0 及更高版本的 M10 或更高版本的Atlas集群上,您可以将搜索节点与数据库节点分开配置。在单独部署MongoDB搜索节点之前,请查看以下内容。
集群层
只能为专用(M10 或更高)集群部署搜索节点。您无法在免费 (M0) 层级集群或 Flex 集群上添加搜索节点。您可以使用 Atlas UI 和 Atlas 管理 API 为 AWS、Google Cloud 或 Azure 上新的和现有的集群预配搜索节点。
云服务提供商
您可以在云提供商上托管搜索节点。 您无法为全局集群单独部署搜索节点。
云提供商区域
Atlas 将搜索节点部署在与可选节点、只读节点和分析节点相同的 AWS、Google Cloud 或 Azure 区域中。
Atlas 支持在仅特定的 AWS、Google Cloud 和 Azure 区域单独部署搜索节点以隔离工作负载。以下 Atlas UI 行为适用:
如果您首先为集群节点选择以下任何 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 区域 |
|---|---|
巴黎 |
|
Zurich |
|
Milan |
|
西班牙 |
|
阿联酋 |
|
巴林 |
|
开普敦 |
|
香港 |
|
Jakarta |
|
墨尔本 |
|
Hyderabad |
|
地区名称 | Google Cloud 区域 |
|---|---|
墨西哥克雷塔罗 |
|
德国柏林 |
|
达曼,沙特阿拉伯 |
|
南非约翰内斯堡 |
|
地区名称 | Azure 区域 |
|---|---|
AUSTRALIA_CENTRAL |
|
AUSTRALIA_CENTRAL_2 |
|
AUSTRALIA_SOUTH_EAST |
|
BRAZIL_SOUTHEAST |
|
CANADA_EAST |
|
FRANCE_SOUTH |
|
GERMANY_NORTH |
|
INDIA_WEST |
|
INDIA_SOUTH |
|
ITALY_NORTH(仅适用于低 CPU 搜索节点) |
|
JAPAN_WEST |
|
KOREA_SOUTH |
|
NORWAY_WEST |
|
SOUTH_AFRICA_WEST |
|
SWEDEN_SOUTH |
|
SWITZERLAND_WEST |
|
UAE_CENTRAL |
|
UK_WEST |
|
US_WEST_CENTRAL |
|
US_WEST |
|
US_NORTH_CENTRAL |
|
要单独部署搜索节点,必须从 Electable nodes for high availability 下拉菜单中选择受支持的 AWS、Google Cloud 或Azure区域。要了解有关支持区域的更多信息,请参阅专用搜索节点的区域。Atlas 会自动将同一区域用于集群上的只读节点和分析节点。部署后,您无法更改您 Atlas 集群的云提供商或云提供商区域。
多区域和多云集群
Atlas 支持跨多个区域和云提供商部署搜索节点。为多区域或多云集群部署搜索节点时,请考虑以下因素:
Atlas 在每个区域部署相同数量的搜索节点。
所有区域的所有节点都有相同的搜索层级。
如果您使用 Atlas 管理 API 向现有搜索节点添加新区域,Atlas 将在新区域部署相同数量的搜索节点。但是,如果新区域不支持当前搜索层级,则请求将失败。
搜索层级
您可以在 Search Tier 标签页中选择搜索节点的搜索层级。
默认下, Atlas在 S20 上部署搜索节点。您可以选择较高的层级来实现更快的查询和更复杂的聚合,也可以选择较低的层级来实现较小的工作负载。如果要缩减到较低的层级,则搜索层级必须容纳所有现有的搜索索引,以及用于缓冲文件和日志的额外磁盘空间。
对于部署在 AWS 上的搜索节点,Atlas 在不同区域提供不同的搜索等级。如果您所选择的搜索层级在您所在区域不可用,Atlas 会自动在该区域可用的下一个更高层级中部署搜索节点。要了解更多信息,请参阅 AWS 搜索层级。
要详细了解 Google Cloud 或 Azure 上部署的搜索节点的搜索层级,请参阅:
启用静态加密
默认下, MongoDB和搜索进程在同一节点上运行。在这种架构中,客户管理的加密适用于数据库数据,但不适应用搜索索引。
启用专用搜索节点后,搜索进程将在单独的节点上运行。这允许您启用搜索节点数据加密,以便您可以使用相同的客户托管密钥对数据库数据和搜索索引进行加密,以实现全面的加密覆盖范围。
要了解更多信息,请参阅为搜索节点启用客户密钥管理。
注意
KMS 提供商均提供此功能,但搜索节点必须位于 AWS 上。
添加搜索节点
要在 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 进程会在MongoDB搜索完成初始同步后向数据库,而 mongot 进程会在新的专用搜索节点对所需集合执行初始同步。这会导致迁移进程中出现双重读取。
删除搜索节点
要删除某些搜索节点,请调整 Search nodes for workload isolation 下的 Number of Search Nodes 设置。您可以在集群上部署 2 到 32 个搜索节点。
重要
如果删除所有搜索节点,您将失去使用客户管理密钥的搜索节点加密。您的数据仍将使用 Atlas 的默认加密,但您的搜索工作负载和索引将不再使用您的客户管理密钥进行加密。
要删除 Atlas 集群上的所有搜索节点,请执行以下操作:
将 Search nodes for workload isolation 切换到 Off。
您现在可以从可用的云提供商中选择任何区域。
点击 Remove 在 Are you sure you want to remove Search Nodes? 模式下确认。
单击 Review Changes(连接)。
单击复选框以确认您了解并同意删除具有搜索节点的集群的注意事项。
处理搜索查询结果时会出现短暂中断。
单击 Apply Changes(连接)。
重要
如果删除所有搜索节点,您将失去使用客户管理密钥的搜索节点加密。您的数据仍将使用 Atlas 的默认加密,但您的搜索工作负载和索引将不再使用您的客户管理密钥进行加密。
要使用 Atlas CLI 删除集群的搜索节点,请运行以下命令:
atlas clusters search nodes delete [options]
要了解命令语法和参数详情,请参阅 Atlas CLI 文档中的 atlas clusters search nodes delete 部分。
如果删除集群上的所有现有搜索节点,则在处理搜索查询结果时会出现中断,同时 Atlas 会从在专用搜索节点上单独运行的 mongot 进程迁移到与 mongod 并行运行的 mongot 进程。当索引在托管 mongot 和 mongod 进程的节点上构建时,您无法运行查询,并且您将遇到查询停机。
连接到多云部署
如果通过私有连接连接到多云部署中托管的副本集,则只能访问您连接的同一云提供商和同一区域中的节点。此云提供商可能在其区域中没有主节点。发生这种情况时,必须在连接字符串中指定从节点读取偏好模式,才能访问部署。如果您需要通过私有连接从当前提供商访问多云部署的所有节点,您必须:
在当前提供者中为每个其余提供者配置一个 VPN。
为其余每个提供商配置一个连接到 Atlas 的私有端点。
作为替代方案,我们建议为通过私有端点访问的多云部署创建分片集群。当您部署分片集群时,无论是单个分片还是多个分片,您都可以通过本地私有端点连接到集群并执行读写操作。即使集群主节点位于不同区域,也无需指定辅助读取首选模式。如果需要,您连接到的云提供商区域中的 mongos 会将请求路由到其他区域中的主节点。如需了解更多信息,请参阅部署分片集群。