我有一些在Amazon EC2上托pipe的Windows服务器。 一些运行Windows Server 2003和其他运行Windows Server 2008.这些是EBS支持的实例。 大多数实例还附加了一些额外的EBS卷。
我们希望将每天的Windows机器快照(以及连接的EBS卷)安排到S3,以便我们每天都有可用的备份。
有人会认为这是一个非常普遍的要求,可以通过AWSpipe理控制台提供,但是,事实并非如此。 有什么方法可用? 我如何在Windows服务器上安排每日快照?
有几个在线的脚本例子可以在Linux上使用,但是对于windows而言则不是那么多。 我曾看过http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html以及https://github.com/ronmichael/aws-snapshot-调度程序 。 有没有人使用这些方法之一,它的工作?
我也考虑过像Skeddly这样的服务,乍一看似乎不贵,但是当你把它用于多台服务器时,价格很快就会boost到这样一个点,看起来更好的select是创build你自己的解决scheme,然后将它应用到未来的新服务器。 用Skeddly我们会支付每个服务器。
我们如何计划Windows实例的每日快照?
Amazon Web Services最近宣布推出用于Windows的PowerShell命令行工具,并将其与AWS Tools for .NET SDK一起打包。
AWS Powershell工具使创build快照变得非常容易:
New-EC2Snapshot "vol-371acd04" -Description "My Snapshot"
你可以像这样查询你的快照:
PS C:\Program Files (x86)\AWS Tools\PowerShell> Get-EC2Snapshot | more SnapshotId : snap-18be2b28 VolumeId : vol-371acd04 Status : completed StartTime : 2012-12-28T08:17:00.000Z Progress : 100% OwnerId : 383816850479 VolumeSize : 30 Description : My Snapshot OwnerAlias : Tag : {}
确保安装了AWS Powershell工具,并创build一个计划任务,使用类似于上面代码片段的PowerShell脚本来安排快照,而且应该很好。
已更新为查询附加的EBS卷:
要查询连接到您的实例的EBS卷,然后快照每个人,你可以做这样的事情:
# Find my instance ID from the EC2 metadata $myInstanceID = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id") # Query for volumes that are attached to my Instance Id $volumes = (Get-EC2Volume).Attachment | where {$_.InstanceId -eq $myInstanceID } | Select VolumeId # Iterate through these volumes and snapshot each of them foreach ($volume in $volumes) { New-EC2Snapshot $volume.VolumeId -Description "My Snapshot" }
跳进一个让我开始寻找的旧的答案。 对Ameer的荣誉上面的脚本,顺便说一句。
发现这篇文章深入到PowerShell脚本深入到全面自动化数据收集和EBS快照过程:
http://messor.com/aws-disaster-recovery-automation-w-powershell/
然后当然发现这些都是为AWS SDK的现在已经贬值的v1.0编写的,所以我花了最后一天修复这个问题,并让他们都使用v2.0:
https://github.com/noahlh/aws-automated-backup-powershell
请享用!
AutomatiCloud正是你所需要的。 这是一个易于使用的Windows工具,您可以安排备份您的EBS卷或RDS实例: http://www.automaticoud.net
您可以
您现在可以使用AWS Lambda自动创buildAMI 。 整个安装过程应该在10分钟左右完成,并附上您喜欢的时间表。 看看他们的Github回购也贡献。 自己运行脚本,避免给第三方权限。
截至2017年,还有另一种创build定期快照的方法 – 使用Cloudwatch Events 。
这可以让您安排快照,但是它不能解决正在使用的卷的问题,所以这只是一个部分的解决scheme。 使用CloudWatch事件可能会有一种方法触发停顿音量的操作。
通过以下url打开CloudWatch控制台: https: //console.aws.amazon.com/cloudwatch/。
在导航窗格中,select“事件”。
select创build规则。
对于事件源,请执行以下操作:
– >select时间表。
– >select固定费率并指定计划间隔(例如5分钟)。 或者,selectCronexpression式并指定Cronexpression式(例如,从当前时间开始,每隔15分钟周一到周五)。
对于目标,请select添加目标,然后selectEC2创build快照API调用。
对于卷ID,select一个EBS卷。
selectconfiguration详情。
对于规则定义,input规则的名称和描述。
对于AWS权限,请select创build新angular色的选项。 这将在新选项卡中打开IAM控制台。 新angular色授予内置目标权限,以您的名义访问资源。 select允许。 带有IAM窗口的选项卡closures。
select创build规则。
您可以编写一个与EC2 API对话的脚本来安排这些快照。 它可以在你现有的一个实例上运行,或者你可以在t1.micro上为此设置一个小型的linux实例,其唯一的function是启动Windows主机的快照。 脚本可以放在Linux主机上作为cron作业,在您select的时候每天运行。
第一个链接是从Windows主机进行脚本编写的示例,可以使用Windows中的计划任务轻松实现自动化。
我还没有使用你的第二个链接链接的应用程序。
Windows实例的当前EBS快照function在这里解释: http : //docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html
为了获得一致的快照,您必须暂停写入该卷足够长的时间才能完成快照。 通常,这意味着您必须卸载卷。 AWS文档没有讨论如何通过Windows上的命令行来实现这一点,但是您可以在这个超级用户线程中find相关信息: https : //superuser.com/questions/704870/mount-and-dismount-hard-drive-through -a脚本软件
要获得系统启动卷的快照,您需要停止您的实例。
希望有所帮助。
我意识到这是一个老问题,但我会分享我们的解决scheme。
我们使用一个名为Ylastic的服务。 他们的Pro计划($ 50 /月)包括EBS快照的调度,不限制服务器或磁盘的数量。 如果需要,它也会删除较旧的备份。 您可以使用自己的保留策略创build多个日程表(例如,每日,每周等)。
该界面还允许您从备份创build新的实例。
多年来我们的工作可靠,约有二十个实例和四十个EBS卷。 有可能更便宜的方法,但价格足够低,我们没有打扰,build立和维护自己的东西。
有关此function的详细信息,请参阅http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management 。
按照下面的链接,
http://jayaraj.sosblogs.com/The-first-blog-b1/AWS-Automated-EBS-Snapshot-Script-b1-p3.htm
希望这可以帮助。 🙂
注意:这个脚本只适用于linux