Що повертає балансир навантаження?


12

Коли користувач потрапляє на балансир навантаження, а балансир навантаження визначає, на який веб-сервер переслати, що буде далі? Чи передає балансир навантаження запит та всі його дані веб-серверу, отримує відповідь веб-сервера та повертає його назад користувачеві?

Або це більше схоже на переспрямування, де балансир завантаження буквально просто повертає ip-адресу вибраного сервера назад до браузера, і браузер повинен відкрити нове з'єднання з даним сервером?

Мій інстинкт говорить, що це не останнє, тому що це означатиме, що всі IP-адреси веб-сервера будуть загальнодоступними, і я вважав, що з міркувань безпеки найкраще виставити публіці адреси балансира завантаження. Але знову ж таки, я не зовсім впевнений, тому що якщо ви включите SSL terminationбалансир навантаження, чи не потрібно було б знову встановлювати SSL за допомогою перенаправленого сервера?


Відповіді:


13

Кінцевий IP не публікується. Процес насправді працює таким чином, що клієнт (користувач, що потрапляє на балансира) вважає, що він спілкується з балансиром, розмовляючи з фактичним вузлом.

У дуже простому поясненні більшість транзакцій працює так:

  1. Користувач робить запит до балансира навантаження.
  2. Балансир вирішує, який вузол є найбільш підходящим (виходячи із стратегії, яку ви використовуєте для врівноваження) і вибирає (змінює) IP-адресу призначення.
  3. (Тут відбувається магія.) Вузол отримує запит, приймає з'єднання і відповідає на баланс.
  4. Балансир змінює IP-відповідь на віртуальний, той, що балансує, і передає відповідь користувачеві.
  5. Voilà, користувач отримує відповідь з IP-адресою початкового запиту, навіть якщо він був фактично оброблений деінде.

Майте на увазі перезапис пакетів (зміна IP-адреси на кроці 4) дуже важливо. Без цього клієнт, отримавши пакет з IP, якому він не довіряє, просто відкине відповідь.


4

Бад-балансир - це робота над OSI рівня 4. Він декапсулює пакет до номера порту, а потім направляє пакет в одному з 3 режимів.

Балансир завантаження може працювати в 3-х режимах: 1. Пряма маршрутизація У цьому режимі ваш реалізатор використовує IP-публіку. Балансир отримує пакет і декапсулює до рівня 4. Якщо в правилі балансу навантаження збігаються, він буде перенаправляти пакет (не змінюючи) на один з realserver. У Realserver є псевдонімна адреса однакова з адресою балансу завантаження, тому коли realserver отримує пакет з адресою xxx.xxx.xxx.xxx, він визначає цей пакет право на його адресу (псевдонім). А потім реальний запит відповіді сервера на клієнта прямий (не через баланс навантаження).

2. NAT У цьому режимі переадресація пакетів на Realserver із зміною адреси призначення. Адреса призначення буде замінена на адресу Realserver (NAT). У цьому режимі вашому реальному серверу не потрібен IP-доступ, він може використовувати вашу локальну мережу. І тоді пакет буде доставкою немає нової адреси призначення. Коли Realserver отримає пакет, він відповість на адресу запиту клієнта через шлюз (loadbalance). У цьому режимі ваш баланс навантаження використовується як маршрутизатор і як шлюз вашого реального сервера.

3. Тунель У цьому режимі пакет буде тунельований з новою адресою src-dst (наприклад, vpn) для доставки пакету до realserver. коли пакет, отриманий в realserver, realserver відповість через тунельну трубу на баланс навантаження. А потім відповідь на доставку балансу відповідь, реальна адреса джерела запиту.

Для HTTPS / SSL, баланс навантаження не обробляє його, завантажуйте баланс процесу до рівня 4 OSI. Шар 5 вище буде оброблятися в реальному сервері. Таким чином, TCP 3-х способовий хеш-шок, SSL / HTTPS він перейшов у реалізатор. Баланс лише навантаження пакета.

Я сподіваюся, що моє невелике пояснення щось допоможе.


Здається, ви тут говорите про lvs, але це не обов'язково, як працює балансування завантаження http (s). Погляньте, наприклад, на haproxy. Цей додаток збалансовує завантаження в користувальницькій місцевості, а також додає хороший функціонал маршрутизації задніх днів.
Фрік

У своєму центрі обробки даних я використовую lvs для завантаження балансу моєї служби додатків https, і вона працює і працює добре.
dek.tiram

Вибачте моє незнання, але що таке "lvs"? Чи є конкурентом гапрокси?
smaili

Хапрокси також використовують лв. Я використовую piranha, яка також використовує lvs для основного процесу.
dek.tiram

haproxy - це автономна програма і зовсім не вимагає lvs (навіть не відомо про існування lvs). Ви можете використовувати lvs, щоб врівноважити кластер haproxy вузлів, якщо навантаження на haproxy стає занадто великою.
Фрік

-1

Балансиром навантаження може бути маршрутизатор або зворотний проксі:

LVS - це галузевий стандарт модуля балансування навантаження рівня Layer 4 для ядра Linux. Він використовується в різних комерційних балансирах навантаження, включаючи Barracuda, Loadbalancer.org і Kemp Technologies. Barracuda та Loadbalancer.org також використовують HAProxy для врівноваження навантаження 7 рівня ( на основі зворотного проксі ).

Пс. Я забув, це не показує, звідки я, звідки я, очевидно, Loadbalancer.org


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