Упругий балансировщик нагрузки для нескольких webapps

У меня есть N webapps. Каждый webapp обслуживается другим именем хоста в моем домене и развертывается до 2 экземпляров, запущенных в AWS. Другими словами, у меня есть экземпляры 2N, разделенные на пары, которые запускают N различные веб-страницы.

Я хотел бы создать один AWS Elastic Load Balancer, который проксирует запрос одному из двух экземпляров, которые обслуживают его на основе Host. Возможно ли использование одного ELB или мне нужно будет развернуть N ELB, по одному для каждой пары экземпляров?

12 голосов | спросил thesamet 7 FebruaryEurope/MoscowbFri, 07 Feb 2014 20:20:39 +0400000000pmFri, 07 Feb 2014 20:20:39 +040014 2014, 20:20:39

3 ответа


18

Один ELB направляет трафик на один набор экземпляров и распределяет входящий трафик на все экземпляры «позади». Он не избирательно маршрутизирует трафик на основе любого анализа трафика на уровне 7, например заголовка Host:.

Для каждого экземпляра set вам нужно one ELB. Как вы описали это, это один ELB для каждого веб-приложения.

Если ваша основная цель для запуска ELB - это выгрузка SSL с помощью подстановочного сертификата (у меня есть одна система, подобная этой, с десятками приложений, живущих на many-different-domains.my-wildcard-cert-domain.com) то экземпляры «за» ELB могут запускать обратный прокси-сервер, такой как HAProxy (или несколько других альтернатив, например, Varnish), которые могут выполнять решения маршрутизации уровня 7, а затем перенаправлять трафик на соответствующее подмножество машин за ними, что также обеспечивает более сложную балансировку нагрузки и имеет преимущество предоставления вам статистики и счетчиков трафика, агрегатов и отдельных.

       /-- HAProxy \  /----- instances hosting app #1  
ELB ---|            >> ----- instances hosting app #2 
       \-- HAProxy /  \----- instances hosting app #n 

Промежуточные экземпляры ^^^^ могут оценивать заголовки Host: (между прочим) и даже фиксировать значение cookie сеанса в их журналах для анализа.

Эта настройка также позволяет мне запускать несколько приложений на перекрывающихся подмножествах экземпляров, где это необходимо, и делать много других вещей, которые ELB сам по себе не поддерживает напрямую. Он также возвращает пользовательскую страницу «503» в случае, когда приложение перегружается или иным образом становится недоступным, что ELB не делает самостоятельно. Я изобразил здесь 2 прокси-сервера, без каких-либо особых причин, кроме вашего упоминания о номере 2 в вопросе. Моя установка фактически имеет 3, по одной для каждой зоны доступности в регионе, где она развернута.

ответил Michael - sqlbot 8 FebruaryEurope/MoscowbSat, 08 Feb 2014 08:07:08 +0400000000amSat, 08 Feb 2014 08:07:08 +040014 2014, 08:07:08
3

По состоянию на август 2016 года Amazon ELB предлагает два разных типа балансировщика нагрузки:

  • Классический балансировщик нагрузки направляет весь трафик на один набор экземпляров без учета содержимого протокола приложения. Раньше это был единственный доступный тип ELB.
  • Балансировщик нагрузки может маршрутизировать трафик в разные целевые группы в соответствии с настраиваемыми правилами на основе URL-адресов. Сообщение в блоге Новое - Балансировщик нагрузки приложений AWS упоминает приложения, состоящие из нескольких микросервисов в качестве основного варианта использования, и дает подробные инструкции по настройке.

Для вашего случая использования Application Balance Balancer кажется идеальным. Однако он ограничен 10 правилами, поэтому он будет работать только в том случае, если ваш N не больше 10.

ответил Jens Bannmann 27 PMpThu, 27 Apr 2017 12:18:50 +030018Thursday 2017, 12:18:50
0

В списке экземпляров ec2 вы видите два экземпляра, верно? Но в каждом случае у вас много webapps? Вы используете виртуальный хост для развертывания каждого из них?

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

External request > ELB (based on CNAME pointer)  > EC2 Instance. 

Я думаю, что лучше, чтобы вы дали мне больше своего сценария и, возможно, я могу вам помочь.

С уважением.

UPDATE

Если у вас есть экземпляры webapps в экземплярах EC2, вам необходимо иметь два балансировщика эластичной нагрузки (ELB). Каждый из них для пары экземпляров. Всего четыре экземпляра

ответил Junior Rocha 7 FebruaryEurope/MoscowbFri, 07 Feb 2014 21:54:21 +0400000000pmFri, 07 Feb 2014 21:54:21 +040014 2014, 21:54:21

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132