要从我的应用服务器连接到我的mongodb服务器吗

要从我的应用服务器连接到我的mongodb服务器吗,mongodb,ubuntu,nginx,rackspace-cloud,rackspace,Mongodb,Ubuntu,Nginx,Rackspace Cloud,Rackspace,我有2台机架空间服务器 [服务器1]一个应用服务器,位于使用nginx的反向前端代理之后 [服务器2]刚刚安装了mongodb的服务器(具有以下说明:) 我正在尝试使用类似mongoose的工具(在[Server 1]上的我的app.js中)连接到我的数据库: 在/etc/mongo.conf中的[Server 2]上,唯一打开的是: dbpath=/var/lib/mongodb logpath=/var/log/mongodb/mongodb.log logappend=true # B

我有2台机架空间服务器

  • [服务器1]一个应用服务器,位于使用nginx的反向前端代理之后
  • [服务器2]刚刚安装了mongodb的服务器(具有以下说明:)
我正在尝试使用类似mongoose的工具(在[Server 1]上的我的app.js中)连接到我的数据库:

在/etc/mongo.conf中的[Server 2]上,唯一打开的是:

dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongodb.log
logappend=true
# Bind ip for our app server
bind_ip=[Server 1]
我怎样才能:
A) 检查是否能够从[Server 1]连接到[Server 2]并使其正常工作?

不确定您的防火墙配置,但您可能需要打开mongodb服务器上的端口27017(设置中的服务器2)。如下所示:

sudo iptables -A INPUT -p tcp --dport 27017 -s [APP_SERVER IP ADDRESS HERE] -j ACCEPT
如果您还没有设置防火墙规则,我建议您阅读Ubuntu的Iptables指南:

此外,如果您还没有,您可能希望使用专用IP地址在服务器之间进行通信:

更新——2013年9月22日

我启动了2台Rackspace服务器,并执行了以下步骤以成功地在它们之间进行通信

tl;博士 问题可能是/etc/mongo.conf文件中的bind_ip参数

如果复制并粘贴这些命令,请在安装mongodb时删除链接中的“[删除此]”部分

服务器1:

  • sudo apt key adv--keyserverhkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  • echo'deb http://[remove this]downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'| sudo tee/etc/apt/sources.list.d/mongodb.list
  • apt获取并安装mongodb-10gen
  • apt获取更新
  • apt获取并安装mongodb-10gen
  • mongo[服务器2公共ip]:27017//用于测试与服务器2的连接
  • sudo apt get install python软件属性python g++make
  • sudo添加apt存储库ppa:chris lea/node.js
  • apt获取更新
  • apt get install nodejs=0.10.18-1chl1~精度1
  • 安装猫鼬
  • npm安装连接mongo
  • npm安装快车
  • vim server.js
  • node server.js
下面是我使用的server.js文件:

var express = require('express')
var mongoose = require('mongoose');
var MongoStore = require('connect-mongo')(express);
var dbSession = 'mongodb://[Server 2]:27017';
mongoose.connect(dbSession);

var Dog = mongoose.model('Dog', {name: String});

var dog = new Dog({name: 'Fido'});
dog.save(function(err){
  if(err){
    console.log(err);
  }
  else{
    console.log('success');
  }
});
服务器2:

  • sudo apt key adv--keyserverhkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  • echo'deb http://[remove this]downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'| sudo tee/etc/apt/sources.list.d/mongodb.list
  • apt获取更新
  • apt获取并安装mongodb-10gen
  • iptables-A INPUT-ptcp-dport27017-s[server1私有ip]-j ACCEPT

不确定您的防火墙配置,但您可能需要打开mongodb服务器(设置中的服务器2)上的端口27017。如下所示:

sudo iptables -A INPUT -p tcp --dport 27017 -s [APP_SERVER IP ADDRESS HERE] -j ACCEPT
如果您还没有设置防火墙规则,我建议您阅读Ubuntu的Iptables指南:

此外,如果您还没有,您可能希望使用专用IP地址在服务器之间进行通信:

更新——2013年9月22日

我启动了2台Rackspace服务器,并执行了以下步骤以成功地在它们之间进行通信

tl;博士 问题可能是/etc/mongo.conf文件中的bind_ip参数

如果复制并粘贴这些命令,请在安装mongodb时删除链接中的“[删除此]”部分

服务器1:

  • sudo apt key adv--keyserverhkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  • echo'deb http://[remove this]downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'| sudo tee/etc/apt/sources.list.d/mongodb.list
  • apt获取并安装mongodb-10gen
  • apt获取更新
  • apt获取并安装mongodb-10gen
  • mongo[服务器2公共ip]:27017//用于测试与服务器2的连接
  • sudo apt get install python软件属性python g++make
  • sudo添加apt存储库ppa:chris lea/node.js
  • apt获取更新
  • apt get install nodejs=0.10.18-1chl1~精度1
  • 安装猫鼬
  • npm安装连接mongo
  • npm安装快车
  • vim server.js
  • node server.js
下面是我使用的server.js文件:

var express = require('express')
var mongoose = require('mongoose');
var MongoStore = require('connect-mongo')(express);
var dbSession = 'mongodb://[Server 2]:27017';
mongoose.connect(dbSession);

var Dog = mongoose.model('Dog', {name: String});

var dog = new Dog({name: 'Fido'});
dog.save(function(err){
  if(err){
    console.log(err);
  }
  else{
    console.log('success');
  }
});
服务器2:

  • sudo apt key adv--keyserverhkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  • echo'deb http://[remove this]downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'| sudo tee/etc/apt/sources.list.d/mongodb.list
  • apt获取更新
  • apt获取并安装mongodb-10gen
  • iptables-A INPUT-ptcp-dport27017-s[server1私有ip]-j ACCEPT

我添加了这一点,但我认为我无论如何都不需要(因为它是完全开放的,我想先让它工作,然后再将它锁定),但我可以使用mongo通过
mongo[Server2IP]
从[Server1]连接到[Server2],并且我成功地将一些东西插入到一个集合中。我想它在我的猫鼬代码中,但我根据
mongodb://root:rootpw@[服务器2 IP]:27017
。我以root用户身份运行我的应用程序,使用
node app.js
,我得到
throw new Error('Error connecting to database')今晚我将启动一些服务器来测试魔兽世界。回答得好!是的,成功了!我一定是把iptables搞砸了(不确定是什么),但我重新构建了两个实例,然后按照这些说明进行操作,它工作得非常好。先生,谢谢您的详尽回答!当然欢迎你。如果还有什么我可以帮忙的,请告诉我。我补充了这一点,但我认为我无论如何都不需要(因为它是完全开放的,我想先让它工作,然后再锁定它),但我可以使用mongo通过
mongo[Server2IP]
从[Server1]连接到[Server2],并且我成功地将一些东西插入到一个集合中。我想它在我的猫鼬代码中,但我根据
mongodb://root:rootpw@[服务器2 IP]:27017
。我以root用户身份运行我的应用程序,使用
node app.js
,我得到
throw new Error('Error connecting to database')我会