不确定您的防火墙配置,但您可能需要在 mongodb 服务器(设置中的服务器 2)上打开端口 27017。类似于以下内容:
sudo iptables -A INPUT -p tcp --dport 27017 -s [APP_SERVER IP ADDRESS HERE] -j ACCEPT
如果您还没有设置防火墙规则,我建议您阅读 Ubuntu 的 Iptables 指南:
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;dr 问题可能是 /etc/mongo.conf 文件中的 bind_ip 参数。
如果您复制并粘贴这些命令,请在安装 mongodb 时删除链接中的 '[remove this]' 部分。
服务器 1:
- sudo apt-key adv --keyserver hkp://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-get 安装 mongodb-10gen
- apt-get 更新
- apt-get 安装 mongodb-10gen
- mongo [Server 2 public ip]:27017 // 测试与服务器 2 的连接
- sudo apt-get install python-software-properties python g++ make
- sudo add-apt-repository ppa:chris-lea/node.js
- apt-get 更新
- apt-get install nodejs=0.10.18-1chl1~precise1
- npm 安装猫鼬
- npm 安装连接-mongo
- npm 安装快递
- vim 服务器.js
- 节点服务器.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://[remove this]downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
- apt-get 更新
- apt-get 安装 mongodb-10gen
- iptables -A INPUT -p tcp --dport 27017 -s [服务器 1 私有 ip] -j ACCEPT