AWS EC2 Windowsインスタンスの自動(毎日)スナップショットをスケジュールする方法は?


12

Amazon EC2でホストされているWindowsサーバーがいくつかあります。一部はWindows Server 2003を実行し、他はWindows Server 2008を実行します。これらはEBS-backedインスタンスです。ほとんどのインスタンスには、追加のEBSボリュームがいくつか追加されています。

Windowsマシン(および接続されているEBSボリューム)の毎日のスナップショットをS3にスケジュールして、毎日のバックアップを使用できるようにします。

これは非常に一般的な要件であり、AWS Management Consoleを介して利用可能になると考えられますが、残念ながらそうではありません。どのようなアプローチが利用可能ですか?Windowsサーバーで毎日のスナップショットをスケジュールするにはどうすればよいですか?

Linux用のオンラインのスクリプト例はいくつかありますが、Windows用ではありません。私は見て持っていたhttp://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.htmlなどhttps://github.com/ronmichael/aws-snapshot-をスケジューラー。誰かがこれらのアプローチのいずれかを使用し、機能しますか?

Skeddlyのような一見安価なサービスも検討しましたが、複数のサーバーで使用すると、価格がすぐに上昇し、独自のソリューションを作成して、それを適用できるようになります。将来の新しいサーバー。Skeddlyを使用すると、サーバーごとに料金がかかります。

Windowsインスタンスの毎日のスナップショットをどのようにスケジュールしますか?

回答:


9

Amazon Web Servicesは最近、Windows用のPowerShellコマンドラインツールを発表し、AWS Tools for .NET SDKと一緒にパッケージ化されています

AWS Powershellツールを使用すると、スナップショットを非常に簡単に作成できます。

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ツールがインストールされていることを確認し、上記のスニペットに類似した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"
}

どうもありがとうございました。これは私が探しているもののようです。明確にしてください:New-EC2Snapshotコマンドは特定のボリュームのスナップショットのみを取得するようです。私の場合、インスタンスがあり、いくつかのEBSボリュームも接続されています。ルートデバイスと接続されたEBSボリュームを含むインスタンス全体の完全なスナップショットを取得するにはどうすればよいですか?
スタンレー

@Stanleyインスタンスに接続EBSボリュームのクエリに更新され、各スナップショット
アミールディーン

ありがとうございます。つまり、ボリュームごとに個別のスナップショットが作成されます。これの意味を理解したいだけです。障害が発生した場合、代替インスタンスをどのように起動しますか?EBSルートボリュームとマウントされた個々のEBSボリュームのスナップショットはすべて別々になります。異なるスナップショットからマウントされたドライブを使用して、代替インスタンスをどのように起動しますか?
スタンレー

なぜEC2ダッシュボードからこれを設定できないのですか?スクリプトに過度に自信がない人向けですか?
leen3o

5

2018アップデート2018年 後半には、EBSスナップショットを自動化する2つの追加方法があります。CloudWatchイベントの元の方法は今でも使用しています。何年も問題なく機能しており、変更しても意味がありません。

Ops Automator(OA)

Ops Automatorは、AW​​Sが提供する非常に柔軟なラムダスクリプトのセットです。上記のページにあるCloudWatchテンプレートを使用してデプロイされます。

セットアップ手順は

  1. AWS CloudFormationテンプレートは、トリガーイベント、リソース選択、タスク実行、同時実行制御、完了を管理するマイクロサービス(AWS Lambda関数)のスイートを含むコアフレームワークを起動します。
  2. トリガーイベント、タスクの実行方法、アクションによって選択されるリソース、およびこれらのリソースの場所を定義するタスク構成データは、Amazon DynamoDBテーブルに格納されます。
  3. ソリューションで生成されたAWS CloudFormationテンプレートは、定義したパラメーターと、アカウント間でアクションを実行するために必要なロールに基づいてタスクを構成します。
  4. ソリューションは、プロセス内のすべてのステップ、選択したリソース、および起こりうるエラーを含むアクションの結果をDynamoDBテーブルで追跡します。
  5. このソリューションでは、ログ記録にAmazon CloudWatch Logsも活用しています。警告およびエラーメッセージは、ソリューションが作成したAmazon Simple Notification Service(Amazon SNS)トピックに発行され、サブスクライブされたEメールアドレスにメッセージが送信されます。

データライフサイクルマネージャー(DLM)

DLMドキュメント。これは、12時間または24時間ごとにボリュームをバックアップできる、よりシンプルですが柔軟性の低いソリューションです。AWSがDLMにこの制限を設けた理由に戸惑っています-毎週、毎月、または可変頻度は簡単に実装できたでしょう。

DLMはAWSコンソールに統合されています。AWSは物事を適切に更新し、リンクはほとんど壊れないため、ドキュメントをコピーして貼り付けるつもりはありません。

2019年現在、DLMでは2時間までの短い間隔指定できますが、24時間を超える間隔を指定することはできません。

2017アップデート

2017年以降、Cloudwatch Eventsを使用して、通常のスナップショットを作成する別の方法があります。

