При развертывании серверного приложения вам может потребоваться несколько экземпляров для обработки большого трафика. Балансировщик нагрузки используется для управления этим большим количеством запросов между несколькими серверами.

Балансировка нагрузки уровня 7 работает на высокоуровневом уровне приложения. Он может принять решение о балансировке нагрузки на основе содержимого сообщения (например, URL-адреса или файла cookie). Затем он устанавливает новое TCP-соединение с выбранным вышестоящим сервером (или повторно использует существующий с помощью HTTP keepalive) и записывает запрос на сервер.

Устройство, которое выполняет балансировку нагрузки уровня 7, часто называют обратным прокси-сервером.

Клиент не подключается к серверу напрямую. Запрос от клиентов получает балансировщик нагрузки. Балансировщик нагрузки решает, на какой сервер будет отправлен запрос. Сервер получает запрос и отправляет ответ балансировщику нагрузки, который пересылает ответ клиенту через порт 80.

Ниже приведен пример. Рассмотрим балансировщик нагрузки, который управляет трафиком между тремя серверами. Балансировщик нагрузки использует для этой цели алгоритм циклического перебора.

Nginx - это программное обеспечение, которое может действовать как веб-сервер, обратный прокси, балансировщик нагрузки, HTTP-кеш и т. Д. Оно может действовать как балансировщик нагрузки как уровня 7, так и уровня 4.

Я продемонстрирую, как мы можем создать балансировщик нагрузки уровня 7 между 4 серверами, работающими в системе с использованием Nginx. Я создал простое приложение Node JS и сделал его образ в докере. Я запустил 4 контейнера этого образа и опубликовал порт контейнеров на 4 разных порта системы. Вы можете использовать свое внутреннее приложение даже без создания его образа в докере. Просто запустите сервер на разных портах. Я запустил сервер на порте 2222, 3333, 4444, 5555. Оформить заказ на мое приложение Node JS здесь

Теперь установите Nginx в вашу систему. Мы должны внести изменения в nginx.conf файл, который определяет поведение Nginx. Найдите nginx.conf. В Linux он обычно находится в /etc/nginx/. Сделайте резервную копию существующего nginx.conf файла и очистите содержимое исходного файла.

В моем бэкэнд-приложении есть эти 4 маршрута. У них разные требования, поэтому я могу показать вам различные варианты применения балансировки нагрузки:

1.http://localhost:PORT/: Этот маршрут должен быть сбалансирован по нагрузке между всеми портами.

ответ: hello from a lightweight container. App ID = ${PORT}

2.http://localhost:PORT/app1: Этот маршрут должен быть сбалансирован по нагрузке между портами 2222 и 3333.

ответ: this is app1. App ID = ${PORT}

3.http://localhost:PORT/app2: Этот маршрут должен быть сбалансирован по нагрузке между портами 4444 и 5555.

ответ: this is app2. App ID = ${PORT}

4.http://localhost:PORT/admin: этот маршрут не должен быть доступен с порта 80 (порт, используемый HTTP).

ответ: admin page. . App ID = ${PORT}

Теперь посмотрим на nginx.conf. Прочтите комментарии, чтобы понять поток.

Вот результаты, которые я получил для своего внутреннего приложения.

  1. Для маршрута http://localhost/

2. Для маршрута http://localhost/app1

3. Для маршрута http://localhost/app2

4. Для маршрута http://localhost/admin

Ресурсы и ссылки

  1. Ускоренный курс NginX (прокси уровня 4 и уровня 7, HTTPS, TLS 1.3, HTTP / 2 и др.) Автор Hussein Nasser

2. Что такое балансировка нагрузки на уровне 7?



3. Приложение Docker Node.



4. Балансировка нагрузки с помощью Nginx.