Автоматический бэкап дисков

Наверное, каждый сталкивался с вопросом бэкапа дисков, когда начинал пользоваться AWS. Возможность есть и через консоль, и через API — бери и создавай.

$ aws ec2 create-snapshot
[--description <value>]
--volume-id <value>
[--tag-specifications <value>]
[--dry-run | --no-dry-run]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Но хотелось какой-то автоматики, чтобы само, по расписанию, эти диски — раз в неделю, эти – раз в 10 минут. И чтобы старые снэпшоты не хранились вечно, а удалялись после создания новых. И каждый мастерил какое-то свое решение. Кто в cron скриптик дергал, кто Lambda функцию писал и ее через CloudWatch Events запускал. Есть не одно подобное решение на github.com.

И как гром среди ясного неба — новый сервис от AWS — Amazon Data Lifecycle Manager for EBS Snapshots. Как раз то, что нужно.  Создаешь политики, и все само бэкапится.

Работает, правда пока не во всех регионах, а только в US East (N. Virginia), US West (Oregon), и Europe (Ireland) . Но это временно, скоро, думаю, будет везде.

EC2 Autoscaling. Жизненный цикл.

Жизненный цикл инстанции в Autoscaling Group начинается с события «Scale OUT», когда по какому-то триггеру в группу добавляется новая инстанция. Триггеры могут быть совершенно различные – срабатывание Alarm на увеличение загрузки инстанции, увеличение желаемого числа инстанций в группе и т.д. После события «Scale OUT» инстанция попадает в состояние «Pending». Тут инстанция создается и запускается в соответствии тому, что описано «Launch Configuration» — шаблоне, где описано что запускать. «User Data» скрипт тоже исполняется на этом шаге. После того как инстанция запустилась и доступна срабатывает «EC2_INSTANCE_LAUNCHING lifecycle hook» и инстанция переходит в состояние «Pending:Wait» и выходит из этого состояния по завершению работы хука. Аналогичный хук срабатывает при прерывании инстанции и выхода ее из Autoscaling Group. Также инстанция может быть принудительно выведена из Autoscaling Group, добавлена в нее или переведена в состояние «Standby», например для исследования проблем, связанных с инстанцией.

На диаграмме ниже показан жизненный цикл инстанции в Autoscaling Group.

Читать далее

Тюним WordPress в AWS

Создание сайта на WordPress сейчас происходит очень просто и быстро. Много документации написано на этот счет. В AWS уже существуют предопределенные образы для виртуальных машин (вот, например), где все установлено и настроено. Несколько кликов мышкой и сайт функционирует, остается только выбрать тему, сделать минимальные настройки и загрузить контент. В этом посте расскажу, как сделать сайт на WordPress немного более надежным, защищенным и какие сервисы AWS для этого можно использовать. Отправной точкой будет созданный и функционирующий Web сайт, который запущен на одной виртуальной машине. То есть MySQL, PHP и сам WordPress установлены и настроены на одной машине. Читать далее

SQS и Lambda

Начиная с прошлой недели стало возможным использовать Amazon Simple Queue Service (SQS) как триггер для вызова Lambda функций. Довольно востребованная функциональность, если подумать. Обычное использование очереди: есть какой-то вычислительные ресурс (например EC2), который регулярно опрашивает очередь на предмет новых сообщений; если сообщение появляется в очереди, вычислительный ресурс его обрабатывает и снова попадает в цикл ожидания. Если сообщений в очереди много, за чем можно следить при помощи метрик Amazon CloudWatch, то количество обработчиков можно увеличить, используя AutoScasling. Таким образом нужно было держать вычислительный ресурс, который бы «следил» нет ли в очереди сообщений. Сейчас это полностью можно заменить сервисом Amazon Lambda. А учитывая то, что Amazon Lambda автоматически «скэйлится», то не нужно думать об увеличении вычислительных мощностей в ответ на увеличение сообщений в очереди.
Читать далее

S3DistCp. Копируем данные.

Все началось с миграции. Задача была очень простая. Нужно мигрировать данные, лежащие в S3 из одного региона в другой. Попросту говоря скопировать содержимое одной корзины в другую. И сложностей никаких – данные незашифрованные, почти не меняются, все права чтения-запись есть. Бери и копируй. Один нюанс – размер несколько терабайт. И скопировать нужно быстро.

И так имеем — корзина «source» в регионе eu-central-1(Франкфурт) и корзина «target» в регионе eu-west-1(Ирландия). Цель – содержимое «source» скопировать в «target».

Читать далее