Рівень 4 проти шару 7 Врівноваження навантаження


21

Я намагаюся вирішити між використанням рішення рівня балансування навантаження 4 для мого центру обробки даних або рішення рівня 7. На жаль (на мій розум, тобто), мій варіант використання досить простий, щоб обидва рішення спрацювали добре, уникаючи більшості слабких сторін і не використовуючи сильних сторін з іншого. Яке б рішення ми не закінчили використовувати, воно повинно мати високу доступність та високу пропускну здатність. Але ми лише плануємо використовувати його для завантаження балансу через кластер веб-серверів, жоден з яких не має жодних вимог до "липкого" управління сеансом (cookie або IP), складних правил перезапису - або, з цього приводу, будь-яких правил перезапису на всі.

Балансові навантаження будуть підключені до двох комутаторів, обидва з незалежним підключенням до рівня агрегації центру центрів даних і об'єднані разом за допомогою дерева швидкого розмахування та будь-якого патентованого протоколу, який комутатори використовують для віртуалізації. Балансири навантажень також будуть зшиті один з одним по перехресному кабелю. Всі сервери кластера підключені до обох комутаторів. Все, що повинні робити балансири навантажень, - це спрямовувати трафік на них.

Оскільки це просто HTTP, я можу використовувати рішення для балансування навантаження в шарі 7 типу HAProxy або nginx. Але я також міг би використовувати проект LVS з ldirectord або keepalived або будь-яким іншим.

Я намагався розбити плюси і мінуси, як їх бачу, але це просто закінчується. Що б ти порадив і чому? Я щось пропускаю?

Відповіді:


17

Однією корисною перевагою "L7", як haproxy, є можливість використання файлів cookie для того, щоб той самий веб-переглядач не потрапляв на той самий сервер сервера. Це значно спрощує налагодження клієнтських звернень.

Врівноваження L4 може підстрибувати одного користувача на декількох серверах. (що в певних випадках може бути вигідним, але в сенсі налагодження / профілювання використання "L7" набагато цінніше.)

EDIT: Також існує потенційна перевага швидкості використання балансування HTTP. Завдяки підтримці зберігання клієнтів можуть встановити один баланс TCP до вашого балансира, а потім надіслати багато HIT без необхідності повторного встановлення нових сеансів TCP (3-х тисне рукостискання). Точно так само багато ЛБ підтримують постійні сеанси для підтримки систем заднього кінця, усуваючи необхідність робити те саме рукостискання на задньому кінці.

Суворе врівноваження TCP-навантажень може не виконати обох цих можливостей так легко.

/ * FWIW: Я б не сказав "L7" або "L4", я б сказав HTTP або TCP. Але я чіпляюсь за те, щоб уникнути використання OSI для опису речей, які не узгоджуються. * /

Я думаю, що принципово, якщо ви не впевнені, що розгорнути, виконайте те, що вам здається простим і природним. Перевірте його (використовуєте апач-лавку?) І переконайтеся, що він працює для ваших потреб. Для мене HTTP LB є більш природним.


Клейкість, на основі файлів cookie або на основі IP, безумовно, є перевагою комутації L7. Але наш додаток не міг би особливо використовувати.
— Scrivener

Чи не одним з недоліків балансування навантаження на рівні HTTP було б те, що вам доведеться мати балансир навантаження на рівні TCP перед балансирами HTTP, щоб увімкнути відмову між ними?
— Scrivener

@Scrivener - не слід, ні. кругосвітковий DNS може подбати про це, я вважаю, якщо я не розумію вашого питання.
— mfinni

@mfinni: глобальний географічний DNS зможе вказувати на один IP на центр обробки даних. Мені потрібно щось відповісти на цей IP.
— Scrivener

Розумію. Ну, це залежить від можливостей вашого пристрою. Ви, ймовірно, можете знайти пристрій L7, який може працювати в парі з одним кластером VIP, який не потребує апаратного TCP / IP-балансира навантаження. Якщо IIS та MS Windows NLB можуть це зробити, я думаю, що це може зробити і більшість інших комерційних продуктів.
— mfinni

4

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

L7 вимагає, щоб балансири перевіряли заголовки http у пакетах, які проходять через них, на предмет відповідного маршрутизації, додаючи додаткові накладні витрати та граничне збільшення затримки для кінцевого користувача. Мені здається безглуздим витратом, якщо ти цим нічого не заробиш.


0

Деякі постачальники DNS мають прості функції відмови. Ви згадали, що ваші вимоги не є, а не те, що вони є, але якщо все, що вам потрібно, це круглої робін з відмовою, якщо щось не вдається , тоді ви можете використовувати напр., Відмову від безпеки . Залежно від ваших потреб в HA, які можуть бути досить хорошими, і ви можете пропустити цілий рівень в своїй архітектурі.


Я б хотів, щоб це було так просто - нам потрібне щось на кшталт круглолиця з відмовою, плюс географічне розділення. Однак, про все це не йдеться, адже це робиться зовнішньою компанією.
— Scrivener

Що ви маєте на увазі? Я думаю, я маю на увазі, що DNS робиться і зовнішньою компанією, і деякі з них підтримують як балансування гео завантаження, так і відмову як службу DNS - або ви маєте на увазі, що між вами та постачальником послуг DNS є додаткова третя сторона, або що ви просто не маєте прямого сказати через DNS?
— Ернест Мюллер

Перший - ми вже працюємо з DNS із зовнішньою компанією, яка робить відмову та географічне навантаження, врівноважуючи різні центри даних. Мені просто потрібно балансувати його всередині центру обробки даних.
— Scrivener

Ви можете використовувати ту саму круглу машину для сервера на сервері на передньому кінці, правда? DNS для врівноваження навантаження на кругових роботах часто використовується для одного центру даних; кілька геолокацій - це велика потреба хлопчика.
— Ернест Мюллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.