我有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]并实际使其正常工作?
答案 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:
这是我使用的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: