Как запланировать автоматические (ежедневные) снимки AWS EC2 Windows Instance?

12

У меня есть несколько серверов Windows, размещенных на Amazon EC2. Некоторые из них работают под управлением Windows Server 2003, а другие - под управлением Windows Server 2008. Это экземпляры, поддерживаемые EBS. К большинству экземпляров также прикреплены дополнительные EBS-тома.

Мы хотим запланировать ежедневный снимок Windows-машин (а также подключенных EBS-томов) на S3, чтобы у нас были ежедневные резервные копии.

Можно подумать, что это очень распространенное требование, и оно будет доступно через Консоль управления AWS, но, увы, это не так. Какие подходы доступны? Как запланировать ежедневные снимки на наших серверах 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 недавно анонсировала инструменты командной строки PowerShell для Windows, и они упакованы вместе со своими AWS Tools для .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, прикрепленных к вашему экземпляру, и каждого снимка
Ameer Deen
Я вижу спасибо. Это означает, что для каждого тома будут отдельные снимки. Я просто хочу понять значение этого: в случае сбоя, как мне вызвать замену экземпляра? Снимки для корневого тома EBS и отдельных подключенных томов EBS будут отдельными. Как мне вызвать экземпляр для замены со смонтированными дисками из разных снимков?
Стэнли
Почему вы не можете настроить это через панель управления EC2? Для людей, которые не слишком уверены в сценариях?
leen3o
5

Обновление 2018 года В конце 2018 года есть два дополнительных способа автоматизации снимков EBS. Я все еще использую оригинальный метод событий CloudWatch, так как он работал годами, и не вижу смысла менять его.

Ops Automator (OA)

Ops Automator - это очень гибкий набор лямбда-скриптов, предоставляемых AWS. Он развернут с помощью шаблона CloudWatch, который находится на странице выше.

Это шаги настройки

  1. Шаблон AWS CloudFormation запускает базовую платформу, которая включает в себя набор микросервисов (функции AWS Lambda), которые управляют инициирующими событиями, выбором ресурсов, выполнением задач, контролем параллелизма и завершением.
  2. Данные конфигурации задачи, которые определяют инициирующее событие, порядок выполнения задачи, какие ресурсы будут выбраны действиями и где эти ресурсы расположены, хранятся в таблице Amazon DynamoDB.
  3. Сгенерированные решением шаблоны AWS CloudFormation конфигурируют задачи на основе определяемых вами параметров и ролей, необходимых для выполнения действий над учетными записями.
  4. Решение отслеживает все шаги процесса, выбранные ресурсы и результаты действий, включая возможные ошибки, в таблице DynamoDB.
  5. Решение также использует журналы Amazon CloudWatch для ведения журналов. Предупреждения и сообщения об ошибках публикуются в созданной решением теме Amazon Simple Notification Service (Amazon SNS), которая отправляет сообщения на подписанный адрес электронной почты.

Менеджер жизненного цикла данных (DLM)

Документация DLM . Это более простое, но менее гибкое решение, которое может создавать резервные копии томов каждые 12 или 24 часа. Я озадачен, почему AWS наложил это ограничение на DLM - еженедельно, ежемесячно или с переменной частотой - было бы легко реализовать.

DLM интегрирован в консоль AWS. Я не собираюсь копировать и вставлять документацию, поскольку AWS постоянно обновляет информацию, а ссылки редко ломаются.

Начиная с 2019 года DLM позволяет указывать более короткие интервалы, вплоть до двух часов, но все же не позволяет указывать интервалы более 24 часов.

Обновление 2017

По состоянию на 2017 год существует еще один способ создания обычных снимков - с помощью Cloudwatch Events .

Это позволяет планировать моментальные снимки, но не решает проблему используемого тома, поэтому это только частичное решение. Может быть способ использовать События CloudWatch для запуска чего-то, что действительно заставляет том работать.

  1. Откройте консоль CloudWatch по адресу https://console.aws.amazon.com/cloudwatch/ .

  2. В области навигации выберите События.

  3. Выберите Создать правило.

  4. Для источника события сделайте следующее:

    -> Выберите Расписание.

    -> Выберите «Фиксированная скорость» и укажите интервал расписания (например, 5 минут). Либо выберите выражение Cron и укажите выражение Cron (например, каждые 15 минут с понедельника по пятницу, начиная с текущего времени).

  5. Для целей выберите Добавить цель, а затем выберите EC2 Создать вызов API моментальных снимков.

  6. В качестве идентификатора тома выберите том EBS.

  7. Выберите Настроить детали.

  8. Для определения правила введите имя и описание правила.

  9. Для разрешений AWS выберите опцию создания новой роли. Это открывает консоль IAM в новой вкладке. Новая роль предоставляет встроенному целевому разрешению доступ к ресурсам от вашего имени. Выберите Разрешить. Вкладка с окном IAM закрывается.

  10. Выберите Создать правило.

