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

Балансировка обеспечивает высокую доступность системы за счет распределения нагрузки между несколькими устройствами. Использование нескольких устройств с балансировкой нагрузки может увеличить надежность благодаря резервированию. Jelastic использует два вида балансировки нагрузки: TCP и HTTP.

В Jelastic доминирует HTTP балансировка. Как реверсный прокси сервер для HTTP протоколов мы используем NGINX.

NGINX является вторым самым популярным в мире веб-сервером с открытым исходным кодом, предоставляющим более высокую производительность и эффективность пользовательским приложениям. Использование NGINX не требует дополнительных шагов развертывания или предварительных настроек. NGINX предлогает встроенную балансировку нагрузки на 7 уровне модели ISO OSI и кэширование контента для предоставления экономически эффективной и высоко доступной платформы для размещенных приложений. NGINX с его масштабируемостью, безопасностью и высокоэффективностью памяти и процессора стал самым быстрым веб-сервером в мире.

Давайте рассмотрим процесс HTTP балансировки в Jelastic.

Балансировщик представляет фронтенд, который получает все http запросы и распределяет их между серверами приложений. Он предоставляет двухуровневую балансировку по кукам.

Первый уровень основан на одной ноде. А второй - на группе нод, делящих между собой липкие сессии.


Когда пользователь делает http запрос, балансировщик предоставляет ему две куки:

К1 - ID ноды
К2 - ID группы

Первая кука (ID ноды) направляет запрос на нужную ноду (сервер). Если эта нода неожиданно упадет, то балансировщик остоновит ее использование и перенаправит запрос на другой работающий сервер. Данный активный сервер выбирается с помощью второй куки (ID группы) из группы нод с общей для отказавшей ноды сессией.

Что дальше?