Рівень 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.