Skip to content

Балансировка нагрузки

Проксирование

  • Forward Proxy = Proxy - доступ в интернет через сервер
  • Reverse Proxy - сервер перенаправляет на другие сервы

Алгоритмы балансировки

  • Random
  • Round-Robin - последовательно (1 > 2 > 3 > 1)
  • Weighted Round-Robin - последовательно с весами (1 > 1 > 2 > 3 > 1)
  • Least Connections - кидаем туда где меньше всего соединений
  • Least Response Time - кидаем туда где меньше латенси
  • Load-based - кидаем туда где меньше нагрузка (cpu, ram)
  • sticky sessions - по айди пользователя (айди = 1 ⇒ сервер 1)
  • power of two choises - берём 2 рандома и направляем запрос серву с меньшей нагрузкой

Проверка работоспособности

  • Пинг / прием соединений
  • Специальный запрос GET/HEAD

Реализации

  • Round-Robin DNS - dns отвечает массивом адресов, затем сдвигает массив на 1, клиент стучится на 1 адрес
  • Geo Based DNS - ближайший адрес к пользователю по расстоянию

L4 / L3

  • Hardware / сетевой уровень по ip
  • NAT - на лоад-балансер приходит запрос, затем перенаправляется на конкретную тачку
    • Минусы: обратно тоже все через лоад-балансер
  • IP Tunneling - сейм, но обратно данные отдаются сразу с целевой тачки
  • L3: Direct Routing - на уровне Ethernet

L7

  • Http Reverse Proxy - просто прога, которая занимается балансировкой
  • Nginx, HAProxy
  • Гибкость, равномерность, решение проблем медленных клиентов

Application Based

  • В коде приложения балансируем

Материалы

https://www.youtube.com/watch?v=0Im7ArJvV6Y