You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Atlas Search $vectorSearch因服务账号密钥过期触发认证失败求助

解决MongoDB Atlas M10集群$vectorSearch认证失败问题

问题背景

在GCP平台的MongoDB Atlas M10集群(MongoDB 8.0.23)中,所有用户执行$vectorSearch查询时均返回如下错误:

PlanExecutor error during aggregation :: caused by :: Authentication failed. {'code': 8, 'codeName': 'UnknownError'}

但相同凭据下,以下操作可正常执行:

client[db].embedded_movies.estimated_document_count()              # → 3483 OK
list(client[db].embedded_movies.list_search_indexes())             # → vectorPlotIndex, READY, queryable=true
client.admin.command('connectionStatus')                           # → roles: atlasAdmin, readWriteAnyDatabase, ...

时间线显示问题与组织服务账号密钥过期强相关:

21:34Z  (SA secret expires)
23:27Z  Atlas发送"Organization Service Account Secrets have expired"告警
23:32Z  CLUSTER_UPDATE_STARTED
23:34Z  HOST_MONGOT_RESTARTED  (shard 0)
23:36Z  HOST_MONGOT_RESTARTED  (shard 1)
23:37Z  HOST_MONGOT_RESTARTED  (shard 2)
23:37Z  CLUSTER_UPDATE_COMPLETED
23:38Z+ $vectorSearch开始失败

已尝试的无效操作:

  • 通过Atlas Admin API删除并重建索引
  • 使用不同权限用户测试
  • 更换客户端机器/pymongo版本
  • 依赖Atlas自动触发的mongot重启

原因分析

从时间线和现象判断,mongot(Atlas Search进程)未正确刷新内部缓存的服务账号密钥,导致执行$vectorSearch时,mongot与MongoDB节点间的内部认证失败。常规的mongot自动重启未清除该缓存。

解决方案

1. 强制刷新mongot认证缓存

  • Atlas UI操作:进入集群的「Search」标签页,找到目标vector索引,点击「重新构建」(Rebuild)。此操作会触发mongot重新加载认证凭据与索引配置。
  • Atlas Admin API操作:调用POST /groups/{groupId}/clusters/{clusterName}/mongot/restart接口,指定所有分片的mongot进程重启(需拥有clusterAdmin或更高权限)。

2. 验证服务账号密钥状态

  • 登录MongoDB Atlas组织控制台,确认已生成并激活新的服务账号密钥。
  • 检查集群所属项目是否关联了有效的组织服务账号,确保权限配置正确。

3. 临时规避方案

创建新的vector索引(与旧索引配置一致),将查询中的index参数切换为新索引名称。新索引的构建过程会强制mongot加载最新的认证信息。

4. 官方支持介入

若上述操作均无效,直接提交MongoDB Atlas支持工单,提供完整的事件日志、错误栈和集群信息,请求官方强制清除mongot的内部认证缓存。

内容的提问来源于stack exchange,提问作者Albert Gil López

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 04:42:31