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

时间:2013-09-21 10:39:34

标签: mongodb ubuntu nginx rackspace-cloud rackspace

我有2个机架空间服务器。

我正在尝试使用mongoose(在[Server 1]上的app.js中)连接到我的数据库:

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

在/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)检查我是否能够从[服务器1]连接到[服务器2]并实际使其正常工作?

1 个答案:

答案 0 :(得分:4)

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

sudo iptables -A INPUT -p tcp --dport 27017 -s [APP_SERVER IP ADDRESS HERE] -j ACCEPT

如果您还没有设置防火墙规则,我建议您阅读Iptables的Ubuntu指南: https://help.ubuntu.com/community/IptablesHowTo

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

http://www.rackspace.com/knowledge_center/article/using-the-private-ip-address-on-your-cloud-server

更新 - 2013年9月22日

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

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

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

服务器1:

  • sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  • echo'deb http:// [删除此] downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'| sudo tee /etc/apt/sources.list.d/mongodb.list
  • apt-get install mongodb-10gen
  • apt-get update
  • apt-get install mongodb-10gen
  • mongo [Server 2 public ip]:27017 //测试与Server 2的连接
  • sudo apt-get install python-software-properties python g ++ make
  • sudo add-apt-repository ppa:chris-lea / node.js
  • apt-get update
  • apt-get install nodejs = 0.10.18-1chl1~preminision1
  • npm install mongoose
  • npm install connect-mongo
  • npm install express
  • 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 --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  • echo'deb http:// [删除此] downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen'| sudo tee /etc/apt/sources.list.d/mongodb.list
  • apt-get update
  • apt-get install mongodb-10gen
  • iptables -A INPUT -p tcp --dport 27017 -s [Server 1 private ip] -j ACCEPT