Масштабирование экземпляра EC2 с обновленным кодом

У меня есть экземпляр EC2, на котором запущен веб-сайт PHP, я также использую политики масштабирования AWS, что означает, что при выполнении определенных условий создается новый экземпляр.

Проблема в том, что AMI создается со старым кодом AMI.

Предположим, я создал instance1 с AMI X. Теперь я время от времени обновляю код на instance1. Теперь, когда создается новый экземпляр, он создается с помощью кода AMI X, а не с обновлениями, которые я сделал.

Какое решение для текущего сценария, кроме обновления AMI каждый раз вручную?


person Badddy    schedule 12.01.2015    source источник


Ответы (1)


Образ машины Amazon (AMI) — это доступная только для чтения копия образа диска, которая будет использоваться для запуска нового экземпляра Amazon EC2. Любой новый экземпляр, запущенный из этого AMI, будет иметь точно такой же загрузочный диск.

Вы правы в том, что если вы обновите код экземпляра, это не повлияет на базовый AMI. Любые будущие экземпляры, запущенные из того же AMI, не будут иметь обновленного кода, поскольку эти изменения не повлияли на AMI.

Есть несколько вариантов, если вы хотите, чтобы будущие экземпляры имели обновленный код:

  • Обновите код, затем создайте новый AMI. Запускайте будущие экземпляры из нового AMI.
  • Используйте сценарий запуска в поле Данные пользователя, чтобы загрузить код из центрального репозитория. Таким образом, код на самом деле не хранится в AMI. Его можно загрузить заново каждый раз при запуске экземпляра.
  • Используйте утилиту управления конфигурацией, например Puppet или Chef, для настройки системы, загружая код из центрального репозитория.

Ключевым моментом является автоматизация ваших процессов, чтобы не требовалось ручное вмешательство, когда вы хотите развернуть обновления.

person John Rotenstein    schedule 12.01.2015
comment
у вас есть пример готового скрипта, так как я не знаю о поле данных пользователя. - person Badddy; 13.01.2015
comment
Скрипт может делать все что угодно. Самым простым было бы загрузить zip-файл с S3 со всем вашим кодом, разархивировать его, а затем выполнить. Документация по данным пользователя: docs.aws.amazon.com/AWSEC2/ последний/UserGuide/user-data.html - person John Rotenstein; 14.01.2015