The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Скрипт для резервного копирования EC2-серверов в AMI
Постановка задачи: есть некоторое количество EC2-серверов в AWS, разбросанных
по разным регионам. Требуется автоматизировать их резервное копирование так,
чтобы восстановление было легким и быстрым.

Собственно, сам скрипт: ec2-automate-backup2ami.sh
Описание: README.md
Скрипт-обертка для запуска по крону: ec2-backup-wrapper.sh

Для работы скрипта предварительно необходимо: 

Установить пакет ec2-api-tools (у меня он версии 1.7.1.2)

Подредактировать скрипт-обертку ec2-backup-wrapper.sh, указав путь к
ec2-automate-backup2ami.sh и к лог-файлу

Создать в AWS IAM отдельного пользователя для бэкапов и назначить ему похожую политику:

   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Sid": "Stmt1389911824000",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateImage",
           "ec2:CreateSnapshot",
           "ec2:CreateTags",
           "ec2:DeleteSnapshot",
           "ec2:DeregisterImage",
           "ec2:DescribeRegions",
           "ec2:DescribeSnapshotAttribute",
           "ec2:ModifySnapshotAttribute",
           "ec2:DescribeImages",
           "ec2:DescribeInstances",
           "ec2:DescribeSnapshots",
           "ec2:DescribeTags",
           "ec2:DescribeVolumeAttribute",
           "ec2:DescribeVolumeStatus",
           "ec2:DescribeVolumes"
         ],
         "Resource": [
           "*"
         ]
       }
     ]
   }

Создать файл с параметрами доступа для созданного пользователя:

   [ec2-user@zenoss ~]$ cat .stage
   export AWS_ACCESS_KEY=access_key
   export AWS_SECRET_KEY=secret_key
   export AWS_ACCESS_KEY_ID=access_key
   export AWS_SECRET_ACCESS_KEY=secret_key

Указать EC2_HOME

Кронтаб выглядит примерно так:

   [ec2-user@backup ~]$ crontab -l
   PATH=$PATH:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
   EC2_HOME=/usr/local
   SHELL=/bin/bash

   00 2 * * * ./ec2-backup-wrapper.sh stage "alerts1@mydomain.cc alerts2@mydomain.cc"

Результат работы скрипта записывается в лог-файл вида
ec2-automate-backup2ami.stage.log. В случае ошибки выполнения он будет
отправлен на указанные почтовые адреса.

Стоит обратить внимание, что файл с параметрами называется .stage, а скрипт
вызывается с названием без точки.

После успешного выполнения, в AWS AMI появится образ с именем
ec2ab_server.domain.cc_YYYY-MM-DD и со следующими тэгами:

Name - название инстанса EC2
InitiatingHost - FQDN бэкап-сервера
PurgeAfterFE - дата удаления образа в формате unix time
PurgeAfter - дата удаления образа в формате YYYY-MM-DD
(исключительно для удобства админа, скрипт использует PurgeAfterFE)
PurgeAllow - разрешает автоматическое удаление образа (по умолчанию - true)
Instance - ID инстанса EC2
Created - дата создания образа в формате YYYY-MM-DD

Понятно, что восстановление сводится к запуску инстанса из образа

PS. Скрипт создан на основе
[[href="https://github.com/colinbjohnson/aws-missing-tools/tree/master/ec2-automate-backup ec2-automate-backup]]
 (бэкап EBS-дисков, без итерации по регионам) от colinbjohnson, за что ему
большое спасибо.

PS2. Возможно под OS X скрипт будет работать неправильно (см. четвертую строчку
в функции get_purge_after_date()), но у меня возможности проверить нет.
 
26.11.2014 , Автор: Alexander , Источник: https://github.com/jazzl0ver/aws-mi...
Ключи: amazon, ec2, backup, ami
Раздел:    Корень / Администратору / Система / Диски и файлы / Резервное копирование

Обсуждение [ RSS ]
  • 1, OldDiesel (??), 13:19, 10/12/2014 [ответить]  
  • –1 +/
    fsfreeze используется в скрипте? если нет, как можно получить консистентный снапшот при помощи этого скрипта?
     
     
  • 2, Alexander (ok), 17:38, 17/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Только сейчас увидел ваш комментарий - почему-то он не пришел мне на почту.

    Нет, fsfreeze не используется, т.к. его не было в скрипте, который я форкал. Возможно, реализую в одной из следующих версий. За замечание - спасибо.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру