Еластичний балансир навантаження для декількох веб-пунктів


13

У мене є Nwebapps. Кожен веб-сервер обслуговується різним іменем хоста в моєму домені та розгортається в 2 екземпляри, що працюють в AWS. Іншими словами, у мене є 2Nекземпляри, розділені на пари, які мають Nчіткі веб-пункти.

Я хотів би встановити єдиний AWS Elastic Load Balancer, який передаватиме запит до одного з двох екземплярів, які його обслуговують, на основі Hostзаголовка. Це можливо за допомогою одного ELB або мені потрібно буде розгорнути NELB, по одному для кожної пари екземплярів?


Відповіді:


19

Один ELB спрямовує трафік рівно на один набір примірників і розподіляє вхідний трафік по всіх примірниках "позаду". Він не вибірково маршрутизує трафік на основі будь-якого аналізу рівня трафіку на рівні 7, наприклад Host:заголовка.

Вам потрібен один ELB для кожного набору екземплярів. Як ви описуєте це, це один ELB для кожного веб-сайту.

Якщо ваша основна мета для запуску ELB - це завантаження SSL за допомогою сертифікату wildcard (у мене є одна система, розроблена так, з десятками додатків, що живуть на багатьох-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, по одному для кожної зони доступності в регіоні, де це розміщено.


3
У серпні 2016 року Amazon запустив балансир завантаження програм AWS, який дозволяє здійснювати маршрутизацію до різних цільових груп на основі заголовків HTTP.
Єнс Банманн

2
@JensBannmann це правда. Коли вони випустили його, єдині правила маршрутизації, які він підтримував, були засновані на шляху. У 2017 році вони додали можливість маршруту на основі Host:заголовка. Ця відповідь була правильною, коли я писав її в 2014 році, але, схоже, настав час для оновлення. Дякуємо, що повернули це моїй увазі.
Майкл - sqlbot

3

Станом на серпень 2016 року Amazon ELB пропонує два різних типи балансирів навантаження:

  • Класичний балансир завантаження спрямовує весь трафік на один набір примірників, не враховуючи вмісту протоколу програми. Раніше це був єдиний доступний тип ELB.
  • Балансир завантаження додатків може спрямовувати трафік до різних цільових груп відповідно до налаштованих правил на основі URL-шляхів. У блозі New - AWS Application Load Balancer зазначає додатки, що складаються з декількох мікросервісів, як основний випадок використання, та дає детальні інструкції з налаштування.

У вашому випадку використання, Балансир завантаження додатків здається ідеальним. Однак він обмежений 10 правилами, тому він буде працювати легко, лише якщо ваш Nрозмір не перевищує 10.


0

У вашому списку екземплярів ec2 ви бачите два екземпляри, правда? Але в кожному екземплярі у вас багато веб-сайтів? Ви використовуєте віртуальний хост для розгортання кожного з них?

Вам потрібен лише один ELB, щоб розділити плату за своїх хостів. Приклад:

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

Я думаю, що краще, що ти дай мені більше свого сценарію, і, можливо, я можу тобі допомогти.

З повагою

ОНОВЛЕННЯ

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


У своєму списку екземплярів я бачу 2Nпрограми. Є N веб-сайтів, по два екземпляри для кожного. Я відредагую питання, щоб уточнити це.
theamamet

Оновлена ​​відповідь.
Молодша Роша
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.