AWS codedeploy нескольких приложений с использованием балансировщика нагрузки - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь использовать службу codedeploy для развертывания кода вместе с балансировщиком нагрузки, потому что я хочу, чтобы codedeploy отменял регистрацию и регистрировал экземпляры при развертывании, следя за тем, чтобы при развертывании не отбрасывались никакие запросы.Но моя архитектура такова, чтоУ меня есть 4 экземпляра, каждый из которых работает 3 приложения процессов на 3 разных портах, напримерЭкземпляр 1: app1 на порту 81, app2 на порту 82, app3 на порту 83Экземпляр 2: app1 на порту 81, app2 на порту 82, app3 на порту 83Экземпляр 3: app1 на порту 81, app2 на порту 82, app3 на порту 83Экземпляр 4: app1 на порту 81, app2 на порту 82, app3 на порту 83Все эти экземпляры и их порты зарегистрированы в целевой группе, которая используется в codedeploy.И я настраиваю его для развертывания одного экземпляра за разНо когда я развертываю с использованием codedeploy, он зависает после отмены регистрации 1-го порта в 1-м выбранном экземпляре. Примечание:1) App1, App2, App3 одинаковы, просто работают на разных портах для обеспечения высокой доступности, поэтому код также одинаков и сценарии запуска / остановки также одинаковы2) Не использовать группу автоматического масштабирования, зарегистрированный экземпляр ec2 с использованием пары ключ-значение, включил балансировку нагрузки, выбрав балансировщик нагрузки приложения и назначив целевую группу, в которой были зарегистрированы эти экземпляры ec22) Развертывание при развертывании на месте Проблема, которую необходимо решить: Отмена регистрации всех портов, развертывание и регистрация всех портов в каждом экземпляре в одном развертывании и повторение этого во всех 4 случаях Так есть ли способ настроить развертывание приложения на разных портах в экземпляре с помощью балансировщика нагрузки?

1 Ответ

0 голосов
/ 15 мая 2018

Если я правильно понимаю ситуацию, у вас есть 3 приложения, запущенные в тех же 4 экземплярах, которые используют отдельный порт для каждого приложения для обслуживания трафика. Поскольку у вас может быть только 1 порт на целевую группу, я предполагаю, что у вас также есть 3 целевые группы. Учитывая ваше описание, похоже, что вы развернули все 3 приложения, используя одно и то же приложение CodeDeploy, предположительно связав все это вместе.

Только одна целевая группа на развертывание

В сложившейся ситуации невозможно привязать / открепить одно развертывание CodeDeploy от 3 разных целевых групп в одном и том же развертывании. Ограничение - одна целевая группа на развертывание, поэтому невозможно связывать / отменять привязку с 3 разных портов. Конечно, вы можете сделать все это вручную, используя ловушки жизненного цикла , но я бы очень не рекомендовал это.

Используйте другое приложение CodeDeploy для приложения

То, что вам действительно нужно, это создать отдельное приложение CodeDeploy для каждого запущенного вами приложения. Если вы разбили его на 3 разных приложения в CodeDeploy, у вас вообще не возникнет этой проблемы, потому что у вас будет 3 разных группы развертывания с тремя разными целевыми группами, все они связаны с разными портами. Ваш процесс выпуска будет намного безопаснее, потому что вы рискуете обновлять только одно приложение за раз вместо 3, а когда вы делаете развертывание, вам нужно только отсоединиться от целевой группы, обслуживающей 1 приложение, чтобы другие 2 приложения продолжали работать. Это должно увеличить вашу доступность.

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

...