Google Cloud Functions通过私有端点连接MongoDB Atlas超时求助
排查Cloud Functions v2通过Private Service Connect连接MongoDB Atlas超时问题
核心问题
- 报错信息:
Unhandled error MongoServerSelectionError: Server selection timed out after 30000 ms - 仅将
0.0.0.0/0加入MongoDB白名单可正常连接,但需保留私有网络访问限制 - 请求流向卡在
Connector Subnet到Endpoint Subnet环节
一、检查VPC路由配置
- 确认VPC路由表中存在指向Private Service Connect(PSC)端点的自定义路由:
- 进入VPC路由表页面,查看是否有针对MongoDB Atlas私有IP段(或PSC端点IP)的路由规则,下一跳需指定创建的PSC端点
- 若缺失,手动添加路由:目标范围设为MongoDB Atlas集群的私有CIDR(可在Atlas控制台获取),下一跳选择对应PSC端点
- 确保该路由表已关联连接器所在的/28子网,否则连接器子网的流量无法找到去往端点的路径
二、验证防火墙规则覆盖范围
- 现有全访问规则需同时覆盖连接器子网和端点子网的双向流量:
- 源和目标均需包含两个子网的CIDR段(例如
10.0.0.0/24和10.0.1.0/28) - 明确放行TCP 27017端口(MongoDB默认端口),以及UDP 53端口(用于私有DNS解析)
- 源和目标均需包含两个子网的CIDR段(例如
- 排查是否存在低优先级但更严格的防火墙规则拦截流量,可临时禁用非必要规则做测试
三、核对Serverless VPC Access连接器配置
- 确认连接器所在子网已开启私有Google访问:进入子网配置页面,检查“私有Google访问”开关是否启用,否则连接器无法访问VPC内的PSC端点
- 检查连接器状态:执行
gcloud vpc-access connectors describe [CONNECTOR_NAME] --region us-central1,确认状态为READY且无报错信息 - 临时调整连接器实例数(例如从1个增至2-3个),排除因实例规格(e2-micro)导致的流量瓶颈
四、MongoDB Atlas侧私有连接验证
- 确认Atlas的Private Endpoint配置中,关联的GCP项目ID、VPC网络名称与实际环境完全匹配
- 检查Atlas白名单仅包含VPC两个子网的CIDR段及PSC端点的IP范围,避免遗漏
- 在VPC内部署测试VM(放在连接器子网或端点子网),执行以下命令验证连接:
若VM能正常连接,说明问题出在Cloud Functions的VPC连接器配置;若VM也超时,则VPC到Atlas的链路存在问题mongosh "mongodb+srv://[CLUSTER_NAME].mongodb.net/" --username [USER]
五、DNS解析排查
- 在VPC内的测试VM上执行
nslookup [CLUSTER_NAME].mongodb.net,确认返回的是MongoDB私有IP而非公网IP - 若解析返回公网IP,需配置Cloud DNS私有区域,将Atlas域名映射到对应的私有端点IP,确保流量走私有链路
- 检查Cloud Functions的
vpcConnectorEgressSettings设为PRIVATE_RANGES_ONLY后,是否强制使用VPC内的DNS解析,可通过函数日志查看实际解析的IP地址
内容的提问来源于stack exchange,提问作者Lenni
相关产品推荐
相关产品推荐

