Балансировка нагрузки нескольких контейнерных приложений в группе экземпляров - PullRequest
0 голосов
/ 03 января 2019

Гипотетический сценарий: у вас есть 3 контейнерных (докерских) веб-приложения, использующих разные порты - 1234, 5678, 7890.

Можно ли использовать Application Load Balancer, который перенаправляет трафик HTTP / HTTPS с app1.example.com, app2.example.com и app3.example.com на определенный порт в целевой группе EC2?

Пример: Весь трафик, идущий от app1.example.com, должен идти в порт 1234 Целевой группы EC2.

Кроме того, какой будет настройка сертификата SSL для этого, так как у ELB будет несколько поддоменов?

1 Ответ

0 голосов
/ 03 января 2019
  1. Для этого сначала необходимо создать 3 отдельные целевые группы, каждая из которых содержит те же EC2, на которые вы хотите перенаправить, дифференцированные по целевому порту для каждого приложения (1234, 5678 и т. Д.) .

  2. Как только вы это сделаете, вы можете создать новый ALB с 2 слушателями, один для HTTP на порту 80, а другой для HTTPS на порту 443. Если вы создаете это через консоль AWS, установите доступность зоны, которые вы хотите использовать, выберите политику безопасности и сертификат для прослушивателя HTTPS, а также выберите или создайте группу безопасности. Для конфигурации маршрутизации просто создайте новую произвольную целевую группу. Мы собираемся просто удалить его позже (мастер не позволит вам выбрать соответствующие параметры при создании).

  3. Как только ALB создан, нам нужно отредактировать правила для двух слушателей. Поэтому выберите ALB, перейдите на вкладку слушателей и нажмите ссылку «Просмотреть / изменить правила» рядом с одним из слушателей (обратите внимание, что НЕ выбирается слушатель и не нажимается «Редактировать», что является совершенно другим). Теперь на этом новом экране нажмите на карандаш, чтобы отредактировать текущее правило по умолчанию, удалить текущее действие «ТОГДА» и заменить его «Вернуть фиксированный ответ ...». Для полей здесь я бы просто установил код ответа 400, а тело ответа было бы похоже на «недопустимый заголовок хоста». Это будет возвращено, только если клиент попытается получить доступ к этому балансировщику нагрузки с хоста, отличного от того, который мы явно установим.

  4. Теперь нажмите кнопку «Обновить», чтобы сохранить изменения для этого правила по умолчанию, а затем нажмите кнопку «+», чтобы добавить новое правило над правилом по умолчанию. Для этого нового правила добавьте условие «Host is ...» и установите для него один из доменов приложения (т.е. app1.example.com). Теперь добавьте условие для этого правила в «Переслать ...» и выберите целевую группу для этого приложения, которое вы создали ранее.

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

  6. Теперь повторите шаги 3-5 для другого слушателя на ALB

  7. Теперь вы можете удалить дополнительную целевую группу, которую вы могли создать ранее при создании ALB, с помощью мастера в консоли. Кроме этого, вы должны быть сделаны.

Примечание. Невозможно, чтобы один прослушиватель HTTPS использовал несколько разных сертификатов, даже если вы можете маршрутизировать на основе заголовка узла. Для того чтобы SSL был действителен для нескольких разных приложений, вам потребуется использовать подстановочный сертификат, действительный для всех ваших приложений одновременно. Если вы используете ACM, вы можете создавать бесплатные сертификаты подстановочных знаков и использовать их в ALB.

...