Atlas Search 部署选项
Overview
您可以使用不同的部署类型、云提供商和集群层来构建 Atlas 集群,以满足预生产或生产环境的需求。 使用这些建议来选择部署类型、云提供商和区域以及用于执行向量Atlas Search的集群和Atlas Search层。
environment | 部署类型 | 集群层 | 云提供商地区 | 节点架构 |
---|---|---|---|---|
测试查询 | Shared or dedicated cluster Local deployment | M0 , Flex, M2 , M5 , or higher tierN/A | All N/A | MongoDB和Atlas Search进程在同一节点上运行 |
应用程序原型设计 | 专用集群,分片或非分片 |
| 所有 | MongoDB和Atlas Search进程在同一节点上运行 |
生产 | 具有独立搜索节点(分片或非分片)的专用集群 |
| MongoDB和Atlas Search进程在不同节点上运行 |
以下部分描述了每个环境:
测试和原型环境
为了测试搜索查询和对应用程序进行原型设计,我们建议使用以下部分中描述的部署类型和节点架构。
此配置最适合以下使用案例:
要索引的总文档少于 2M
索引数据少于 10 GB
7 天内少于 10,000 次查询
如果您的使用量超过列出的值,迁移到专用搜索节点。
以下各节将更详细地描述此节点架构。
- 部署类型
要在云中的集群上测试Atlas Search查询,您可以部署Flex、共享(已弃用)或专用集群。
要在本地测试Atlas Search查询,请使用Atlas CLI创建本地Atlas部署。这可以是本地计算机上托管的单节点副本集。本地部署受到本地计算机的 CPU、内存和存储资源的限制。当您的应用程序准备好投入生产时,将本地Atlas部署迁移到生产环境。
- Cluster Tiers
为了测试Atlas Search查询,请使用免费 (
M0
)、Flex 以及共享的M2
和M5
集群(已弃用)。要对应用程序进行原型设计,请使用专用的 、 和更高层级的集群,或部署专用的搜索节点以实现工作负载隔离性。当您的应用程序准备投入生产并可以处理大型数据集时,升级到更高层级。
M10
M20
- 云提供商和地区
使用任何受支持的云提供商地区。
您选择的云提供商和地区会影响可用于集群层的配置选项以及运行集群的费用。
节点架构
对于测试和原型环境,我们建议采用MongoDB进程和Atlas Search进程在同一节点上运行的节点架构。在此部署模型的下图中, Atlas Search mongot
进程与 mongod
一起在Atlas 集群中的每个节点上运行,并且它们股票相同的资源。

