文档首页/ 文档数据库服务 DDS/ 故障排除/ 连接失败,提示:No route to host以及connection attempt failed
更新时间:2023-06-14 GMT+08:00

连接失败,提示: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

可能原因

  • DDS实例的端口错误,不可用。
  • DDS实例与ECS不在同一个区域。
  • DDS实例与ECS不在同一个子网。

排查思路

  1. 检查DDS实例与ECS是否在同一个区域、同一个安全组和子网内。

    1. 登录DDS控制台,单击实例名称,在基本信息页面查看DDS实例所在的区域、VPC、安全组和子网信息。
      图1 查看DDS实例网络信息
    2. 登录弹性云服务器控制台,单击云服务器名称,在基本信息页面,查看当前ECS所在的区域、VPC、安全组和子网信息。
      图2 查看ECS网络信息

  2. 检查实例的端口是否正确,并通过curl命令检查端口是否可用。

    1. 单击实例名称,在基本信息页面查看当前实例的端口信息。
      图3 查看实例端口
    2. 通过curl命令确认端口是否可用,示例:

      curl 192.168.1.6:8635

      提示“It looks like you are trying to access MongoDB over HTTP on the native driver port.”表示可以正常连接该IP地址,且8635端口可以正常通信。

      图4 回显信息

处理方法

  • 选择和DDS实例处于同一个区域、VPC和子网的ECS进行连接。或者可以绑定弹性公网IP,通过公网连接实例。
  • 确保输入的端口信息和控制台查看的实际端口信息一致。

背景知识

  • 内网连接实例时,需要ECS与待连接的DDS实例的区域、VPC子网和安全组需要一致。
  • 内网无法连接实例时,也可以绑定弹性公网IP,通过公网方式连接实例。