paint-brush
Декодування примітивів балансування навантаженняза@fairday
39,946 показання
39,946 показання

Декодування примітивів балансування навантаження

за Aleksei4m2024/02/26
Read on Terminal Reader
Read this story w/o Javascript

Надто довго; Читати

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

People Mentioned

Mention Thumbnail
featured image - Декодування примітивів балансування навантаження
Aleksei HackerNoon profile picture
0-item


Щоразу, коли ваша система зростає, трафік збільшується, все більше і більше користувачів використовують ваші продукти, сервери починають реагувати повільніше, простої змушують ваш бізнес страждати, тоді ви починаєте думати про масштабування.


Існує дві основні стратегії масштабування – вертикальна та горизонтальна.


Вертикальне масштабування має на меті збільшити потужність системи шляхом додавання, як правило, більшого процесора та оперативної пам’яті до ваших серверів.


Навпаки, горизонтальне масштабування фокусується на дублюванні (або клонуванні) ваших серверів у пулі ресурсів.


Більше про це:


Вертикальне масштабування

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


Однак вертикальне масштабування має серйозні недоліки

  1. Апаратне обмеження, оскільки нескінченно додавати ресурси неможливо
  2. Відсутність відновлення після відмови та резервування підвищує ризик тривалого простою та втрати даних


Горизонтальне масштабування

Горизонтальне масштабування усуває ці проблеми шляхом клонування ваших серверів програм і вбудовування такого компонента, як балансир навантаження .


Балансувальник навантаження розподіляє трафік на ваших серверах за допомогою певних алгоритмів, таких як:


  1. Колова система
  2. Зважена кругова система
  3. Підходи на основі хешу IP
  4. Найменший спосіб підключення
  5. Метод найменш зваженого з'єднання
  6. Метод найменшої відповіді та багато інших.


Тим не менш, він має кілька недоліків:


  1. Сервери мають бути без стану
  2. Сеанси мають зберігатися в централізованому сховищі даних
  3. Більш складний розгортання стратегій може знадобитися
  4. Балансувальник навантаження може стати вузьким місцем продуктивності, якщо він неправильно налаштований і ресурсів недостатньо
  5. Це створює додаткову складність системи та є потенційною єдиною точкою збою, що вимагає застосування стратегій відновлення після відмови


Балансувальники навантаження L4 / L7

Щоб два пристрої в Інтернеті могли спілкуватися один з одним, базові системи повинні дотримуватися певних протоколів. Усі чули про модель OSI, яка описує сім рівнів, які використовують комп’ютерні системи для зв’язку через мережу. Незважаючи на те, що сучасний Інтернет базується на простішій моделі стеку протоколів TCP/IP, модель OSI широко використовується, оскільки вона допомагає візуалізувати та повідомити, як працюють мережі, а також допомагає ізолювати та вирішувати проблеми з мережею.


Більшість галузевих рішень з балансування навантаження використовують терміни L4 і L7, де L4 відноситься до транспортного рівня в моделі OSI, а L7 відноситься до прикладного рівня.


Балансувальник навантаження L4 все ще є L2/L3, оскільки він використовує дані з нижніх рівнів, такі як IP-адреса та номер порту.


Основні переваги балансувальника навантаження L4

  • Це більш безпечно та продуктивніше, оскільки вміст даних не береться до прийняття рішень щодо маршрутизації

  • Те саме TCP-з’єднання підтримується між клієнтом і сервером, що допомагає запобігти перевищенню ліміту доступних TCP-з’єднань на балансирі навантаження


Основні недоліки балансувальника навантаження L4

  • Інтелектуальна маршрутизація неможлива, оскільки вміст не розшифровується
  • Протокол із збереженням стану створює додаткову складність
  • Зіставлення публічних і приватних адрес
  • Немає кешування, оскільки вміст недоступний на цьому рівні
  • Неможливо використовувати для архітектури мікросервісів, оскільки переспрямування трафіку недоступне на основі URL-адреси


З іншого боку, балансир навантаження L7 працює на прикладному рівні в моделі OSI


Основні переваги балансира навантаження L7

  • Розумні рішення можна приймати на основі URL-шляху, заголовків, вмісту

  • Кешування


Основні недоліки балансира навантаження L7

  • Додаткові накладні витрати через підтримку двох TCP-з’єднань, одне між клієнтом і балансувальником навантаження, друге між балансувальником навантаження та сервером. Крім того, необхідно враховувати обмеження TCP-з’єднання балансувальника навантаження
  • Менш безпечний, оскільки балансувальник навантаження повинен знати сертифікати, щоб мати можливість розшифровувати дані та приймати рішення щодо маршрутизації


Висновок

Балансувальник навантаження є життєво важливим компонентом, коли горизонтальне масштабування застосовується для обробки систем із високим трафіком. Існує два основних типи балансувальників навантаження L4 і L7.


  1. Балансувальник навантаження L4 набагато безпечніший і ефективніший через обмеження прийняття розумних рішень

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


Вибір відповідного типу залежить від вимог до системи, і його слід ретельно обдумати, дотримуючись розумного балансу між застосуванням принципів безпеки та усуненням вузьких місць продуктивності.


Також опубліковано тут.


L O A D I N G
. . . comments & more!

About Author

Aleksei HackerNoon profile picture
Aleksei@fairday
Hey, I am Alex, a dedicated Software Development Engineer with experience in the .NET environment and architecture

ПОВІСИТИ БИРКИ

ЦЯ СТАТТЯ БУЛА ПРЕДСТАВЛЕНА В...