Тим
источник
Бесплатное, простое и оригинальное решение для AWS.
Властимил Овчачик
1
Менеджер жизненного цикла теперь позволяет использовать любую частоту 2/3/4/6/8/12/24 часа.
Дэн
3

Вскочив на старый ответ, который начал меня в моих поисках. Престижность Ameer Deen выше для сценариев, кстати.

Нашел этот пост, который гораздо глубже погружается в сценарии PowerShell для полной автоматизации процесса сбора данных и создания снимков EBS:

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

Затем, конечно, обнаружил, что все они были написаны для устаревшей версии 1.0 AWS SDK, поэтому я провел последний день, чтобы исправить это и заставить их работать с v2.0:

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

Наслаждайтесь!

NLH
источник
3

AutomatiCloud делает именно то, что вам нужно. Это простой в использовании инструмент Windows, где вы можете запланировать резервное копирование для ваших томов EBS или RDS: www.automaticoud.net

Вы можете

  • создавать снимки и AMI на основе идентификаторов экземпляров или тегов
  • создавать динамические теги с помощью макросов
  • определить 3 уровня срока хранения (GFS-резервное копирование)
  • отправлять уведомления по электронной почте
  • добавить агент VSS для экземпляров Windows
  • запускать скрипты до / после резервного копирования
  • и многое другое...
Стефан Буре
источник
Это выглядит действительно хорошо! Я собираюсь скачать и попробовать позже сегодня.
leen3o
1
Automaticloud бесплатно? Будет ли он просить у меня денег после того, как я использую это некоторое время?
EricP
AutomatiCloud бесплатен. Расширенные функции требуют регистрации.
Стефан Буре
1

Теперь вы можете использовать AWS Lambda для автоматического создания AMI . Вся установка должна быть завершена примерно за 10 минут вместе с графиком, который вам нравится. Посмотрите на их репозиторий Github, чтобы внести свой вклад. Запустите скрипт самостоятельно и не давайте разрешения третьим лицам.

Ромо П
источник
0

Вы можете написать сценарий, который обращается к API EC2, чтобы запланировать эти снимки. Он может быть запущен на одном из ваших существующих экземпляров или вы можете настроить для этого небольшой экземпляр linux на t1.micro, единственной функцией которого является создание снимков для хостов Windows. Сценарий может быть помещен на хост Linux как задание cron для ежедневного запуска в указанное время.

Первая ссылка представляет собой пример сценариев, выполняемых с хоста Windows, и его можно легко автоматизировать с помощью запланированных задач в Windows.

Я не использовал приложение, на которое вы ссылались по второй ссылке.

Натан V
источник
Не могли бы вы рассказать подробнее? Я понимаю, что решение, вероятно, было бы для меня, чтобы написать какой-то сценарий, но этих знаний для меня недостаточно, к сожалению, для решения проблемы. Возможно, у вас есть ссылка или образец сценариев, на которые вы ссылаетесь?
Стэнли
Тот, который вы связали с вашим вопросом, на самом деле будет работать нормально. Вы вообще знакомы с инструментами командной строки AWS API?
Натан V
0

Текущие возможности моментального снимка EBS для экземпляров Windows описаны здесь: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Для получения согласованного снимка необходимо приостановить запись на том достаточно долго, чтобы завершить моментальный снимок. Как правило, это означает, что вы должны размонтировать том. Документ AWS не обсуждает, как это сделать с помощью командной строки в Windows, но вы можете узнать об этом в этой теме суперпользователя: /superuser/704870/mount-and-dismount-hard-drive-through -a-скрипт программное обеспечение

Чтобы получить снимок системного загрузочного тома, вам нужно остановить свой экземпляр.

Надеюсь, это поможет.

cloudyBlues
источник
0

Я понимаю, что это старый вопрос, но я поделюсь нашим решением.

Мы используем сервис под названием Ylastic . Их план Pro ($ 50 / мес) включает планирование моментальных снимков EBS, не ограничивая количество серверов или дисков. Он также удалит старые резервные копии, если вы хотите. Вы можете создать несколько расписаний (например, ежедневно, еженедельно и т. Д.), Каждое из которых имеет собственную политику хранения.

Интерфейс также позволяет создавать новые экземпляры из резервных копий.

Он работал надежно для нас годами, около двадцати экземпляров и сорока томов EBS. Вероятно, существуют более дешевые методы, но цена достаточно низкая, чтобы мы сами не заботились о создании и поддержании чего-либо.

См. Http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management для получения подробной информации об этой функции.

Мартейн Хеемельс
источник