AWS EC2实例的备份解决方案

时间:2013-06-13 12:51:05

标签: amazon-web-services amazon-ec2 backup amazon-ebs

我正在寻找Amazon EC2实例的备份解决方案。 我发现了这个:http://www.n2ws.com我想知道是否还有其他的。

谢谢

PS:可以使用亚马逊解决方案自动备份RDS数据库,但EC2实例没有任何内容......有吗?

14 个答案:

答案 0 :(得分:10)

我几个月来一直在使用Skeddly来自动备份附加到我的EC2实例的EBS卷。

到目前为止,我真的很开心。我喜欢我可以定义要备份的实例的方式:只备份具有特定标记的实例。我只需要将此标记添加到我要备份的实例中。每次添加实例时都无需在Skeddly中进行任何更改。 我必须在Skeddly中定义2个动作:一个用于备份实例,另一个用于删除旧快照。

我收到电子邮件通知我行动(备份和到期)是否成功。

答案 1 :(得分:7)

如果您想要一个100%AWS解决方案来自动备份EC2实例,那么就有一个:AWS lambda。

使用以下内容创建基于Python的lambda:

import boto3

BACKUP_VOLUMES = [
  'vol-xxxxxxxx'
]

def lambda_handler(event, context):
    ec2 = boto3.resource('ec2')
    for volume in BACKUP_VOLUMES:
        ec2.create_snapshot(VolumeId=volume, Description='Automated backup')

并为其配置一个事件源,以便它每天运行。繁荣,没有麻烦,可靠的自动EC2备份,不需要其他实例来驱动它们和cron作业,或第三方服务。使用SES API,您也可以从该lambda发送电子邮件确认。

PS:确保lambda的IAM角色有权对EC2快照进行操作,例如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "ec2:CreateSnapshot",
                "ec2:DeleteSnapshot",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        }
    ]
}

答案 2 :(得分:6)

如果通过“EC2 Instances”您的意思是“使用EBS驱动器的EC2实例”,那么您可以通过AWS控制台和AWS API获得EBS的快照功能。

来自EBS Docs

  

Amazon EBS还提供了创建时间点快照的功能   卷,持久存储到Amazon S3。这些快照可以是   用作新Amazon EBS卷的起点和保护   数据为长期耐久性。可以使用相同的快照   根据需要实例化多个卷。可以复制这些快照   跨AWS区域,可以更轻松地利用多个AWS区域   用于地理扩张,数据中心迁移和灾难   回收

亚马逊不提供有关快照的任何计划或保留类型策略,但有一些第三方工具可利用AWS API。

答案 3 :(得分:3)

为了便于使用GUI进行管理,还有Skeddly。 大多数操作都是0.15加元。 也可以免费做所有这些事情。一个好的脚本是this

答案 4 :(得分:3)

我工作的公司几乎从一开始就使用亚马逊的S3,EBS和EC2。在完成第4天后失去2台(1台开发和1台生产)虚拟服务器并计划在第二天晚上在EC2上放松之后,这变得非常明显。总而言之,我们没有找到一个非常小巧,轻量级且几乎可以根据任何情况配置的独立应用程序。

使用AWS .NET SDK,我们能够在不到一天的时间内编写上述应用程序,然后在我们内部的Windows Server 2008 R2服务器上使用任务计划程序。我们已经完成了多个场景并确定了以下计划:每周创建EC2实例图像,每天创建EBS快照。根据我们与客户签订的合同,我们在60天后删除了超过31天的EC2实例,并根据我们的合同输入了EBS快照,该客户之前使用独立应用程序进行了刻录,该应用程序应该在其自己的内部调度代码上运行备份/机制。它从未跑过,在设置之后没有人看过它。随着应用程序的成熟,我们计划为我们的开发人员提供简单的电子邮件服务(SES)备份摘要/日志电子邮件,并使用简单队列服务(SQS)来记录流程。

希望这有帮助。

答案 5 :(得分:2)

您找到的云保护管理器产品(www.n2ws.com)确实支持完整EC2实例的自动备份,而不是单独备份EBS卷,以及RDS快照。它还具有您要查找的计划,数据保留策略和自动警报选项以及AWS的其他备份相关功能。

无法找到为EC2实例提供类似自动备份的其他第三方产品,但是某些云管理控制台允许快照调度&创建数据保留政策。

答案 6 :(得分:2)

对于关键应用程序,备份解决方案应该不仅仅是安排快照。

您可以期待应用程序支持,备份策略和强大的恢复选项等功能。

您可以在我的帖子中阅读:

http://www.n2ws.com/blog/tier-1-application-backup-on-amazon-cloud.html

它来自n2ws网站,也引用了CPM产品。

答案 7 :(得分:2)

这是基于AWS Lambda Boto3的脚本,它将实例备份到AMI图像并且工作得很棒:

import boto3, collections, datetime, sys

