2016-04-28 124 views
0

我创建了一个3成员副本亚马逊cloud.I设置设置了所有需要的防火墙设置和蒙戈congigurations.Below是我的副本集的配置:从mongo shell连接到远程副本集?

{ 
    "_id" : "rs1", 
    "version" : 3, 
    "protocolVersion" : NumberLong(1), 
    "members" : [ 
      { 
        "_id" : 1, 
        "host" : "ip-172-31-16-84:27017", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "tags" : { 

        }, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      }, 
      { 
        "_id" : 2, 
        "host" : "ip-172-31-23-212:27017", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "tags" : { 

        }, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      }, 
      { 
        "_id" : 3, 
        "host" : "ip-172-31-14-196:27017", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "tags" : { 

        }, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      } 
    ], 
    "settings" : { 
      "chainingAllowed" : true, 
      "heartbeatIntervalMillis" : 2000, 
      "heartbeatTimeoutSecs" : 10, 
      "electionTimeoutMillis" : 10000, 
      "getLastErrorModes" : { 

      }, 
      "getLastErrorDefaults" : { 
        "w" : 1, 
        "wtimeout" : 0 
      }, 
      "replicaSetId" : ObjectId("5720fb585ef3baca32efe765") 
    } 
} 

注:我已创建使用副本集机器主机名机器的公有IP地址。

我正在使用下面的命令来连接到这些3副本集机器中的任何副本集,我连接到副本集的主要副本。

mongo --host "rs1/ip-172-31-16-84:27017" 

但是当我从任何其他机器(假设我的本地机器)使用相同的命令不在同一局域网中。该命令失败,以下错误:

C:\Users\gur35948>mongo --host "rs1/52.221.230.236:27017" 
MongoDB shell version: 3.0.6 
connecting to: rs1/52.221.230.236:27017/test 
2016-04-28T11:54:02.851+0530 I NETWORK starting new replica set monitor for  replica set rs1 with seeds 52.221.230.236:27017 
2016-04-28T11:54:02.853+0530 I NETWORK [ReplicaSetMonitorWatcher] starting 
2016-04-28T11:54:03.043+0530 I NETWORK changing hosts to rs1/ip-172-31-14-196:27017,ip-172-31-16-84:27017,ip-172-31-23-212:27017 from rs1/52.221.230.236:27017 
2016-04-28T11:54:13.689+0530 I NETWORK [ReplicaSetMonitorWatcher] getaddrinfo("ip-172-31-14-196") failed: errno:11001 No such host is known. 
2016-04-28T11:54:14.335+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known. 
2016-04-28T11:54:16.682+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known. 
2016-04-28T11:54:17.505+0530 I NETWORK getaddrinfo("ip-172-31-14-196") failed:errno:11001 No such host is known. 
2016-04-28T11:54:17.505+0530 W NETWORK No primary detected for set rs1 
2016-04-28T11:54:17.511+0530 E QUERY Error: ReplicaSetMonitor no master found for set: rs1 
at connect (src/mongo/shell/mongo.js:181:14) 
at (connect):1:6 at src/mongo/shell/mongo.js:181 

蒙戈是无法解决副本集中使用,因为在network.I差的主机名没有使用公网IP,因为它是不好的做法,我猜。

所以最后问题是我如何连接到这个远程副本集?

由于

回答

2

当连接到副本中设置客户机/驱动器(例如,mongo壳。)使用细节配置用于您的副本集所定义的rs.conf()

  • 主机名必须解析为IP地址
  • 连接在使用配置的主机名/ IP /端口对每个副本集成员
建立0

尤其是下面的错误表示主机名是不是从你的mongo客户端解析:

2016-04-28T11:54:13.689+0530 I NETWORK [ReplicaSetMonitorWatcher] getaddrinfo("ip-172-31-14-196") failed: errno:11001 No such host is known. 2016-04-28T11:54:14.335+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known.

主机名ip-172-31-16-84表明,该主机的IP地址为172.31.16.84,这是一个非可路由private network address

无法从网络外部连接到仅面向内部的IP地址。

要安全连接到您的部署,您需要打开到您的副本集驻留的专用网络的SSH或VPN连接,并从该专用网络内运行您的mongo shell。请致电MongoDB Security Checklist

1

如何使用SSH隧道连接到其中一台服务器,然后使用mongo shell在本地主机上进行连接?

现在大多数MongoDB GUI都可以很容易地进行设置,安全和支持。