
# DDS实例连接失败怎么办
#### 问题分析
主要从九个方面考虑：
1. [排除数据库实例异常]
   例如：DDS系统故障，实例状态异常，实例或表被锁定。
   
2. [（常见）使用正确的客户端连接方式]
   1. 数据库安装包须从官网下载并正确安装，请参见[如何安装MongoDB客户端](https://support.huaweicloud.com/dds_faq/dds_faq_0018.html)。
   
   2. 建议使用4.0版本以上的MongoDB客户端连接实例。
   
   3. 内网连接需要DDS与ECS实例必须在同一区域、VPC内。
   
   4. 公网连接需要购买或使用已有EIP，并对DDS实例绑定该EIP 。
    
3. [使用正确的SSL方式安全连接]
   界面SSL开关开启和关闭，分别对应不用的连接命令。例如：
   - 开关开启：**./mongo --host** **\<*DB_HOST* \>--port\<*DB_PORT* \>-u\<*DB_USER* \>-p--authenticationDatabaseadmin--ssl --sslCAFile\<*FILE_PATH*\>** **--sslAllowInvalidHostnames**
   
   - 开关关闭：**./mongo --host\<*DB_HOST* \>--port\<*DB_PORT* \>-u\<*DB_USER*\>-p --authenticationDatabase admin**
    
4. [排除连接命令错误]
   例如：连接地址错误、端口参数配置错误、用户名和密码错误、SSL方式下命令错误。
   
5. [（常见）排除网络不通]
   表1网络互通 
   | 访问方式          | 排查网络                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | 内网访问          | 1. 确认ECS与DDS是否在同一个区域、同一个VPC。 ECS与DDS在不同VPC的场景，可以通过建立[VPC对等连接](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655036.html)实现网络互通。   2. 检查安全组规则。 1. 安全组外访问安全组内的DDS集群实例时，需要为安全组[添加相应的入方向规则](https://support.huaweicloud.com/usermanual-dds/dds_03_0313.html)。    3. 在ECS上测试是否可以正常连接到DDS实例地址的端口。   |
   | 公网访问          | 1. 检查安全组规则。 1. 安全组外访问安全组内的DDS集群实例时，需要为安全组[添加相应的入方向规则](https://support.huaweicloud.com/usermanual-dds/dds_03_0318.html)。    2. 检查网络ACL规则。  3. 相同区域主机进行ping测试。                                                                                                                                                                                                        |
   | 跨网段访问（配置IP映射） | 通过内网连接副本集实例时，当客户端和副本集实例部署在不同网段时，且客户端所在的网段不在"192.168.0.0/16"，"172.16.0.0/24"和"10.0.0.0/8"时，需要进行跨网段访问配置，以实现网络互通。 1. 确保在源端ECS网络与实例节点网络连通，如果网络不通，可以参考[对等连接](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655036.html)进行相关配置。  2. 跨网段访问的操作请详见[跨网段访问配置](https://support.huaweicloud.com/usermanual-dds/dds_03_0100.html)。                                                                                                                                                                          |
      
   
6. [（常见）排除实例的连接数满的情况]
   实例连接数过多，可能会导致业务侧无法正常连接。
   
7. [（常见）排除磁盘满的情况]
   实例磁盘使用率过高会导致实例状态异常，无法正常连接实例。
   
8. [排除CPU使用率飙升问题]
   CPU使用率很高或接近100%，会导致数据读写处理缓慢、无法获取连接、出现报错等，从而影响业务正常运行。
   
9. [连接失败的常见报错]
   包含连接失败的常见报错，以及相应的解决方法。
   
 
#### 帮助视频
视频介绍DDS实例连接失败后的处理方法。
<video controls="controls" preload="none" id="object112013520416" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/DDS/Videos/1751271640924110062.mp4" title="连接失败" poster="https://support.huaweicloud.com/dds_faq/zh-cn_image_0000002367736864.jpg" height="300.0000" width="600.0000"></video>
#### 排查思路
1. **排除数据库实例异常**
   检查办法：请在控制台检查数据库实例状态是否为"正常"。
   可能原因：DDS系统故障，实例状态异常，实例或表被锁定等。
   解决方法
   - DDS实例状态异常，您可以[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)申请，完成工单提交。
   
   - 系统故障、实例或表被锁定等，请尝试重启功能，详细操作请参考[重启实例](https://support.huaweicloud.com/usermanual-dds/dds_03_0003.html)。
   
   
   图1查看实例状态   
   ![](https://support.huaweicloud.com/dds_faq/zh-cn_image_0000001136117264.png "点击放大") 
2. **使用正确的客户端连接方式**
   建议使用4.0版本以上的MongoDB客户端连接实例，安装客户端操作请参见[如何安装MongoDB客户端](https://support.huaweicloud.com/dds_faq/dds_faq_0018.html)。
   以集群为例：
   1. 内网连接实例的具体操作步骤，请参见[通过内网连接集群实例](https://support.huaweicloud.com/usermanual-dds/dds_03_0314.html)。
   
   2. 公网连接实例的具体操作步骤，请参见[通过公网连接集群实例](https://support.huaweicloud.com/usermanual-dds/dds_03_0319.html)。
   
   
   表2客户端连接方式 
   | 连接方式 | 使用场景                                                                                                    |
   |:---|:---|
   | 内网方式 | 系统默认提供内网IP地址。 当应用部署在ECS上，且该ECS与DDS实例处于同一区域，同一VPC时，建议单独使用内网IP连接ECS与DDS实例。 |
   | 公网方式 | 不能通过内网IP地址访问DDS实例时，使用公网访问，建议绑定公网网关连接ECS（或公网主机）与DDS实例。                                                   |
      
   
3. **使用正确的SSL方式安全连接**
   表3连接实例 
   | 连接方式      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|
   | SSL方式（推荐） | 1. 实例连接管理页面的SSL开关开启，并且上传证书到ECS。 **./mongo --host** **\<*DB_HOST* \>--port\<*DB_PORT* \>-u\<*DB_USER* \>-p--authenticationDatabaseadmin--ssl --sslCAFile\<*FILE_PATH*\>** **--sslAllowInvalidHostnames** 图2SSL开启 ![](https://support.huaweicloud.com/dds_faq/zh-cn_image_0000002579295858.png "点击放大")    |
   | 普通方式      | 1. 实例连接管理页面的SSL开关关闭。 **./mongo --host\<*DB_HOST* \>--port\<*DB_PORT* \>-u\<*DB_USER*\>-p --authenticationDatabase admin** 图3SSL关闭 ![](https://support.huaweicloud.com/dds_faq/zh-cn_image_0000002609735669.png "点击放大")                                              |
      
   
4. **排除连接命令错误**
   请获取正确的连接地址、端口参数配置、用户名和密码、SSL方式下命令，并重试连接实例。
   - **SSL内网连接集群示例** **：** **./mong** **o m** **ongodb://rwuser:** \<password\>@*\<* *DB_HOST* *\>* **:** *\<* *DB_PORT* *\>* **,** *\<* *DB_HOST* *\>* **:** *\<* *DB_PORT* *\>* **/test?authSource=admin** **--ssl --sslCAFile** *\<* *FILE_PATH* *\>* **--sslAllowInvalidHostnames**
     表4参数说明 
     | 参数     | 说明                                                                                                                                                |
     |:---|:---|
     | 连接地址   | 连接信息可在"实例管理"页的"连接地址"列获取。 图4连接地址 ![](https://support.huaweicloud.com/dds_faq/zh-cn_image_0000002579455784.png "点击放大") |
     | 数据库端口  | 目标实例的"连接管理"页面，"内网连接"页签的"数据库端口"。                                                                                                                   |
     | 用户名和密码 | root管理员账号及其对应的密码，如若密码不正确或者忘记了密码，可通过[重置管理员密码](https://support.huaweicloud.com/usermanual-dds/dds_03_reset_password.html)来修改密码。                     |
     | 证书名称   | SSL证书文件名，该文件需放在执行该命令的路径下。                                                                                                                         |
        
     
   
   - **SSL公网连接集群示例：** **./mong** **o m** **ongodb://rwuser:** \<password\>@*\<* *DB_HOST* *\>* **:** *\<* *DB_PORT* *\>* **/test?authSource=admin** **--ssl --sslCAFile** *\<* *FILE_PATH* *\>* **--sslAllowInvalidHostnames**
     表5参数说明 
     | 参数     | 说明                                                                                                                            |
     |:---|:---|
     | 连接地址   | 单击实例名称，在实例"连接管理"页面"公网连接"页签的公网连接地址处获取。                                                                                         |
     | 数据库端口  | 目标实例的"连接管理"页面，"公网连接"页签的"数据库端口"。                                                                                               |
     | 用户名和密码 | root管理员账号及其对应的密码，如若密码不正确或者忘记了密码，可通过[重置管理员密码](https://support.huaweicloud.com/usermanual-dds/dds_03_reset_password.html)来修改密码。 |
     | 证书名称   | SSL证书文件名，该文件需放在执行该命令的路径下。                                                                                                     |
        
     
    
5. **排除网络不通**
   表6网络互通 
   | 访问方式          | 排查网络                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 内网访问          | 1. 检查ECS与DDS是否在同一个区域、同一个VPC。 - 不同区域的云服务之间内网互不相通，无法访问实例。请就近选择靠近您业务的区域，可减少网络时延，提高访问速度。  - 不同VPC下，可以通过建立[VPC对等连接](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655036.html)实现网络互通。    2. 检查安全组规则。 安全组外访问安全组内的DDS实例时，需要为安全组[添加相应的入方向规则](https://support.huaweicloud.com/usermanual-dds/dds_03_0313.html)。   3. 在ECS上测试是否可以正常连接到DDS实例地址的端口。 ``` telnet <实例地址> {8635} ``` - 可以通信，说明网络是正常的。  - 无法通信，您可以[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)申请，完成工单提交。                                                                                                                                                             |
   | 公网访问          | 1. 检查安全组规则。 安全组外访问安全组内的DDS实例时，需要为安全组[添加相应的入方向规则](https://support.huaweicloud.com/usermanual-dds/dds_03_0318.html)。   2. 检查网络ACL规则。 1. 进入虚拟私有云[网络ACL](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0051746700.html)列表。  2. 检查EIP绑定的网卡是否在网络ACL关联的子网下。  3. 查看网络ACL当前是"开启"状态还是"关闭"状态。 若网络ACL为"开启"状态，需要[添加ICMP放通规则进行流量放通](https://support.huaweicloud.com/usermanual-vpc/vpc_acl_0005.html)。    注意：网络ACL的默认规则是丢弃所有出入方向的包，关闭"网络ACL"后，其默认规则仍然生效。   3. 相同区域主机进行ping测试。 如果在原ECS上没有ping通DDS实例绑定的EIP，请在相同区域的另一台ECS上去ping该EIP，如果可以正常ping通，说明虚拟网络正常，您可以[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)申请，完成工单提交。    |
   | 跨网段访问（配置IP映射） | 通过内网连接副本集实例时，当客户端和副本集实例部署在不同网段时，且客户端所在的网段不在"192.168.0.0/16"，"172.16.0.0/24"和"10.0.0.0/8"时，需要进行跨网段访问配置，以实现网络互通。 1. 确保在源端ECS网络与实例节点网络连通，如果网络不通，可以参考[对等连接](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655036.html)进行相关配置。  2. 跨网段访问的操作请详见[跨网段访问配置](https://support.huaweicloud.com/usermanual-dds/dds_03_0100.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      
   
6. **排除实例的连接数满的情况**
   1. 查看实例的连接数是否已达上限，请参见[如何查询及限制连接数](https://support.huaweicloud.com/dds_faq/dds_faq_0040.html)。
      若实例连接数已满请参见[实例的连接数满怎么处理](https://support.huaweicloud.com/dds_faq/dds_faq_0043.html)。
      
   
   2. 云监控服务目前可以监控数据库CPU、内存、磁盘、连接数等指标，并且设置告警策略，出现告警时可以提前识别风险。
    
7. **排除磁盘满的情况**
   **检查方法**：磁盘空间使用率可通过管理控制台或云监控服务查看。
   - 通过管理控制台查看 选择目标实例，单击实例名称，进入"基本信息"页面。在"存储空间"模块，查看磁盘使用率。
     图5存储空间   
     ![](https://support.huaweicloud.com/dds_faq/zh-cn_image_0000001182396639.png "点击放大") 
   
   - 通过云监控服务查看 选择目标实例，单击"查看监控指标"，跳转到云监控页面，查看目标实例的磁盘使用量指标。
     
   
   
   **可能原因**：当实例处于"磁盘空间满"状态时，需扩容至磁盘空间使用率小于80%才可使实例处于可用状态，使数据库恢复正常的写入操作。
   **解决方案**：
   - 随着业务数据的增加，原来申请的数据库磁盘容量可能会不足，建议用户扩容磁盘空间，确保磁盘空间足够。具体操作请参见[扩容磁盘](https://support.huaweicloud.com/usermanual-dds/zh-cn_topic_increase_storage.html)。
   
   
   
   - 请及时处理过期数据文件。
   
   - 云监控服务目前可以监控数据库CPU、内存、磁盘、连接数等指标，并且设置告警策略，出现告警时可以提前识别风险。
    
8. **排除CPU使用率过高的情况**
   CPU使用率很高或接近100%，会导致数据读写处理缓慢、无法获取连接、出现报错等，从而影响业务正常运行。
   **解决方案** ：请参见[如何排查DDS实例CPU使用率高的问题](https://support.huaweicloud.com/bestpractice-dds/dds_0010.html)。
   
9. **连接失败的常见报错**
   - **连接失败，提示：network error while attempting to run command 'isMaster'**
     使用如下命令连接DDS实例时报错。
     **./mongo --host 192.168.168.182 --port 8635 -u rwuser -p** *xxxxxxxxxx* **--authenticationDatabase admin**
     图6连接失败   
     ![](https://support.huaweicloud.com/dds_faq/zh-cn_image_0000001186331456.png "点击放大")
     具体处理方法请参见[连接失败，提示：network error while attempting to run command 'isMaster'](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0001.html)。
     
   
   - **连接失败，提示：No route to host以及connection attempt failed**
     使用如下命令连接DDS实例时报错。
     **mongo --host 192.168.** **1.6 --port 8635 -u rwuser -p** *xxxxxxxxx* **--authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames**
     报错信息如下：
     ```
     MongoDB shell version v3.4.17
     connecting to: mongodb://192.168.1.6:8635/
     2019-09-19T09:38:36.954+0800 W NETWORK  [thread1] Failed to connect to 192.168.1.6:8635, in(checking socket for error after poll), reason: No route to host
     2019-09-19T09:38:36.954+0800 E QUERY    [thread1] Error: couldn't connect to server 192.168.1.6:8635, connection attempt failed :
     connect@src/mongo/shell/mongo.js:240:13
     @(connect):1:6
     exception: connect failed
     ```
     具体处理方法请参见[连接失败，提示：No route to host以及connection attempt failed](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0002.html)。
     
   
   - 连接失败，提示：No route to host以及connection attempt failed 使用如下命令连接DDS实例时报错。
     **mongo --host 192.168.** **168.116** **--port 8635 -u rwuser -p** *xxxxxxxxx* **--authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames**
     报错信息如下：
     ```
     MongoDB shell version v3.4.17
     connecting to: mongodb://192.168.168.116:8635/
     2019-09-19T09:39:24.306+0800 W NETWORK  [thread1] The server certificate does not match the host name. Hostname: 192.168.168.116 does not match CN: 172.16.2.65
     MongoDB server version: 4.0.3
     WARNING: shell and server versions do not match
     2019-09-19T09:39:24.329+0800 E QUERY    [thread1] Error: Authentication failed. :
     DB.prototype._authOrThrow@src/mongo/shell/db.js:1461:20
     @(auth):6:1
     @(auth):1:2
     exception: login failed
     ```
     具体处理方法请参见[连接失败，提示：No route to host以及connection attempt failed](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0003.html)。
     
   
   - **连接失败，提示：couldn't connect to server**
     使用如下命令连接DDS实例时报错。
     **mongo --host 192.168.64.201 --port 8635 -u rwuser -p** *xxxxxxxxx* **--authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames**
     报错信息如下：
     ```
     MongoDB shell version v3.4.17
     connecting to: mongodb://192.168.64.201:8635/
     2019-09-19T09:45:48.168+0800 W NETWORK  [thread1] Failed to connect to 192.168.64.201:8635 after 5000ms milliseconds, giving up.
     2019-09-19T09:45:48.168+0800 E QUERY    [thread1] Error: couldn't connect to server 192.168.64.201:8635, connection attempt failed :
     connect@src/mongo/shell/mongo.js:240:13
     @(connect):1:6
     exception: connect failed
     ```
     具体处理方法请参见[连接失败，提示：couldn't connect to server](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0004.html)。
     
   
   - **连接失败，提示：cannot list multiple servers in URL without 'replicaSet' option**
     使用如下命令连接DDS副本集实例时报错。
     ./mongo mongodb://rwuser:*xxxxxxxxxxx*@192.168.168.116:8635,192.168.200.147:8635/test?authSource=admin\&replicaSet=replica
     报错信息如下：
     ```
     FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option try 'mongo --help' for more information.
     ```
     使用如下命令连接兼容MongoDB 3.4版本的DDS实例时报错。
     **mongo "mongodb://rwuser:** *xxxxxxxxx* **@192.168.95.167:8635,192.168.92.43:8635/test?authSource=admin"**
     报错信息如下：
     ```
     FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option
     try 'mongo --help' for more information.
     ```
     具体处理方法请参见[连接失败，提示：cannot list multiple servers in URL without 'replicaSet' option](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0005.html)。
     
   
   - **Java驱动连接实例失败，提示：Timeout while receiving message**
     使用Java驱动连接DDS实例时报错。
     报错信息如下：
     ```
     org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
     ```
     具体处理方法请参见[Java驱动连接实例失败，提示：Timeout while receiving message](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0006.html)。
     
   
   - **连接失败，提示：exception: login failed 以及 U_STRINGPREP_PROHIBITED_ERROR**
     使用如下命令连接DDS实例时报错。
     ./mongo "mongodb://rwuser:*xxxxxx*@192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin\&replicaSet=replica"
     报错信息如下：
     ```
     MongoDB shell version v4.0.3
     connecting to: mongodb://192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica
     2021-11-05T05:52:53.717+0000 I NETWORK  [js] Starting new replica set monitor for replica/192.168.0.45:8635,192.168.0.96:8635
     2021-11-05T05:52:53.718+0000 I NETWORK  [ReplicaSetMonitor-TaskExecutor] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 5 second timeout)
     2021-11-05T05:52:53.718+0000 I NETWORK  [js] Successfully connected to 192.168.0.96:8635 (1 connections now open to 192.168.0.96:8635 with a 5 second timeout)
     Implicit session: session { "id" : UUID("5945d2a5-8275-4e3c-b06f-632f062a2ead") }
     MongoDB server version: 4.0.3
     2021-11-05T05:52:53.722+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
     2021-11-05T05:52:53.722+0000 I NETWORK  [js] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 0 second timeout)
     2021-11-05T05:52:53.723+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
     2021-11-05T05:52:53.724+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
     2021-11-05T05:52:53.725+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
     2021-11-05T05:52:53.725+0000 E QUERY    [js] Error: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR :
     DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
     @(auth):6:1
     @(auth):1:2
     exception: login failed
     ```
     具体处理方法请参见[连接失败，提示：exception: login failed 以及 U_STRINGPREP_PROHIBITED_ERROR](https://support.huaweicloud.com/trouble-dds/dds_03_troubleshoot_0007.html)。
     
    
10. **如果上述方法均不能解决您的疑问，** **您可以[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)申请，完成工单提交，为** **您解答。**
 
