Elastic Beanstalk: продолжительность создания среды и неизменное развертывание - PullRequest
0 голосов
/ 17 октября 2018

Играя со средами на AWS Elastic Beanstalk (EB), я заметил, что создание новой среды с одним экземпляром намного быстрее, чем неизменяемое развертывание в той же среде (используя точноета же версия приложения).

Я говорю о 3 минуты против 14 минут соответственно, прежде чем состояние среды будет "ОК".

Может кто-нибудь объяснить это?

Возможно, моя концепция среды и экземпляра неверна, но я бы ожидал, что разница (если есть) будет наоборот.

Вот минимальный примеррабочий процесс:

  1. Используйте консоль управления EB (web) для создания новой среды с одним экземпляром, используя Python / Amazon-Linux по умолчанию и пример приложения по умолчанию.Конфигурация по умолчанию была изменена только для установки политики развертывания «неизменяемой» вместо «все сразу» перед началом создания среды.Это занимает ок. 3 минуты :

    2018-10-17 12:14:17 UTC+0200    INFO    Environment health has transitioned from Pending to Ok. Initialization completed 33 seconds ago and took 3 minutes.
    2018-10-17 12:13:39 UTC+0200    INFO    Successfully launched environment: create-vs-deploy
    
  2. На странице «Версии приложений» выберите образец приложения (то есть точно такую ​​же версию приложения, которая использовалась в шаге 1), иразвернуть (неизменный) это в среде, созданной на шаге 1. Это займет ок. 14 минут :

    2018-10-17 12:36:16 UTC+0200    INFO    Environment health has transitioned from Info to Ok. Application update completed 67 seconds ago and took 14 minutes.
    

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

Файлы eb-activity.logдля обоих экземпляров есть одинаковые команды и выходные данные, и длительность от начала до Application deployment - Command CMD-Startup succeeded также почти одинакова: оба чуть более 1 минуты.

В журнале для неизменного развертывания отображаются дополнительные строки, начинающиеся более чем через 6 минут:

[2018-10-17T10:22:10.227Z] INFO  [2269]  - [Initialization] : Starting activity...
...
[2018-10-17T10:23:21.610Z] INFO  [2620]  - [Application deployment Sample Application@2/AddonsAfter] : Completed activity.
[2018-10-17T10:23:21.610Z] INFO  [2620]  - [Application deployment Sample Application@2] : Completed activity. Result:
  Application deployment - Command CMD-Startup succeeded
[2018-10-17T10:29:58.110Z] INFO  [3055]  - [Re-associating instance] : Starting activity...
...
[2018-10-17T10:29:58.115Z] INFO  [3055]  - [Re-associating instance] : Completed activity. Result:
  Re-associating instance - Command CMD-ImmutableDeploymentFlip succeeded

Есть идеи, что происходит во время 6-минутной паузы?EB каждый раз ждет проверки работоспособности в течение 6 минут?

Кроме того, между прибл.Продолжительность 8 минут от начала до конца в eb-activity.log и 14 минут, сообщаемых на странице событий.

Не уверен, что это поможет, но это из healthd/daemon.log для неизменного развертывания:

