Автоматическое масштабирование AWS EC2 - пользовательская настройка на EC2 через ssh

Я разрабатываю веб-приложение с использованием Django и Elastic Beanstalk (AWS). В настоящее время я использую только бесплатный уровень ec2 для уровня сервера.

Меня беспокоит пользовательская настройка EC2 при автомасштабировании.

Библиотека python "Pillow" нуждается во внешней библиотеке, такой как "libjpeg-turbo-devel" и "zlib-devel". Это должно быть установлено до установки всей библиотеки Python. Не было возможности сделать это автоматически с помощью файла конфигурации aws, поэтому я установил файлы вручную, подключившись к EC2 через ssh.

При масштабировании EC2 такие ручные настройки повлияют на другие экземпляры EC2?

Если масштабирование действует как «копирование исходного экземпляра EC2», проблем не возникнет. Однако процесс просто «развертывание приложения» в другом экземпляре ec2, это не сработает, потому что не применены ручные настройки.

Может кто-нибудь объяснить, как в этом отношении работает автомасштабирование EC2? Спасибо!!




Ответы (2)


Прежде всего, я бы посоветовал прочитать документацию по AutoScaling.

http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/GettingStartedTutorial.html

AutoScaling запускает и завершает инстансы EC2 на основе предупреждений CloudWatch и других правил. Когда AutoScaling запускает новый экземпляр EC2, он основан на конкретном образе AMI. Этот образ AMI может быть одним из базовых образов AMI Amazon или быть настроенным вами образом AMI.

Если вы подключитесь по SSH к экземпляру EC2, который был частью группы AutoScaling, любые изменения, внесенные в него, не повлияют на другие экземпляры EC2.

Существует 2 основных способа настройки экземпляров EC2, запускаемых с помощью AutoScaling:

  1. Запустите из довольно простого образа AMI и используйте какой-либо метод управления конфигурацией, чтобы настроить экземпляр при его создании. Вы можете использовать такие инструменты, как Chef, Ansible и т. Д.

  2. Запустите уже настроенный образ AMI, который вы создали. Когда вы это сделаете, экземпляр EC2 практически готов к работе.

Если вы уже настроили экземпляр EC2 по своему вкусу (установив libjpeg-turbo-devel и zlib-devel), теперь вы можете создать образ AMI из своего экземпляра EC2 и создать и / или обновить конфигурацию Launch Configuration. чтобы использовать ваш пользовательский AMI.

Таким образом, когда AutoScaling создает новый экземпляр EC2, он будет основан на вашем настраиваемом AMI, в котором уже установлены ваши предпочтительные библиотеки.

person Matt Houser    schedule 12.08.2015
comment
Я ценю ваш полезный ответ :) - person kyle; 12.08.2015
comment
Это верно для групп Auto Scaling, управляемых пользователем, но не для Elastic Beanstalk. Пока он не поддерживает пользовательские AMI. Это нужно сделать с помощью файлов конфигурации .eb. - person Edson Marquezani Filho; 13.08.2015
comment
Elastic Beanstalk поддерживает настраиваемые AMI. Я использую их все время. Вы можете изменить AMI после запуска приложения через конфигурацию. - person Matt Houser; 13.08.2015

Beanstalk поддерживает установку внешних пакетов (yum, pip и т. Д.) Через конфигурацию. Это было бы рекомендовано.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-packages.

person Marc Young    schedule 12.08.2015
comment
Elastic Beanstalk поддерживает пользовательские образы AMI. Я использую их все время. - person Matt Houser; 12.08.2015
comment
Узнавайте что-то новое каждый день. Вы изучали использование пакетов: в настраиваемом yaml вместо того, чтобы пытаться предоставить его через базовый AMI? - person Marc Young; 12.08.2015
comment
Да, у меня есть собственный файл конфигурации: packages: yum: libjpeg-turbo-devel: [], zlib-devel: [], freetype-devel: [], но сначала он не работал, потому что была установлена ​​библиотека python уже на EC2. Вот почему я подключился к EC2 и переустановил библиотеки в правильном порядке. Во всяком случае, я только что понял, что он отлично работает при автомасштабировании. Новый EC2 сначала устанавливает пакеты, а затем устанавливает библиотеки Python, которые являются более старыми! поэтому нет необходимости настраивать параметры. спасибо за Ваш ответ! - person kyle; 13.08.2015