远程连接到EC2服务器上的MongoDB http接口

9 rest interface http amazon-ec2 mongodb

我无法远程连接到我的AWS ec2服务器上的mongodb http接口.

我已经检查了日志并验证它正在侦听端口28017.我已经使用netstat -a验证了tcp端口28017是否已打开.我在安全组中启用了28017.

我使用ifconfig获取IP,并尝试使用IP:28017访问http接口.什么都没发生.没有错误,没有.

我在我的mongod.conf文件中放了rest = true,我用'sudo service mongod restart'启动mongod作为服务

我甚至试图用'sudo mongod --rest'开始使用mongod无济于事.

这是tail -f /log/mongod.conf显示的内容:

Sat Feb  2 02:06:54 [initandlisten] MongoDB starting : pid=3919 port=27017 dbpath=/data 64-bit host=domU-12-31-39-12-3A-A2
Sat Feb  2 02:06:54 [initandlisten] db version v2.2.2, pdfile version 4.5
Sat Feb  2 02:06:54 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
Sat Feb  2 02:06:54 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Sat Feb  2 02:06:54 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/data", fork: "true", logappend: "true", logpath: "/log/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid", rest: "true" }
Sat Feb  2 02:06:54 [initandlisten] journal dir=/data/journal
Sat Feb  2 02:06:54 [initandlisten] recover : no journal files present, no recovery needed
Sat Feb  2 02:06:54 [initandlisten] waiting for connections on port 27017
Sat Feb  2 02:06:54 [websvr] admin web console waiting for connections on port 28017
Run Code Online (Sandbox Code Playgroud)

这就是netstat -a所显示的:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 localhost:smtp              *:*                         LISTEN
tcp        0      0 *:27017                     *:*                         LISTEN
tcp        0      0 *:mysql                     *:*                         LISTEN
tcp        0      0 *:28017                     *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
tcp        0    272 domU-12-31-39-12-3A-A2.:ssh pool-108-54-50-116.ny:50722 ESTABLISHED
tcp        0      0 *:ssh                       *:*                         LISTEN
udp        0      0 *:bootpc                    *:*
udp        0      0 domU-12-31-39-12-3A-A2.c:ntp *:*
udp        0      0 localhost:ntp               *:*
udp        0      0 *:ntp                       *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     5402   @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     40948  /var/lib/mysql/mysql.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     5468   @/org/kernel/udev/udevd
unix  2      [ ACC ]     STREAM     LISTENING     6332   /var/run/dbus/system_bus_socket
unix  9      [ ]         DGRAM                    6278   /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     182622 /tmp/mongodb-27017.sock
unix  3      [ ]         STREAM     CONNECTED     182434
unix  3      [ ]         STREAM     CONNECTED     182433
unix  2      [ ]         DGRAM                    182429
unix  2      [ ]         DGRAM                    131031
unix  2      [ ]         DGRAM                    40170
unix  2      [ ]         DGRAM                    19247
unix  2      [ ]         DGRAM                    7231
unix  2      [ ]         DGRAM                    7212
unix  2      [ ]         DGRAM                    7194
unix  3      [ ]         STREAM     CONNECTED     6341   /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     6340
unix  3      [ ]         STREAM     CONNECTED     6336
unix  3      [ ]         STREAM     CONNECTED     6335
unix  3      [ ]         DGRAM                    5484
unix  3      [ ]         DGRAM                    5483
Run Code Online (Sandbox Code Playgroud)

Nic*_*nes 26

尝试远程访问mongo shell时遇到了类似的问题,其中一些答案有助于部分解决方案.总结一下:

  • 公共IP/DNS:在EC2管理控制台上选择您的实例,并确保它具有公共IP或公共DNS.AWS正在将更多的默认设置转移到虚拟私有云(VPC)中,并且可以启动到只有一个私有IP地址(VPC内部)的设备.如果您没有公共DNS或IP,则需要分配弹性IP.

  • 安全组端口:再次查看EC2控制台上的实例详细信息,找到安全组并选择"查看规则".假设您正在使用默认的Mongo端口,您应该拥有27017并从您的IP地址28017打开TCP 0.0.0.0/0或(更安全).如果不是,请选择一个安全组为您的实例,并从控制台去Inbound> Edit> Add Rule> Custom TCP Rule,Port Range: 27017以及适当的IP Source.对于http接口,请添加其他规则Port Range: 28017.

  • /etc/mongod.conf:

    • 取消注释port=27017以确保您具有默认端口(我不认为这实际上是必要的,但它让我感觉更好,并且知道在哪里更改默认端口...)
    • 注释bind_ip=127.0.0.1以便侦听外部接口(例如远程连接)
    • httpinterface=true如果要使用http接口,请取消注释
  • 创建用户:您需要创建一个管理员和/或用户来远程访问数据库.

  • 我一直在拉头发几个小时.非常感谢.评论`bind_ip = 127.0.0.1`工作. (3认同)

小智 17

对于EC2实例,添加两个入站自定义TCP规则以允许端口27017和28017上的入站流量.

确保在/etc/mongod.conf文件中注释掉"bind_ip = 127.0.0.1"

重启mongod服务器:$ sudo service mongod restart


Win*_*eld 0

您是否检查过它正在侦听公共 IP 以及该端口?它可能正在本地主机上侦听。