EC2上的mongodb EBS

时间:2012-10-29 14:41:03

标签: linux node.js mongodb amazon-ec2

我在ec2上使用mongodb和nodejs,我想部署它以便每天支持10,000个请求。 我想确保如果实例终止或重新启动(?),数据库将不会丢失。 我知道我需要创建一个用于存储数据的EBS卷。

我试过了http://www.mongodb.org/display/DOCS/Amazon+EC2+Quickstart#AmazonEC2Quickstart-ConfigureStorage但是没有用。我到了应该跑的地步 [ec2-user @ domU -...〜] $ sudo chown mongod:mongod / data 但我得到: chown:用户无效:`mongod:mongod'

通过以下方式解决:sudo chown mongod.mongod / data 仍然无法运行mongod工作:

$sudo /etc/init.d/mongod start
Starting mongod: forked process: 1694
all output going to: /log/mongod.log
                                                           [FAILED][ec2-user@domU-... /]$ sudo mongod --dbpath=/data
Mon Oct 29 21:46:56 [initandlisten] MongoDB starting : pid=1675 port=27017 dbpath=/data 64-bit host=domU-...
Mon Oct 29 21:46:56 [initandlisten] db version v2.2.0, pdfile version 4.5
Mon Oct 29 21:46:56 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Mon Oct 29 21:46:56 [initandlisten] build info: Linux ... c8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Mon Oct 29 21:46:56 [initandlisten] options: { dbpath: "/data" }
Mon Oct 29 21:47:00 [initandlisten] journal dir=/data/journal
Mon Oct 29 21:47:00 [initandlisten] recover : no journal files present, no recovery needed
Mon Oct 29 21:47:00 [initandlisten] 
Mon Oct 29 21:47:00 [initandlisten] ERROR: Insufficient free space for journal files
Mon Oct 29 21:47:00 [initandlisten] Please make at least 3379MB available in /data/journal or use --smallfiles
Mon Oct 29 21:47:00 [initandlisten] 
Mon Oct 29 21:47:00 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Oct 29 21:47:00 dbexit: 
Mon Oct 29 21:47:00 [initandlisten] shutdown: going to close listening sockets...
Mon Oct 29 21:47:00 [initandlisten] shutdown: going to flush diaglog...
Mon Oct 29 21:47:00 [initandlisten] shutdown: going to close sockets...
Mon Oct 29 21:47:00 [initandlisten] shutdown: waiting for fs preallocator...
Mon Oct 29 21:47:00 [initandlisten] shutdown: lock for final commit...
Mon Oct 29 21:47:00 [initandlisten] shutdown: final commit...
Mon Oct 29 21:47:00 [initandlisten] shutdown: closing all files...
Mon Oct 29 21:47:00 [initandlisten] closeAllFiles() finished
Mon Oct 29 21:47:00 [initandlisten] journalCleanup...
Mon Oct 29 21:47:00 [initandlisten] removeJournalFiles
Mon Oct 29 21:47:00 [initandlisten] shutdown: removing fs lock...
Mon Oct 29 21:47:00 dbexit: really exiting now

我不理解指南中的一个词......只有我......?是否有更简单易懂的指南来实现这一目标? 谢谢!

3 个答案:

答案 0 :(得分:3)

我遇到的问题描述如下: http://doubleclix.wordpress.com/2012/05/04/notes-on-mongo-at-aws/

最后我遵循了指南: http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

mongo正在运行! 除了根卷ebs之外,我只创建了一个EBS(20 GiB)并将其安装到/ data / db

我希望我的部署能够在每天使用nodejs和10,000个客户端请求时正常运行。 (如果我错了,或者有人对我所描述的部署有任何建议,我会非常感激)

谢谢

答案 1 :(得分:2)

步骤

  

sudo yum -y install mongo-10gen-server

应该创建一个用户来运行mongodb。但是,对于该用户是否被称为 mongod mongo ,10Gen的文档存在冲突。

请尝试以下方法:

  

sudo chown mongo:mongo / data

该步骤将 / data 目录的所有权更改为用户 mongo mongo 组。

答案 2 :(得分:0)

使用像Scalegrid.io这样的mongodb管理解决方案可能会更容易,该解决方案会在您的EC2帐户中创建mongodb实例。让实例运行实际上是工作中更容易的部分。你需要考虑

  1. 备份
  2. 恢复
  3. 监控
  4. 区域出现故障时的高可用性。