# Logfile created on 2018-10-17 10:22:04 +0000 by logger.rb/47272
A, [2018-10-17T10:22:05.218449 #2186]   ANY -- : healthd daemon 1.0.3 initialized
W, [2018-10-17T10:22:05.369315 #2186]  WARN -- : log file "/var/log/httpd/healthd/application.log.2018-10-17-10" does not exist
...
W, [2018-10-17T10:23:16.646199 #2186]  WARN -- : log file "/var/log/httpd/healthd/application.log.2018-10-17-10" does not exist
W, [2018-10-17T10:36:55.231184 #2186]  WARN -- : discarding statistic item after validation error (Invalid timestamp): {:id=>"0", :namespace=>"application", :timestamp=>1539771800, :data=>"{\"duration\":10,\"latency_histogram\":[[0.213,1]],\"http_counters\":{\"status_200\":1,\"request_count\":1}}"}

Журнал для вновь созданного env выглядит идентично, за исключением последней строки.

Дополнительная информация:

Из приведенных ниже событий (одно и то же приложение развернуто в другое время)Я предполагаю, что новый экземпляр занимает около 12 минут после запуска обновления приложения, после чего старый экземпляр завершается и т. Д.

2018-10-17 14:29:07 UTC+0200    INFO    Environment health has transitioned from Info to Ok. Application update completed 37 seconds ago and took 13 minutes.
2018-10-17 14:28:38 UTC+0200    INFO    Environment update completed successfully.
2018-10-17 14:28:38 UTC+0200    INFO    New application version was deployed to running EC2 instances.
2018-10-17 14:28:07 UTC+0200    INFO    Removed instance [i-0*******] from your environment.
2018-10-17 14:26:25 UTC+0200    INFO    Deployment succeeded. Terminating old instances and temporary Auto Scaling group.
2018-10-17 14:24:36 UTC+0200    INFO    Waiting for post-deployment configuration to complete.
2018-10-17 14:24:31 UTC+0200    INFO    Starting post-deployment configuration on new instances.
2018-10-17 14:23:31 UTC+0200    INFO    Attached new instance(s) to the permanent auto scaling group awseb-e-******-stack-AWSEBAutoScalingGroup*****.
2018-10-17 14:23:29 UTC+0200    INFO    Detached new instance(s) from temporary auto scaling group awseb-e-******-immutable-stack-AWSEBAutoScalingGroup*****.
2018-10-17 14:19:32 UTC+0200    INFO    Waiting for instance(s) (i-0******) to pass health checks.
2018-10-17 14:17:08 UTC+0200    INFO    Added instance [i-0******] to your environment.
2018-10-17 14:17:08 UTC+0200    INFO    Environment health has transitioned from Ok to Info. Application update in progress on 1 instance. 0 out of 1 instance completed (running for 2 minutes).
2018-10-17 14:15:19 UTC+0200    INFO    Created temporary auto scaling group awseb-e-*****-immutable-stack-AWSEBAutoScalingGroup-*******.
2018-10-17 14:14:33 UTC+0200    INFO    Immutable deployment policy enabled. Launching one instance with the new settings to verify health.
2018-10-17 14:14:24 UTC+0200    INFO    Environment update is starting.

1 Ответ

0 голосов
/ 03 января 2019

Оказывается, что в неизменяемых развертываниях задействовано гораздо больше, чем в создании среды.Вот часть ответа, который я получил от Поддержка AWS , объясняя различия более четко, чем я мог:

Что произойдет при создании среды

1) Выполняется команда создания новой среды

2) Создается стек CloudFormation для запуска ресурсов, связанных со средой

3) Экземпляр или экземпляры, которые будут запущены как часть автоматического масштабированиягруппа подготовлена: это подразумевает выполнение, в данном конкретном случае, CMD-StartUp, который будет выполнять также все связанные хуки.В это время среда обеспечена.

Что произойдет в Immutable Deployments

1) Создается новый стек CloudFormation, чтобы текущий не изменялся

2) Один экземпляр запускается ввременная группа AutoScaling

3) Экземпляр предоставляется так же, как существующий при создании среды с CMD-StartUp

4) Экземпляр, когда он готов, добавляется в загрузку средыбалансировщик

5) Экземпляр должен пройти все проверки работоспособности.Если среда имеет тип «веб-сервер», она должна пройти 12 последовательных проверок работоспособности;если среда имеет тип «работник», она должна пройти 18 проверок работоспособности.Поскольку расширенная проверка работоспособности сообщает о состоянии каждые 10 секунд, это означает, что в лучшем из возможных сценариев это займет 2 минуты (10 x 12 = 120).(Подробнее об этом [1])

6) Команда «CMD-ImmutableDeploymentFlip» должна быть выполнена для новых экземпляров / экземпляров, которая затем вызовет «infra-reregister-cfn-hup.rb»."сценарий и выполняет различные действия

7) Конфигурация после развертывания начинается

8) После успешного развертывания старый (-ые) экземпляр (-ы) необходимо прекратить

9)Развертывание завершено.

...