The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Скрипт для резервного копирования E..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Скрипт для резервного копирования E..."  +1 +/
Сообщение от auto_tips (??) on 10-Дек-14, 13:19 
Постановка задачи: есть некоторое количество EC2-серверов в AWS, разбросанных по разным регионам. Требуется автоматизировать их резервное копирование так, чтобы восстановление было легким и быстрым.

Собственно, сам скрипт: [[https://github.com/jazzl0ver/aws-missing-tools/blob/master/e... ec2-automate-backup2ami.sh]]
Описание: [[https://github.com/jazzl0ver/aws-missing-tools/blob/master/e... README.md]]
Скрипт-обертка для запуска по крону: [[https://github.com/jazzl0ver/aws-missing-tools/blob/master/e... ec2-backup-wrapper.sh]]

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

Установить пакет [[http://aws.amazon.com/developertools/351 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/mast... ec2-automate-backup]] (бэкап EBS-дисков, без итерации по регионам) от [[https://github.com/colinbjohnson colinbjohnson]], за что ему большое спасибо.

PS2. Возможно под OS X скрипт будет работать неправильно (см. четвертую строчку в функции get_purge_after_date()), но у меня возможности проверить нет.

URL: https://github.com/jazzl0ver/aws-missing-tools/tree/master/e...
Обсуждается: https://www.opennet.ru/tips/info/2872.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Скрипт для резервного копирования EC2-серверов в AMI"  –1 +/
Сообщение от OldDiesel (??) on 10-Дек-14, 13:19 
fsfreeze используется в скрипте? если нет, как можно получить консистентный снапшот при помощи этого скрипта?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Скрипт для резервного копирования EC2-серверов в AMI"  +/
Сообщение от Alexander (ok) on 17-Мрт-15, 17:38 
Только сейчас увидел ваш комментарий - почему-то он не пришел мне на почту.

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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