默认下,当您创建第一个Atlas Search索引时, Atlas会在运行 mongod
进程的同一节点上启用Atlas Search mongot
进程。
当您运行查询时,Atlas Search 会使用配置的读取偏好来确定运行查询的节点。该查询首先进入 MongoDB 进程,对于副本集集群为 mongod
,对于分片集群为 mongos
。
对于副本集集群,mongod
进程会将查询路由到同一节点上的mongot
。对于分片的集群,您的集群数据跨mongod
实例(分片)进行分区,并且每个mongot
进程只能访问权限同一节点上的mongod
实例上的数据。因此,您无法运行针对特定分片的Atlas Search查询。mongos
将查询路由到所有分片,使这些查询成为分散聚集查询。如果您使用区域将分片的集合分布在集群中的一部分分片上,则Atlas Search会将查询路由到包含您正在查询的集合的分片的区域,并仅对满足以下条件的分片运行$search
查询:集合所在的位置。
将查询路由到Atlas Searchmongot
进程后,mongot
进程执行搜索和评分,并将匹配结果的文档ID 和其他搜索元数据返回相应的mongod
进程。然后, 进程对匹配结果隐式执行完整文档查找,并将结果返回客户端。如果您在查询中使用mongod
$search
并发选项, Atlas Search将启用查询内并行机制。要学习;了解更多信息,请参阅跨分段并行查询执行。
要学习;了解有关 mongot
进程的详情,请参阅查询处理。
您可以在 Atlas Search 索引中定义存储源字段,以便 mongot
进程可以在 mongot
上存储指定的字段。然后,您可以在 Atlas Search 查询中使用 returnStoredSource 选项直接从 mongot
检索匹配文档的存储字段,而不必在数据库中进行完整文档查询。
另请参阅:
收益分析
启用 Atlas Search 后,您可以使用自动同步到数据库的集成、完全托管的搜索引擎轻松地在数据上构建搜索。Atlas Search 提供了丰富的查询语言,使用 Atlas Search 聚合管道阶段(如用于全文搜索的 $search
和 $searchMeta
以及用于语义搜索的 $vectorSearch
)与其他 MongoDB 聚合管道阶段相结合,并基于分数进行结果排名。
根据为集群预配的资源,在同一节点上部署这两个进程可能比在单独的专用节点上运行搜索进程更具成本效益。
限制
您可能会遇到数据库mongod
和搜索mongot
进程之间的资源争用。这可能会对索引和查询延迟产生负面影响。支持将生产就绪应用程序及其搜索工作负载迁移到专用搜索节点。
成本
在Atlas 集群上启用Atlas Search时,无需支付额外费用或收费。但是,您可能会发现大型索引集合或索引定义的集群资源利用率有所增加。
Considerations
由于 mongod
和 mongot
进程在同一节点上运行,因此在某些情况下,mongot
可能不可用。 下表描述了可能的原因:
原因 | 说明 |
---|---|
集群层扩展 — 网络存储 | 当您向上或向下扩展集群时, Atlas会预配一个新实例。 实例准备就绪后, Atlas会附加网络存储并在新节点上启动 如果 |
集群层扩展 — 本地固态硬盘 | |
Lucene降级 | 在需要降级Lucene 的极少数情况下,您可能无法读取较新的Lucene索引格式。 |
存储调整 | 您可以保留连接到Atlas 集群节点的网络存储。 这样,您就可以在不影响 但是,在某些区域、当集群使用本地 NVMe 磁盘或其他罕见情况下,可能无法保留网络存储。在这些情况下, Atlas会执行初始同步,搜索查询将失败,直到初始同步完成。 |
| 在 |
新的 | 当您向集群添加新节点时, Atlas会执行初始同步以创建搜索索引。 在初始同步完成之前,使用新 |
实例重启或替换 |
|
| 每当由于配置更改而导致 |
生产环境
对于生产就绪的应用程序,我们建议使用以下部分中描述的部署类型和节点架构。
此配置最适合以下使用案例:
如果您选择将现有测试环境迁移到生产环境,请向集群添加专用搜索节点。要学习;了解更多信息,请参阅迁移到专用搜索节点。
如果您从头开始创建新的生产部署,请确保使用
M10
或更大层级的集群,在 Atlas Atlas Search可用的地区和区域中支持Atlas Search ,并为您的环境添加专用的 Search 节点。要学习;了解更多信息,请参阅添加专用搜索节点。
- 部署类型
对于生产就绪的应用程序,请使用
M10
、M20
和更高的专用集群层。这些更层级的集群可以处理大型数据集和生产工作负载。我们建议您还部署专用搜索节点。如果您的搜索需求增加,您可以扩展搜索部署,而无需扩展MongoDB节点。
- 云提供商和地区
在所有 Google Cloud 区域以及部分 AWS 和 Azure 区域 中使用搜索节点。您必须选择搜索节点可用于您的部署的云提供商和地区。
所有集群层在支持的云提供商地区均可用。您选择的云提供商和地区会影响集群可用的配置选项和搜索层以及运行集群的费用。
节点架构
对于生产环境,我们建议采用一种节点架构,其中MongoDB进程和Atlas Search进程在单独的节点上运行。要部署单独的搜索节点,请参阅迁移到专用搜索节点。
在此部署模型的下图中, Atlas Search mongot
进程在专用搜索节点上运行,这些节点与运行 mongod
进程的集群节点是分开的。

Atlas为每个集群或集群上的每个分片部署搜索节点。示例,如果您为具有三个分片的集群部署两个搜索节点,则Atlas会部署六个搜索节点(每个分片两个)。您还可以配置搜索节点的数量以及为每个搜索节点配置的资源量。
当您部署单独的搜索节点时, Atlas会自动为每个mongod
分配一个mongot
以便索引。mongot
与mongod
通信,侦听并同步其存储的索引的索引更改。 Atlas Search对查询进行索引和处理的方式与mongod
和mongot
进程在同一节点上运行的部署类似。要学习;了解更多信息,请参阅管理Atlas Search索引和查询和索引。要学习;了解有关单独部署搜索节点的更多信息,请参阅用于隔离工作负载的搜索节点。
当您迁移到搜索节点时,Atlas 会部署搜索节点,但不会在节点上提供查询,直到它在搜索节点上的集群上成功构建所有索引。当 Atlas 在新节点上构建索引时,它会继续使用集群节点上的索引提供查询。仅当 Atlas 在搜索节点上成功构建索引并删除集群节点上的索引后,它才会开始从搜索节点提供查询服务。
运行查询时,查询会根据配置的读取偏好(readmongod
preference)路由到 。mongod
进程通过同一节点上的负载负载均衡器路由搜索查询,这会将请求分发到所有mongot
进程。
Atlas Search mongot
进程执行搜索和评分,并将匹配结果的文档 ID 和元数据返回到 mongod
。然后,mongod
对匹配结果执行完整文档查找,并将结果返回客户端。如果在查询中使用 $search
并发选项,则 Atlas Search 将启用查询内并行机制。要了解更多信息,请参阅并行查询各分段。
如果删除集群上的所有搜索节点,则在处理搜索查询结果时会出现中断。要了解详情,请参阅修改集群。如果删除 Atlas 集群,Atlas 则会暂停,然后删除所有关联的 Atlas Search 部署(mongot
进程)。
您可以在 Atlas Search 索引中定义存储源字段,以便 mongot
进程可以在 mongot
上存储指定的字段。然后,您可以在 Atlas Search 查询中使用 returnStoredSource 选项直接从 mongot
检索匹配文档的存储字段,而不必在数据库中进行完整文档查询。
收益分析
单独部署搜索节点具有以下优势:
- 高可用性
- 当您部署单独的搜索节点时,Atlas 会强制使用至少两个搜索节点,以确保在出现故障或中断时您的工作负载保持运行状态,将停机时间降至最低。
- 可扩展性
当您部署单独的搜索节点时,您可以独立于MongoDB 集群扩展存储和计算。这样,您还可以独立于MongoDB扩展查询负载。
要扩展扩展搜索节点,请增加或减少搜索节点的数量。您可以预配最少 2 个、最多 32 个搜索节点。为了均衡查询负载, Atlas Search将搜索查询分布在所有可用的搜索节点上。
要垂直扩展搜索节点,请选择支持全文工作负载的不同搜索层、CPU、 RAM和存储配置。
- 性能
部署专用搜索节点时,可以提高
mongod
和mongot
进程的性能和资源利用率,并消除这些进程之间的资源争用。专用搜索节点支持并发索引段搜索,这允许Atlas Search同时搜索多个索引段。在某些情况下,使用并发分段搜索可缩短查询响应时间。
调整和扩展搜索节点大小的技巧
要确定搜索节点的内存要求,请使用以下Atlas指标:
搜索索引的大小
搜索节点上的总 RAM
考虑一个应用程序,其搜索索引为 10 GB ,搜索节点上的总RAM为 4 GB 。在这种情况下,如果其他进程使用了 1 GB的RAM ,并且只有 3 GB可用于索引数据,则剩余的 7 GB索引数据(10 GB - 3 GB = 7 GB)会根据需要从磁盘进行换页。频繁从磁盘进行分页会导致页面错误、磁盘 I/O 和 CPU IOWait 增加,从而导致性能下降。
如果您使用具有更多RAM的更高搜索集群层(例如 8 GB或更大),则Atlas可以从内存中为搜索索引提供服务大部分数据,从而最大限度地减少磁盘读取和页面错误,从而提高性能。
注意
用于搜索节点的本地固态硬盘需要 20% 的存储开销来支持索引操作。
搜索节点成本
MongoDB 仅支持在专用(M10
或更高版本)集群上使用单独的搜索节点。搜索节点部署在计算密集型 NVMe 实例上。必须至少部署两个节点。每天将按每个节点的每小时资源使用量向您收费。如要了解更多信息,请参阅搜索节点成本。
启用静态加密
您可以为搜索节点上的所有数据启用“使用客户数密钥管理进行静态加密”,从而使用客户管理的加密密钥来保护您的Atlas Search工作负载。要学习;了解更多信息,请参阅为搜索节点启用客户数密钥管理。
此功能目前仅适用于 AWS KMS 。
添加专用搜索节点
通过向新集群添加专用搜索节点,您可以:
独立于集群更改搜索部署的大小和扩展。
消除在同一节点上同时运行MongoDB 数据库和搜索进程的集群上可能出现的资源争用情况。
要添加专用搜索节点,请执行以下操作:
M10
在支持节点隔离性的云提供商和地区中将集群创建为 或更层级。要学习;了解更多信息,请参阅创建集群。仅
M10
及更高集群层以及支持节点隔离性的云提供商区域支持专用搜索节点。启用 Search Nodes for workload isolation 并配置搜索节点。
迁移到专用Atlas Search节点
要从暂存迁移到生产并添加专用搜索节点,请对现有的暂存和原型部署进行以下更改:
如果您的部署使用 Flex集群或共享层级集群,请将集群层更改为更高的层级。仅
M10
及更高集群层支持专用搜索节点。在也可以使用搜索节点的区域部署集群。专用搜索节点在部分AWS和Azure区域以及所有支持的 Google Cloud 区域中可用。如果现有集群托管在搜索节点不可用的区域,请将集群迁移到搜索节点可用的区域。要学习;了解更多信息,请参阅支持节点隔离的云提供商区域。
启用 Search Nodes for workload isolation 并配置搜索节点。要了解更多信息,请参阅添加搜索节点。
部署专用搜索节点时,会执行以下操作顺序:
Atlas在搜索节点上构建搜索索引,并从集群节点中删除索引。
Atlas将搜索路由到搜索节点。
Atlas Search使用搜索索引来提供服务对Atlas 集群的查询。
对部署进行故障排除
Failed to Execute search Command
错误
如果部署 mongot
以与 mongod
一起运行且 未配置 搜索节点,则 mongot
可能会在以下任一事件期间终止并返回 Failed to Execute search Command
错误:
扩展集群
节点故障转移
正在升级
mongot
如果在专用搜索节点上部署mongot
,mongod
会使用代理,仅将搜索查询路由到 mongot
进程处于活动状态的正常节点。