Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
远程连接到EC2服务器上的MongoDB http接口_Http_Mongodb_Rest_Interface_Amazon Ec2 - Fatal编程技术网

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

远程连接到EC2服务器上的MongoDB http接口,http,mongodb,rest,interface,amazon-ec2,Http,Mongodb,Rest,Interface,Amazon Ec2,我无法远程连接到AWS ec2服务器上的mongodb http接口 我检查了日志,确认它正在监听端口28017。我已经用netstat-a验证了tcp端口28017是打开的。我在安全组中启用了28017 我使用ifconfig获取IP,并尝试使用IP:28017访问http接口。什么也没发生。没有错误,什么都没有 我将rest=true放在mongod.conf文件中,并使用“sudo service mongod restart”将mongod作为服务启动 我甚至试着用“sudo mongo

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

我检查了日志,确认它正在监听端口28017。我已经用netstat-a验证了tcp端口28017是打开的。我在安全组中启用了28017

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

我将rest=true放在mongod.conf文件中,并使用“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
这是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

你有没有检查过它正在监听一个公共IP和那个端口?它可能正在本地主机上侦听。

听起来您的安全组设置有问题。您可以尝试从框本身访问管理界面:

curl http://localhost:28017/

如果您恢复了内容,那么您的安全组设置(或机箱上的防火墙本身)可能有问题。

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

确保注释掉/etc/mongod.conf文件中的“bind_ip=127.0.0.1”

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

我在尝试远程访问mongo shell时遇到了类似的问题,其中一些答案对部分解决方案有所帮助。总结如下:

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

  • 安全组端口:再次查看EC2控制台上的实例详细信息,找到安全组并选择“查看规则”。假设您使用的是默认的Mongo端口,您应该从您的IP地址为TCP打开
    0.0.0.0/0
    或(更安全)的
    27017
    28017
    。如果没有,请为您的实例选择一个安全组,然后从控制台转到
    入站
    编辑
    添加规则
    自定义TCP规则
    端口范围:27017
    ,以及适当的IP
    。对于http接口,为端口范围28017添加另一条规则

  • /etc/mongod.conf

    • 取消注释
      port=27017
      以确保您拥有默认端口(我认为这实际上没有必要,但这让我感觉更好,知道在哪里更改默认端口也很好…)
    • 注释掉
      bind_ip=127.0.0.1
      ,以便监听外部接口(例如远程连接)
    • 如果要使用http接口,请取消注释
      httpinterface=true
  • 创建用户:您需要远程访问数据库


这可能与此无关,但请检查此站点:特别是这一提示:默认情况下,数据库现在将侦听端口27017。web管理UI将位于端口28017,此链接对此表示感谢,但我已确保安全组是正确的。我已经用0.0.0.0/0从外部打开了28017。您是否检查了您的
/etc/mongod.conf
中没有
bind\u ip
限制?在
mongo
shell中,您还可以检查
db.getSiblingDB('admin').runCommand({'getCmdLineOpts':1})
中的绑定ip值。如果不在场,绑定ip是“任何”。我已经拉扯头发好几个小时了。非常感谢你。评论
bind\u ip=127.0.0.1
奏效了。@Saurabh很高兴它起了作用:)