I found a lot of questions to this topic already, but I'm still not 100% sure what's the best approach to do so.

The option I'd prefer is using EBS snapshots. The pros would be that I can spin up a new AMI, detach the volume and attach the new one from the snapshot, without having much downtime.

I've read that an EBS snapshot in a running system is not the best idea, because the OS still writes something to the disk, but I'm not sure if it's a huge deal. I have two web server, so if I snapshot them while running that won't have a big impact, because I wouldn't loose any important data. All important data are stored in a RDS database and are already backed up.

Doing a file system level backup would be a second option and I'd have my files, but the recovery process would take longer and we can't afford have much downtime.

What would you recommend to do in this case?

  • What are you backing up? Ideally, you wouldn't need to backup the EC2 instance. You would just spin up another, and bootstrap it. – Edwin Feb 20 '14 at 6:11
  • @Edwin can you explain a bit further what exactly you mean? I want to have an exacty copy of the EC2 instances, we are currently running. So if something crashes or doesn't work anymore I can just setup a new instance from backup with minimal downtime. – paul.tw Feb 20 '14 at 7:47
  • The idea is to start the VM with a vanilla instance, and right after the OS boots, have a script install all the packages/programs/services you need and import config data. With this approach, you need not worry about backing up your instance. You only need to backup your database and code base. This also simplifies your SDLC environments. – Edwin Feb 20 '14 at 7:53
  • @Edwin My goal is currently to automate as much as possible, but the process is also time consuming and I also need to work on other stuff. The code is hosted separately and as well as the puppet code, but it's still work in process. – paul.tw Feb 20 '14 at 8:14

EBS snapshots are fine. I'm currently using Skeddly to run EBS Snapshots and it's running great so far. See my post: https://stackoverflow.com/questions/17087542/backup-solutions-for-aws-ec2-instances/21284794#21284794

As you said, if you don't have any database running on the instance it's fine. Otherwise you would have to also backup the databases to avoid data integrity issues.

  • I think I'll just go with scheduling the EBS snapshot on a running system. In case some EC2 instance fails some day, I can just create an image from the snapshot and create a new EC2 instance from the image. – paul.tw Feb 20 '14 at 2:58

I recommend scheduling whole AMIs of your instance in question. I use http://www.snapleaf.io to do this - and they do not charge anything.

  • That wouldn't be not optimal, because creating an AMI will stop the EC2 instance, no? I want to avoid downtime where possible. Also, I don't know who runs snapleaf.io or what it is but it looks more like a phishing website than something serious. You go to the page and it asks you to create a user. After signup it asks you to give it your AWS credentials. There is no page explaining what the website does so please don't post any links to that. – paul.tw Feb 20 '14 at 2:56

Why would creating an AMI not be optimal? Just select "No Reboot" when creating the AMI-then your good to go.

  • Okay, thanks for the tip. Never heard that it's possible as well. – paul.tw Feb 20 '14 at 7:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.