文档数据库服务

连接报错:连接失败或服务不可达

2025-07-02 03:29:41

问题描述

使用客户端连接文档数据库服务实例时报错 "Authentication failed", 使用的连接命令如下:

mongo "mongodb://root:<密码>@<IP1:Port1>,<IP2:Port2>/admin?authSource=admin&replicaSet=<setname>"

报错信息如下:

2023-07-19T12:42:13.281+0800 W NETWORK  [js] Unable to reach primary for set DDS
2023-07-19T12:42:13.281+0800 I NETWORK  [js] Cannot reach any nodes for set DDS. Please check network connectivity and the status of the set. This has happened for 2 checks in a row.
2023-07-19T12:42:13.284+0800 E QUERY    [js] Error: connect failed to replica set DDS/<IP>:<Port>,<IP>:<Port> :
connect@src/mongo/shell/mongo.js:257:13
@(connect):1:6
exception: connect failed

原因分析

从报错信息来看,是客户端到文档数据库服务之间的网络访问不通导致的。 可能的原因有: 

  • 文档数据库服务实例的端口错误,不可用。

  • 文档数据库服务实例与客户端云主机不在同一个区域或子网。

  • 服务端开启了 SSL 模式,但是客户端没有使用 SSL 模式访问。

处理方法

检查文档数据库服务实例与ECS是否在同一个区域、同一个安全组和子网内。 首先登录文档数据库服务控制台,单击实例名称,在基本信息页面查看文档数据库服务实例所在的区域、VPC、安全组和子网信息。然后弹性云服务器控制台,单击云服务器名称,在基本信息页面,查看当前云主机所在的区域、VPC、安全组和子网信息。确保 2 者的配置信息相同。

检查实例的端口是否正确,并通过 curl/telnet 命令检查端口是否可用。 登录到文档数据库服务控制台,单机实例名称,在基本信息页面查看实例的 IP 和端口信息,然后使用 curl 或者 telnet 命令测试端口的连通性。

示例如下:

  curl 检查
$ curl <IP>:<Port>
It looks like you are trying to access MongoDB over HTTP on the native driver port.

telnet 检查
$ telnet <IP> <Port>
Trying <IP>...
Connected to <IP>.
Escape character is '^]'.
^]
telnet>

检查实例是否开启了 SSL 模式。 登录到文档数据库服务控制台,单机实例名称,在基本信息页面上查看是否开启了 SSL 模式。如果开启了 SSL 模式,则下载证书后使用 SSL 模式访问,命令示例如下:

  ./mongo "mongodb://root:<密码>@<IP1:Port1>,<IP2:Port2>/admin?authSource=admin&replicaSet=<setName>" --ssl --sslCAFile=<证书路径> --sslAllowInvalidHostnames




V9jZiJYh2k9O