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

В левой части экрана отображается список файлов конфигурации, к которым есть доступ у пользователя. В правой части экрана отображается содержимое каждого файла.
По умолчанию конфигурация балансировщика содержит следующие файлы и папки:
папка
http.d— содержит конфигурации веб-сайтов и веб-приложений, работающих по протоколам HTTP/HTTPS:файл
default.conf— пример настройки виртуального хоста; этот файл не используется.
папка
stream.d— настройки проксирования трафика на уровне транспортного протокола (TCP и UDP):файл
example.conf— пример настройки потокового (TCP/UDP) проксирования; этот файл не используется.
файл
angie.conf— главный конфигурационный файл веб-сервера; запускает процессы, определяет пути к логам и подключает все остальные папки и файлы;файл
fastcgi.conf— настройки для работы с PHP (через PHP-FPM) и другими FastCGI-приложениями;файл
fastcgi_params— аналог fastcgi.conf, содержащий базовые переменные окружения для FastCGI;файл
mime.types— карта соответствия расширений файлов и их типов данных (например .html → text/html, .jpg → image/jpeg);файл
prometheus_all.conf— файл настройки экспорта метрик в формате Prometheus для мониторинга (например, в Grafana);файл
scgi_params— параметры для работы по протоколу SCGI;файл
uwsgi_params— параметры для интеграции с приложениями на Python.
Администратор может добавлять новые файлы в папки http.d и stream.d,
нажав на значок добавления напротив соответствующей папки,
и удалять любые существующие файлы, нажав на три точки в нижней части экрана соответствующего файла
и выбрав пункт Удалить файл.
При сохранении изменений конфигурация обновляется и применяется сразу.
Если при сохранении файла возникает конфликт (другой пользователь уже внес изменения в файл),
то система подсвечивает те места, где правки конфликтуют, и предлагает выбрать, какую версию файла сохранить:
пользовательскую (Сохранить мою версию) или серверную (Принять серверную версию).
Перезапуск балансировщика#
В верхней части экрана отображается статус балансировщика:
Работает— балансировщик запущен;Не работает— балансировщик не запустился после перезагрузки конфигурации.
Также отображается время, прошедшее с последней перезагрузки (Перезагрузка)
и количество перезагрузок при наведении на время (Поколение).
Совет
Если у балансировщика отображается статус Не работает,
необходимо проверить журнал ошибок балансировщика (см. ниже)
и устранить ошибки.
Также можно попробовать перезапустить балансировщик вручную. Для этого откройте любой файл конфигурации балансировщика и сохраните его без внесения изменений.
Логи балансировщика#
В веб-интерфейсе можно просмотреть журнал ошибок балансировщика нагрузки.
Для этого перейдите в раздел Управление трафиком → Балансировщик нагрузки
и в нижней части экрана щелкните многоточие (...) и выберите Логи.
Также см. Журналы событий и экспорт и diagnostics.
Принцип конфигурации#
Для настройки балансировщика нагрузки используется декларативная конфигурация.
Балансировщик нагрузки состоит из модулей, которые настраиваются директивами,
заданными в конфигурации.
Директивы могут быть простыми и блочными.
Простая директива состоит из имени и параметров, разделенных пробелами,
и оканчивается точкой с запятой ;.
В блочной директиве вместо точки с запятой после имени и параметров следует
набор дополнительных инструкций внутри фигурных скобок { и }.
Блочные директивы называются контекстами.
Примеры:
контекст 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;
Использование портов#
Если вы планируете использовать в конфигурации другие порты помимо 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
Порты 8080 и 8443 можно использовать, если у вас выделен отдельный интерфейс управления.
UDP: 53, 161, 323, 546, 3784, 3785, 4784, 5355, 7784
Настройка простого прокси-сервера#
Angie ADC можно использовать в качестве прокси-сервера, который принимает запросы, перенаправляет их на проксируемые серверы, получает от них ответы и отправляет их клиенту.
В примере ниже настраивается базовый прокси-сервер, который будет обслуживать запросы изображений из локального каталога и отправлять все остальные запросы на проксируемый сервер.
Создайте сервер, который будет использоваться в качестве бэкенда для прокси (проксируемый сервер ), добавив блок
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, и принимает решение.Добавьте конфигурацию прокси-сервера:
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, сохраненный до этого.Сохраните изменения в конфигурации, нажав на кнопку
Сохранить.
Получившийся прокси-сервер будет обслуживать запросы
к файлам .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-балансировки (keepalive, sticky, zone, queue) и stream-балансировки (sticky, zone).
Подробнее см. в справочнике HTTP-модуля и в справочнике потокового модуля.