Как настроить NGINX для базовой балансировки нагрузки — CloudSavvy IT

Логотип NGINX
NGINX

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

Как работает балансировка нагрузки NGINX

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

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

Большая часть конфигурации происходит в том, как NGINX выбирает сервер для маршрутизации. По умолчанию используется циклический перебор, который будет отправлять запросы на каждый сервер по порядку, обеспечивая равномерное распределение нагрузки.

Однако это не всегда так просто. Многие веб-приложения требуют некоторой формы постоянство сеансаЭто означает, что пользователь должен обращаться к одному и тому же серверу в течение всего сеанса. Например, корзина покупок может храниться локально на одном сервере приложений, и если пользователь переключает серверы в середине сеанса, приложение может отключиться. Конечно, многие из этих сценариев могут быть исправлены с помощью лучшей инфраструктуры приложений и централизованных хранилищ данных, но многим людям требуется постоянство сеансов.

В NGINX набор серверов, на которые вы маршрутизируете, называется вверх по течениюи настроен как перечисляемый список адресов:

upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
}

Эти вверх по течению есть много вариантов; здесь мы установили вес, который будет отдавать приоритет этому серверу чаще (особенно полезно, если у вас разные размеры). Вы также можете установить максимальное количество подключений и различные таймауты. Если вы используете NGINX PlusВы также можете настроить проверку работоспособности, чтобы соединения не перенаправлялись на нездоровые серверы.

Самая основная форма сохранения сеанса — использование хэша IP. NGINX будет использовать IP для идентификации пользователей, а затем убедиться, что эти пользователи не переключают серверы в середине сеанса:

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

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

upstream backend {
    hash $scheme$request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}

Если вам не нужен какой-либо тип сохранения сеанса, вы можете сделать циклический выбор немного более разумным, выбрав, какой сервер имеет наименьшее количество подключений:

upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}

Или, в зависимости от того, какой из них в данный момент отвечает быстрее всего:

upstream backend {
    least_time (header | last_byte);
    server backend1.example.com;
    server backend2.example.com;
}

NGINX Plus имеет несколько других форм сохранения сеанса, но IP-хеширование будет работать для большинства приложений.

Прокси для бэкэнда

После того, как вы настроили свой бэкэнд, вы можете отправлять ему запросы из блоков вашего местоположения, используя proxy_pass с URI к бэкэнду.

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
    }
}

Конечно, если вы используете HTTPS, вам нужно отправить запрос с HTTPS:

server {
    listen      443 ssl;
    server_name example.com;

    ssl_certificate        /etc/ssl/certs/server.crt;
    ssl_certificate_key    /etc/ssl/certs/server.key;
    ssl_client_certificate /etc/ssl/certs/ca.crt;

    location /{
       proxy_pass https://backend;
    }
}

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.