|
MongoDB runs well on Amazon EC2. This page includes some notes in this regard. Getting Started on EC2This guide is intended to provide instructions on using the MongoDB AMI to set up production instances of MongoDB across Amazon's Web Services (AWS) EC2 infrastructure. First, we'll step through deployment planning (instance specifications, deployment size, etc.) and then we'll set up a single production node. We'll use those setup steps to deploy a three node MongoDB replica set for production use. Finally, we'll briefly cover some advanced topics such as multi-region availability and data backups. See the Amazon EC2 Quickstart guide for more information. Backup, Restore, VerifyDepending upon the configuration of your EC2 instances, there are a number of ways to conduct regular backups of your data. For specific instructions on backing up, restoring and verifying refer to EC2 Backup & Restore. Deployment NotesInstance TypesMongoDB works on most EC2 types including Linux and Windows. We recommend you use a 64 bit instance as this is required for all MongoDB databases of significant size. Additionally, we find that the larger instances tend to be on the freshest ec2 hardware. Installing MongoDBOne can download a binary or build from source. Generally it is easier to download a binary. We can download and run the binary without being root. For example on 64 bit Linux:
[~]$ curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.0.1.tgz
[~]$ tar -xzf mongodb-linux-x86_64-1.0.1.tgz
[~]$ cd mongodb-linux-x86_64-1.0.1/bin
[bin]$ ./mongod --version
Before running the database one should decide where to put datafiles. Run df -h to see volumes. On some images /mnt will be the many locally attached storage volume. Alternatively you may want to use Elastic Block Store which will have a different mount point. If you mount the file-system, ensure that you mount with the noatime and nodiratime atributes, for example
/dev/mapper/my_vol /var/lib/mongodb xfs noatime,noexec,nodiratime 0 0
Create the mongodb datafile directory in the desired location and then run the database: mkdir /mnt/db ./mongod --fork --logpath ~/mongod.log --dbpath /mnt/db/ Operating SystemOccasionally, due to the shared and virtualized nature of EC2, an instance can experience intermittent I/O problems and low responsiveness compared to other similar instances. Terminating the instance and bringing up a new one can in some cases result in better performance. Some people have reported problems with ubuntu 10.04 on ec2. NetworkingPort ManagementBy default the database will now be listening on port 27017. The web administrative UI will be on port 28017. KeepaliveChange the default TCP keepalive time to 300 seconds. See our troubleshooting page for details. Storage ConfigurationFor production use, we recommend raid 10 across 4-8 ebs drives for best performance. Local ec2 drives may be faster but are generally not suitable as they are ephemeral. Multiple ebs drives increase the potential number of random IO's per second (iops), but not necessarily sequential read/write throughput much. In most database applications random iops are important. For more information, refer to EBS info at Amazon Web Services. EBS SnapshotsIf your datafiles are on a single EBS volume, you can snapshot them for backups. If you are using journaling, simply take a snapshot (including the journal/ directory). If not using journaling, you need to use the lock+fsync command (v1.3.1+). Securing instancesSecure your instances from direct external access by the use of Security Groups. A common approach is to create a MongoDB security group that contains the nodes of your cluster (replica set members or sharded cluster members). Then create a separate group for your app servers or clients. Communication across regionsEvery EC2 instance will have a private IP address that can be used to communicate within the EC2 network. It is also possible to assign a public "elastic" IP to communicate with the servers from another network. If using different EC2 regions, servers can only communicate via public IPs. To set up a cluster of servers that spans multiple regions, it is recommended to cname the server hostname to the "public dns name" provided by EC2. This will ensure that servers from a different network use the public IP, while the local servers use the private IP, thereby saving costs. This is required since EC2 security groups are local to a region. For example one solution is following, on each server:
Then:
PresentationsMongoDB & AWS - Free Webinar on January 20, 2012 Presentation from MongoSV (December 2011) More Presentations
|

PLEASE POST QUESTIONS IN THE FORUMS: http://groups.google.com/group/mongodb-user. Post tips and clarifications here.
blog comments powered by Disqus