Назад | Перейти на главную страницу

EC2 Autoscaling AMI и автоматическое присоединение нового EBD из снимка

Пытаюсь понять, как настроить автоматическое масштабирование EC2 для автоматического подключения и тома EBS при создании нового экземпляра.

В идеале мы пытаемся достичь следующего при создании новых экземпляров.

  1. Создайте моментальный снимок из главного экземпляра, одного из текущих экземпляров в группе (это может отличаться, поскольку автоматическое масштабирование добавляет и удаляет экземпляры).

  2. Создайте новый экземпляр из нашего AMI

  3. Создайте том EBS из снимка в 1.

  4. Прикрепите и смонтируйте том к экземпляру

  5. Добавьте новый экземпляр в балансировщик нагрузки.

Это возможно. ключевая проблема связана с работой с EBS ...

Любой совет

В определенной степени это возможно с помощью некоторых основных вызовов API. Как выполнять вызовы API, зависит от вас, их можно сделать из командной строки, используя инструменты, которые уже есть в пути (или, по крайней мере, они уже должны быть там), или с помощью различных библиотек, для которых Amazon построил SDK, включая Java, Ruby, Python, PHP и .NET. Приведенные ниже инструкции предназначены для Linux-машины, использующей сценарии bash, хотя для них есть сопоставимые команды Windows, я не знаю причуд, связанных с их использованием.

Я использую AMI для ссылки на образ машины Amazon и вызов API для ссылки на инструменты командной строки, как инструменты AMI, так и инструменты API, поскольку их имена уникальны.

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

    • Отключите экземпляр от вашего компьютера, позаботившись о любых последствиях в вашем приложении (например, об отсутствии базы данных для записи). Обычно я использую umount -v / dev / sdf / $ MOUNT_DIR. Используйте переключатель -v, чтобы получить вывод для обработки ошибок.
    • Передайте идентификатор тома для создания снимка с помощью ec2-создать-моментальный снимок. Для этого не нужно отключать накопитель, но это безопаснее. Некоторые файловые системы, такие как xfs, могут замораживать файловую систему, чтобы обеспечить безопасное монтирование снимков. Обязательно сохраните идентификатор снимка, чтобы использовать его позже.
    • При необходимости перемонтируйте диск с помощью mount -v -t [тип файловой системы] / dev / sdf / $ MOUNT_DIR

  2. Объединение нового экземпляра из уже развернутого AMI довольно просто. В идеале ваш AMI настроен так, чтобы вся в основном статическая информация (конфигурации, библиотеки, установленные программы и т. Д.) Находилась в временном хранилище устройства, а все данные (базы данных, журналы и т. Д.) Хранились на подключенных дисках. Это идеальный вариант, поскольку команды объединения AMI должны блокировать FS, но позволяют исключить определенные каталоги. ПРИМЕЧАНИЕ. Для каждого из них вам нужно будет предоставить свои учетные данные Amazon, которые охватывают несколько вещей со страницы вашей учетной записи, включая идентификатор ключа доступа, секретный ключ доступа, сертификат, закрытый ключ и идентификатор учетной записи AWS.

    • Объедините свою корневую файловую систему, используя ec2-bundle-vol
    • Загрузите пакет на Amazon, используя ec2-upload-bundle
    • Зарегистрируйте пакет на Amazon, чтобы вы могли запустить с ним экземпляр, используя ec2-регистр. Следите за новым идентификатором AMI, чтобы использовать его позже при перезапуске.
    • Чтобы запустить изображение, которое вы только что создали или которое хотите использовать повторно, вызовите ec2-запуск-экземплярыпри необходимости укажите подробности.

  3. Создать EBS из моментального снимка легко с помощью вызова API.

    • Получив идентификатор снимка, просто создайте том и укажите идентификатор с помощью ec2-create-volume. Однако будьте осторожны, размер тома должен быть такого же размера, как и у снимка. Если вам нужно увеличить размер, подключите диск большего размера одновременно и скопируйте данные любым удобным для вас способом.

  4. Чтобы подключить и смонтировать диск, вам необходимо выполнить комбинацию вызовов API для команд операционной системы.

    • Использовать ec2-create-volume и проанализируйте возвращение команды для идентификатора тома, чтобы вы могли вызвать ec2-прикрепить-том. Для получения информации о томе подключитесь к более поздним расположениям устройств, так как более ранние часто используются для временного хранилища (сам экземпляр). В Linux начните с / dev / sdf или новее. В этом посте я использую / dev / sdf, но если вы согласны, любые буквы после f и до p должны работать.
    • Смонтируйте устройство в файловой системе. В Linux я использую mount -v -t [Тип файловой системы] / dev / sdf / $ MOUNT_DIR. Ключ -v дает вам некоторые выходные данные, которые вы можете проанализировать для обработки ошибок.

  5. Опять еще один вызов API. У меня нет большого опыта использования этого с помощью автоматических скриптов, но это должно быть так же просто, как вызов Эльб-регистр-экземпляры-с-фунтом.

Обязательно выполните обработку ошибок с ответами на эти вызовы. Несколько месяцев назад у меня были особые проблемы с тайм-аутом вызовов ec2-upload-bundle и невозможностью завершить загрузку всего изображения. Если вы решите использовать SDK, действия должны быть в основном такими же, поскольку все команды Amazon API включены в SDK, хотя и с другим синтаксисом.