連接報錯:連接失敗或服務不可達
更新時間 2023-08-29 15:15:30
最近更新時間: 2023-08-29 15:15:30
分享文章
本頁介紹了 connect failed 連接報錯的處理方法。
問題描述
使用客戶端連接文檔數據庫服務實例時報錯 "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