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

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

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

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

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

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

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

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

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

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

0
задан 1 July 2021 в 09:43
1 ответ

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

  • Второй вариант поддерживается и упомянутые мной руководства не нужны. Т.е. Пока вы выбираете балансировщик нагрузки приложений (созданный из EC2) в качестве общего балансировщика нагрузки (в вашей среде Elastic Beanstalk), они будут синхронизироваться (с точки зрения надлежащей маршрутизации трафика к экземплярам в среде).
  • Другой вариант - выбрать первый вариант, но вместо изменения балансировщика нагрузки в EC2 (что, как я предполагаю, не рекомендуется), вы можете использовать «.ebextensions» для изменения балансировщика нагрузки. В общем, если консоль AWS не предоставляет графический интерфейс для выполнения ваших требований к Elastic Beanstalk, для обхода отсутствующего графического интерфейса консоли Elastic Beanstalk можно использовать .ebextensions.
0
ответ дан 28 July 2021 в 14:36

Теги

Похожие вопросы