Изменения, сделанные через SSH, будут потеряны, если экземпляр будет заменен автоматическим масштабированием. - PullRequest
0 голосов
/ 26 октября 2019

Мне нужно установить расширение gRPC PHP на мои эластичные экземпляры beanstalk, созданные в EC2. У меня включено автоматическое масштабирование, и когда запускается новый экземпляр EC2, я теряю все свои установки.

Из документации я нашел два способа исправить это:

  1. Создайте экземпляр, загрузите все необходимое и сделайте снимок этого экземпляра. И добавьте идентификатор изображения (AMI ID) в среду Elastic Beanstalk (в разделе «Конфигурация» -> «Экземпляры»). И каждый новый экземпляр, созданный автоматическим масштабированием, будет основан на изображении, которое я предоставляю. Этот подход никогда не работал для меня. Я что-то здесь упускаю?
  2. Написать файл конфигурации в .ebextensions для автоматической установки всех необходимых расширений при каждом запуске нового экземпляра. И для этого нам нужно создать файл yaml / json согласнодокументация в cloud.google.com/php/grpc.

Может ли кто-нибудь подсказать, какой подход следует использовать? И помогите мне создать файл yaml / json, чтобы автоматизировать процесс для всех экземпляров в автоматическом масштабировании?

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

Согласно документации AWS здесь , для настройки среды Elastic Beanstalk необходимо использовать .ebextensions файлы конфигурации.

Создание .ebextensions предоставляет возможность полностью настраивать экземпляры исреда, в которой ваше приложение выполняется, и которая делает обновления, изменения и / или добавления в ваших экземплярах и среде простыми и эффективными.

В качестве идентификатора, ssh'ing для экземпляров ElasticBeanstalk и создания экземпляровизменений, следует избегать. Проблема с автоматическим масштабированием, с которой вы сталкиваетесь, является одной из причин, однако другая основная причина заключается в том, что внесение изменений в сам экземпляр приведет к тому, что состояние экземпляров будет не синхронизировано с ожидаемым состоянием EB. Если состояние не синхронизировано, последующее развертывание не будет выполнено, поскольку ожидаемая версия приложения EB сместилась. Управление приложением и средой с помощью кода и .ebextensions устраняет эту проблему.

0 голосов
/ 27 октября 2019

Спасибо, hephalump за подробное объяснение. Похоже, что .ebextensions - верный путь. Я написал файл gprc.config в папке .ebextensions в формате yaml. И это дает мне всевозможные ошибки.

packages:
yum:
php-devel: []
php-pear: []
phpunit: []
gcc: []
zlib-devel: []
curl: []
commands:
01_grpc_install:
   # run this command from /tmp directory
 -cwd: /root
   # don't run the command if grcp is already installed
   test: '[ $(php -i | grep -i grpc | wc -l) -gt 0 ] && echo "grcp is installed"'
   # executed only if test command succeeds
   command: |
   curl -sS https://getcomposer.org/installer | php
   && mv composer.phar /usr/local/bin/composer
   && pecl install grpc
   && echo extension=grpc.so > /etc/php-7.1.ini

Любая помощь будет принята с благодарностью.

...