これにより、スナップショットをスケジュールできますが、使用中のボリュームの問題は解決されないため、部分的な解決策にすぎません。CloudWatchイベントを使用して、ボリュームを静止させる何かをトリガーする方法があります。

  1. https://console.aws.amazon.com/cloudwatch/で CloudWatchコンソールを開きます

  2. ナビゲーションペインで、[イベント]を選択します。

  3. ルールの作成を選択します。

  4. イベントソースの場合、次の手順を実行します。

    ->スケジュールを選択します。

    -> [固定レート]を選択し、スケジュール間隔(5分など)を指定します。または、Cron式を選択し、Cron式を指定します(たとえば、月曜日から金曜日まで、現在の時刻から15分ごとに)。

  5. [ターゲット]で、[ターゲットの追加]を選択してから、[EC2 Create Snapshot API call]を選択します。

  6. ボリュームIDには、EBSボリュームを選択します。

  7. 詳細設定を選択します。

  8. [ルールの定義]で、ルールの名前と説明を入力します。

  9. AWSのアクセス許可の場合、新しいロールを作成するオプションを選択します。これにより、IAMコンソールが新しいタブで開きます。新しい役割は、組み込みのターゲットに、ユーザーに代わってリソースにアクセスする許可を付与します。許可を選択します。IAMウィンドウのあるタブが閉じます。

  10. ルールの作成を選択します。


AWS向けの無料のシンプルでネイティブなソリューション。
VlastimilOvčáčík

1
ライフサイクルマネージャーは、2/3/4/6/8/12/24時間の頻度のいずれかを許可するようになりました。
ダンプリッツ

3

私の検索を開始した古い答えに飛びつきました。スクリプトについては、上記のAmeer Deenに称賛を。

データ収集とEBSスナップショットプロセスを完全に自動化するために、PowerShellスクリプトをさらに深く掘り下げたこの投稿を見つけました。

http://messor.com/aws-disaster-recovery-automation-w-powershell/

それからもちろん、これらはすべて、現在は減価償却されているAWS SDK v1.0向けに書かれていることを発見しました。

https://github.com/noahlh/aws-automated-backup-powershell

楽しい!


3

AutomatiCloudはまさにあなたが必要とすることを行います。EBSボリュームまたはRDSインスタンスのバックアップをスケジュールできる使いやすいWindowsツールです: www.automaticoud.net

あなたはできる

  • インスタンスIDまたはタグに基づいてスナップショットとAMIを作成する
  • マクロを使用してダイナミックタグを作成する
  • 保持期間の3つのレベルを定義する(GFSバックアップ)
  • メール通知を送信する
  • WindowsインスタンスにVSSエージェントを追加する
  • バックアップの前後にスクリプトを実行する
  • などなど...

これは本当によさそうです!今日はダウンロードして試してみます。
leen3o

1
自動音量は無料ですか?しばらく使用した後、お金を要求されますか?
EricP

AutomatiCloudは無料です。高度な機能には登録が必要です。
ステファンビューレ


0

EC2 APIと通信してこれらのスナップショットをスケジュールするスクリプトを作成できます。既存のインスタンスの1つで実行できます。または、Windowsホストのスナップショットを開始することが唯一の機能であるt1.microで、この目的のために小さなLinuxインスタンスをセットアップできます。このスクリプトは、選択した時間に毎日実行されるcronジョブとしてLinuxホストに配置できます。

最初のリンクは、Windowsホストからのスクリプトの例であり、Windowsのスケジュールされたタスクを使用して簡単に自動化できます。

2番目のリンクでリンクしたアプリケーションを使用していません。


もっと詳しく教えていただけますか?解決策はおそらく私が何らかのスクリプトを書くことになると思いますが、残念なことに、この知識だけでは問題を解決するのに十分ではありません。おそらくあなたが参照しているスクリプトのリンクまたはサンプルをお持ちですか?
スタンレー

質問からリンクしたものは、実際に正常に機能します。AWS API Command-Lineツールにまったく精通していますか?
ネイサンV

0

Windowsインスタンスの現在のEBSスナップショット機能については、http//docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.htmlで説明しています。

一貫性のあるスナップショットを取得するには、スナップショットが完了するまでボリュームへの書き込みを一時停止する必要があります。通常、これはボリュームをアンマウントする必要があることを意味します。AWSのドキュメントでは、Windowsのコマンドラインでこれを行う方法については説明していませんが、このスーパーユーザースレッドで確認できます:https : //superuser.com/questions/704870/mount-and-dismount-hard-drive-through -スクリプトソフトウェア

システムブートボリュームのスナップショットを取得するには、インスタンスを停止する必要があります。

お役に立てば幸いです。


0

これは古い質問だと思いますが、私たちの解決策を共有します。

Ylasticというサービスを使用します。Proプラン(50ドル/月)には、サーバーまたはディスクの数を制限することなく、EBSスナップショットのスケジューリングが含まれています。必要に応じて、古いバックアップも削除されます。それぞれ独自の保持ポリシーを使用して、複数のスケジュール(毎日、毎週など)を作成できます。

このインターフェイスでは、バックアップから新しいインスタンスを作成することもできます。

約20のインスタンスと40のEBSボリュームで、長年にわたって信頼性の高い方法で機能していました。おそらくもっと安価な方法がありますが、価格は十分に低いため、自分で何かを構築したり維持したりする必要はありません。

参照http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-managementをこの機能の詳細については。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.