Я использую веб-интерфейс AWS elastic beanstalk для создания среды на основе существующего AMI, на котором развернуто наше приложение.
Среда создается, приложение доступно через IP-адрес экземпляра ec2. однако состояние среды остается в состоянии «Ожидание» в течение 15 минут, а затем ухудшается до состояния «Серьезное» с появлением следующих ошибок в журнале среды:
2017-10-22 15:57:50 UTC + 0300 INFO Запущенная среда: Winfooztest-> env-6. Однако при запуске возникли проблемы. См. Журнал событий для> подробностей.
2017-10-22 15:57:49 UTC + 0300 ОШИБКА Экземплярам EC2 не удалось> связаться с AWS Elastic Beanstalk из-за проблем с конфигурацией> VPC или из-за сбоя экземпляра EC2. Проверьте конфигурацию VPC> и попробуйте снова запустить среду. 2017-10-22 15:57:49 UTC + 0300 ОШИБКА Операция отмены стека с именем awseb-e-ypy7mg2pta-> stack. Текущее состояние: 'CREATE_FAILED' Причина:> следующим ресурсам не удалось создать [AWSEBInstanceLaunchWaitCondition].
2017-10-22 15:56:16 UTC + 0300 WARN Состояние окружающей среды> перешло с ожидающего на серьезное. Выполняется инициализация (выполняется> 16 минут). Ни один из экземпляров не отправляет данные.
2017-10-22 15:41:48 UTC + 0300 INFO Создан сигнал тревоги CloudWatch с именем:> awseb-e-ypy7mg2pta-stack-AWSEBCloudwatchAlarmHigh-QVXFWC3HZS5S
Итак, я понял, что экземпляр создан, но не может взаимодействовать с эластичным beanstalk. Вопреки здравому смыслу и для того, чтобы точно определить проблему, я старался сделать настройки VPC максимально общедоступными. Вот что я сделал:
Тип VPC: создан «VPC с единой общедоступной подсетью».
Блок IPv4 CIDR: 10.0.0.0/16
CIDR IPv4 общедоступной подсети: 10.0.0.0/24
Видимость: общедоступная
Отметил возможность иметь публичный IP-адрес для VPC.
Группа безопасности - Входящий: ВСЕ трафик | ВСЕ | ВСЕ | 0.0.0.0/0
Группа безопасности - Исходящий: ВСЕ трафик | ВСЕ | ВСЕ | 0.0.0.0/0
Среда настроена для использования балансировщика нагрузки.
Не повезло.
Я знаю, что мне нужно сделать небольшую настройку сети. Я много почесал в затылке (и поисковике). Что мне не хватает? Вы можете помочь?
Elastic Beanstalk ожидает, что в вашем AMI будут определенные скрипты. Эти сценарии выполняются Beanstalk во время различных событий жизненного цикла, таких как развертывание и завершение работы приложения. Без этих сценариев Beanstalk не сможет взаимодействовать с вашим экземпляром.
Лучший подход здесь - создать свой AMI с помощью упаковщика https://www.packer.io из одного из предварительно настроенных шаблонов http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html
Elastic Beanstalk использует стандартизированную структуру каталогов для хуков, которые представляют собой сценарии, которые запускаются во время событий жизненного цикла и в ответ на операции управления: когда запускаются экземпляры в вашей среде, или когда пользователь инициирует развертывание или использует функцию перезапуска сервера приложений.
Хуки организованы в следующие папки:
appdeploy - скрипты запускаются во время развертывания приложения. Elastic Beanstalk выполняет развертывание приложения при запуске новых экземпляров и когда клиент инициирует развертывание новой версии. configdeploy - сценарии запускаются, когда клиент выполняет обновление конфигурации, которое влияет на конфигурацию программного обеспечения на экземпляре, например, путем настройки свойств среды или включения ротации журналов в Amazon S3. restartappserver - скрипты запускаются, когда клиент выполняет операцию перезапуска сервера приложений. preinit - скрипты запускаются во время начальной загрузки экземпляра. postinit - скрипты запускаются после начальной загрузки экземпляра.