Настройка конфигурации#

Для настройки балансировщика нагрузки используется декларативная конфигурация. Конфигурацию балансировщика нагрузки можно просмотреть и отредактировать в веб-интерфейсе Angie ADC (Управление трафикомБалансировщик нагрузки).

Структура конфигурации#

Балансировщик нагрузки состоит из модулей, которые настраиваются директивами, заданными в конфигурации. Директивы могут быть простыми и блочными. Простая директива состоит из имени и параметров, разделенных пробелами, и оканчивается точкой с запятой ;. В блочной директиве вместо точки с запятой после имени и параметров следует набор дополнительных инструкций внутри фигурных скобок { и }. Блочные директивы называются контекстами.

Примеры:

  • контекст events (общая обработка соединений);

  • контекст http (конфигурация HTTP-балансировки);

  • контекст stream (конфигурация TCP/UDP балансировки).

Контексты events, http, stream располагаются в контексте main. Другие директивы, размещенные вне контекстов events, http, stream, считаются также находящимися в контексте main.

В контекстах http и stream размещаются:

  • блоки server, в которых настраивается проксирование трафика;

  • блоки upstream, в которых настраиваются группы upstream-серверов для балансировки нагрузки.

В конфигурации в веб-интерфейсе Angie ADC уже предустановлены некоторые общие параметры. Вам необходимо дополнить конфигурацию с учетом ваших целей.

Подробнее о конфигурации и обработке соединений см. Конфигурационные файлы и Соединения, сессии, запросы, логи.

Важно

Строки конфигурации, приведенные ниже, нельзя удалять или менять (они используются для обеспечения работы соответствующего функционала Angie ADC).

Контекст main:

error_log  /var/log/angie-lb/healthmonitoring.log error;
pid        /run/angie-lb.pid;

Контекст http:

include /etc/angie-lb/prometheus_all.conf;
include /etc/angie-lb/internal/prometheus.conf;

Настройка простого прокси-сервера#

Angie ADC можно использовать в качестве прокси-сервера, который принимает запросы, перенаправляет их на проксируемые серверы, получает от них ответы и отправляет их клиенту.

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

  1. Создайте сервер, который будет использоваться в качестве бэкенда для прокси (проксируемый сервер ), добавив блок server в контекст http:

    server {
        listen 8081;
        root /static/www;
    
        location / {
        }
    }
    

    Здесь сервер слушает на порту 8081 и сопоставляет URI запросов с файлами в каталоге /static/www (как настроить загрузку и раздачу статических файлов см. соотв. статью). Директива root находится в контексте server и будет использоваться, если директива location, выбранная для выполнения запроса, не содержит собственной директивы root.

    Примечание

    В общем случае конфигурационный файл может содержать несколько блоков server, отличающихся портами, на которых они слушают (listen), и именами сервера (server_name). Определив, какой server будет обрабатывать запрос, Angie ADC сравнивает URI запроса с параметрами location, заданными в блоке server, и принимает решение.

  2. Добавьте конфигурацию прокси-сервера:

    server {
        listen 80;
        location / {
            proxy_pass http://localhost:8081/;
        }
    
        location ~ \.(gif|jpg|png)$ {
            root /static/images;
        }
    }
    

    В первом блоке location добавлена директива proxy_pass c указанием протокола, имени и порта проксируемого сервера. Во втором блоке location задано регулярное выражение для всех URI, оканчивающихся на .gif, .jpg или .png. Соответствующие запросы будут обслуживаться из каталога /static/images.

    Примечание

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

  3. Сохраните изменения в конфигурации, нажав на кнопку Сохранить.

Получившийся прокси-сервер будет обслуживать запросы к файлам .gif, .jpg или .png из каталога /static/images, а все остальные запросы будет проксировать на сервер localhost:8081.

Настройка балансировки нагрузки#

Чтобы настроить балансировку нагрузки для HTTP-трафика, добавьте блок upstream в контекст http и укажите в нем бэкенд-серверы, которые будут использоваться для балансировки нагрузки. Затем настройте проксирование запросов на эту группу серверов в блоке server с помощью директивы location.

Пример:

upstream backend {
    zone backend 1m;
    server backend1.example.com;
    server backend2.example.com;
}

server {
    listen 80;
    server_name localhost;

    location /api {
        proxy_pass http://backend;
    }
}

В приведенном примере задана группа серверов backend. Все запросы на порт 80 с URI, начинающимися с /api, проксируются в эту группу. Метод балансировки нагрузки не указан явно, поэтому по умолчанию используется метод round-robin (запросы распределяются по серверам последовательно).

Раширенная настройка#

Дополнительно в конфигурации вы можете настроить:

Подробнее см. в справочнике HTTP-модуля и в справочнике потокового модуля.

Использование портов#

Если вы планируете использовать в конфигурации другие порты помимо 80/443, вы можете открыть их с помощью команды open через CLI Angie ADC.

Важно

При настройке конфигурации не занимайте следующие порты (используются внутренними сервисами Angie ADC):

TCP: 22, 199, 2022, 2222, 2601, 2602, 2603, 2604, 2605, 2606, 2615, 2616, 2617, 2619, 2623, 3050, 3051, 3053, 3054, 3060, 3111, 3122, 3123, 3301, 3302, 3380, 3391, 5044, 5355, 5432, 8010, 8080, 9090, 9100, 9120, 9600, 9633, 9898, 9900, 60080

UDP: 53, 161, 323, 546, 3784, 3785, 4784, 5355, 7784