Рейтинг:0

Как настроить условную переадресацию в Application Load Balancer для среды Elastic Beanstalk?

флаг ng

У меня есть две среды Elastic Beanstalk с одним экземпляром на основе Docker (одна для подготовки и одна для производства).

Я хотел бы перенести приложение (Elastic Beanstalk), чтобы оно располагалось за балансировщиком нагрузки (главным образом, чтобы воспользоваться преимуществами Диспетчер сертификатов AWS).

В настоящее время я использую .ebextensions чтобы настроить конфигурацию Nginx в соответствии с требованиями маршрутизации трафика моего приложения:

  • Для пути /xyz/, трафик должен идти в приложение через порт 80 (т. е. HTTP)
  • Для всех других запросов к порту 80 должен быть отправлен ответ перенаправления (301) на порт 443 (HTTPS).
  • Все запросы на порт 443 (HTTPS) должны проходить через приложение.

Итак, мой вопрос: как выполнить эти требования к маршрутизации с помощью балансировщика нагрузки перед одной из моих сред Elastic Beanstalk? Я думаю иметь один балансировщик нагрузки для каждой среды ради гибкости.

Я столкнулся со следующими возможными решениями (ни одно из которых не кажется идеальным):

  1. Настройте новую среду Elastic Beanstalk с выделенным Балансировщик нагрузки приложений а затем изменить прослушиватели и правила балансировщика нагрузки через службу консоли EC2 (аналогично тому, что это Запись документации Elastic Beanstalk, по-видимому, предлагает в разделе «Перенаправить HTTP-трафик на HTTPS> Настроить балансировщик нагрузки»).
  2. Настройте новый Application Load Balancer через службу консоли EC2, создайте новую среду Elastic Beanstalk, подключенную к новому Application Load Balancer в качестве Общий балансировщик нагрузки приложений а затем следуйте этим инструкциям (это и это), чтобы (надеюсь?) обеспечить синхронизацию балансировщика нагрузки и среды Elastic Beanstalk (с точки зрения управления экземплярами и маршрутизации трафика).
  3. Настройте новую среду Elastic Beanstalk с выделенным Application Load Balancer, а затем измените приложение, чтобы оно прослушивало три порта (один для /xyz/ трафика, один для перенаправления HTTP -> HTTPS и один для трафика HTTPS), который документируется здесь кажется, говорит мне делать (но не упоминает, как добиться нескольких прослушивающих портов в одном приложении).

Варианты один и два включают в себя использование «задней» Elastic Beanstalk для изменения базовых ресурсов (что я не решаюсь делать), а третий вариант потребует от меня изменения моего приложения (чего я хотел бы попытаться избежать).

Рекомендуется ли какой-либо из этих вариантов? Есть ли лучший вариант?

Рейтинг:0
флаг ng

После обращения в службу технической поддержки AWS по этому поводу я могу подтвердить, что:

  • Поддерживается второй вариант и упомянутые мной гайды не нужны. т.е. Пока вы выбираете балансировщик нагрузки приложения (созданный из EC2) в качестве общего балансировщика нагрузки (в вашей среде Elastic Beanstalk), они будут синхронизированы (с точки зрения надлежащей маршрутизации трафика к экземплярам в среде).
  • Другой вариант — выбрать первый вариант, но вместо изменения балансировщика нагрузки в EC2 (что, как я полагаю, не рекомендуется) вы можете использовать «.ebextensions» для изменения балансировщика нагрузки. Таким образом, если консоль AWS не предоставляет графический интерфейс для выполнения ваших требований к Elastic Beanstalk, «.ebextensions» можно использовать для обхода отсутствующего графического интерфейса консоли Elastic Beanstalk.
Rami avatar
флаг us
У вас есть какие-нибудь шаблоны того, как вы сделали модификацию в CloudFormation, у меня сейчас почти такая же проблема.
флаг ng
Нет, извините, я не использовал CloudFormation.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.