首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程连接到EC2服务器上的MongoDB http接口

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

Stack Overflow用户
提问于 2013-02-02 03:51:59
回答 4查看 15.6K关注 0票数 9

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

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

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

我已经在我的mongod.conf文件中放入rest = true,并且我用'sudo service mongod.conf‘启动mongod作为一个服务。

我甚至试着用“sudo mongod -rest”来启动mongod,但都没有用。

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

代码语言:javascript
复制
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显示的内容:

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

发布于 2015-03-04 12:31:06

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

  • Public IP/ DNS :在EC2管理控制台选择您的实例,并确保其具有公网IP或公网DNS。AWS正在将更多默认设置迁移到虚拟私有云(VPC)中,并且可以启动到仅具有专用IP地址的虚拟私有云(VPC内部)。如果您没有公共域名或IP,您需要查看组端口:再次查看EC2控制台上的实例详细信息,找到安全组并选择“allocate an Elastic IP.
  • Security Rules”。假设你使用的是默认的Mongo端口,你应该从0.0.0.0/0或者(更安全的)你的IP地址打开27017和28017。如果没有,请为您的实例选择一个安全组,然后从控制台转到Inbound > Edit > Add Rule > Custom TCP Rule,Port Range: 27017和相应的IP Source。对于http接口,为Port Range: 28017.
  • /etc/mongod.conf:

添加另一个规则

代码语言:javascript
复制
- Uncomment `port=27017` to make sure you have the default port (I don't think this is actually necessary, but it made me feel better and it's good to know where to change the default port...) 
- Comment out `bind_ip=127.0.0.1` in order to listen to external interfaces (e.g. remote connections)
- Uncomment `httpinterface=true` if you want to use the http interface

​

票数 27
EN

Stack Overflow用户

发布于 2014-11-15 08:51:08

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

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

重启魔神服务器:$sudo服务魔神重启

票数 17
EN

Stack Overflow用户

发布于 2013-02-04 07:20:26

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

代码语言:javascript
复制
curl http://localhost:28017/

如果你拿回了内容,那么你的安全组设置(或机器上的防火墙)可能有问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14653938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档