ec = boto3.client('ec2')

def lambda_handler(event, context):

    reservations = ec.describe_instances(        
        Filters=[
        {'Name': 'tag-key', 'Values': ['backup', 'Backup']},
    ]
    ).get(
        'Reservations', []
    )

    instances = sum(
        [
            [i for i in r['Instances']]
            for r in reservations
        ], [])

    print("Found %d instances that need backing up" % len(instances))

    to_tag = {}

    for instance in instances:
        try:
            retention_days = [
                int(t.get('Value')) for t in instance['Tags']
                if t['Key'] == 'retention'][0]
        except IndexError:
            retention_days = 7

        create_time = datetime.datetime.now()
        create_fmt = create_time.strftime('%Y-%m-%d_%H-%M-%S')

        AMIid = ec.create_image(InstanceId=instance['InstanceId'], Name="backup of " + instance['InstanceId'] + " dated " + create_fmt, Description="Lambda-created AMI of instance " + instance['InstanceId'] + " from " + create_fmt, NoReboot=True, DryRun=False)

        to_tag[retention_days] = AMIid['ImageId']

        print("Retaining AMI %s of instance %s for %d days" % (AMIid['ImageId'],
                                                               instance['InstanceId'],
                                                               retention_days)
             )

    print(to_tag.keys())

    for retention_days in to_tag.keys():
        delete_date = datetime.date.today() + datetime.timedelta(days=retention_days)
        delete_fmt = delete_date.strftime('%m-%d-%Y')
        print("Will delete %d AMIs on %s" % (len(to_tag[retention_days]), delete_fmt))

        ec.create_tags(
            Resources=[to_tag[retention_days],],
            Tags=[
                {'Key': 'DeleteOn', 'Value': delete_fmt},
            ]
        )

它被from here取代并适用于Python 3.强烈推荐!

答案 8 :(得分:1)

排序。您可以定期对EBS卷进行快照。虽然UI中没有任何内容可以自动为您执行此操作,但API允许您执行此操作。您可以滚动自己的备份脚本,也可以搜索已公开发布的备份脚本。

答案 9 :(得分:1)

这是自动AMI备份的脚本脚本!它将在您的VPC中找到所有实例的instance-id并创建AMI备份!

 #!/bin/bash

 #Script to Automate AMI backup

echo "----------------------------------\n   `date`   \n----------------------------------"

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-1c927479 |   awk '{ print $8 }' | sort -n   | grep  "i-" > /tmp/instanceid.txt



 #echo "instance-`date +%d%b%y`"-i-29efe0e4 > /tmp/aminame.txt

echo "Starting the Daily AMI creation: "
 #echo -e "Starting the Daily AMI creation: `cat /tmp/aminame.txt`\n"

 #To create AMI of defined instance

for i in $(cat /tmp/instanceid.txt); do
        echo "Creating AMI for Instance id $i ......."

echo "instance-`date +%d%b%y`-$i" > /tmp/aminame.txt

aws ec2 create-image --instance-id $i --name "`cat /tmp/aminame.txt`" --description "This is created by ami-backup.sh" --no-reboot | grep -ir ami | awk '{print $4}' > /tmp/amiID.txt

echo  "AMI Name is: `cat /tmp/aminame.txt`\n"

echo done 
done
echo done

答案 10 :(得分:1)

我忘记了Cloudwatch的推出,但它绝对允许你schedule automated EBS snapshots

Pol使用AWS Lambda的答案仍然具有相关性。关于Scheduling EBS SnapshotsDeleting old snapshots

,有很多博文

答案 11 :(得分:0)

有一个名为Scalr的开源项目我刚开始使用了大约一个星期,它具有的功能使您能够安排自动快照/备份您的EBS卷。 Scalr实际上是一个云管理解决方案,拥有许多我尚未玩过的精彩功能,但我很期待它。

有一个付费版本,但我现在只是在免费的开源版本上放弃了。 Scithr安装程序在Github上可用:https://github.com/Scalr/installer-ng Scalr源代码也在Gitub上:https://github.com/Scalr/scalr 安装说明在Scalr wiki上:https://scalr-wiki.atlassian.net/wiki/x/0Q8b

答案 12 :(得分:0)

您可以使用AutomatiCloud备份EC2卷和RDS实例。 AutomatiCloud允许您定义备份计划,并在您可以配置的保留期后进行清理。它还会在成功/失败的情况下发送电子邮件通知。 它是免费的! www.automaticloud.net

免责声明:我是作者

答案 13 :(得分:0)

备份所有aws ec2实例的简便方法是使用noovolari。它允许您安排定期备份,具有文件级恢复功能,并允许您以非常简单的方式恢复以前的快照。它还为5个ec2实例提供无限制免费套餐,这不会造成伤害。

我们已经在一些基础设施上使用它一段时间了,它完美无缺。