Настройка балансировки сетевой нагрузки (NLB)

С помощью Nginx можно настроить балансировку сетевой нагрузки между контроллерами в домене Avanpost DS. Клиенты будут обращаться по единому имени, указанному в A-записи в DNS зоне домена, а нагрузка будет распределяться по всем указанным в конфигурационном файле Nginx контроллерам домена.
Для настройки необходимо выполнить шаги:

Шаг 1. Добавить в DNS зону домена A-запись.

Для этого требуется:

  1. В разделе "DNS" веб-интерфейса Avanpost DS в строке нужной зоны нажать → "Добавить запись A".
  2. Заполнить необходимые поля в открывшейся форме:
    ПолеЗначение
    Имя хостаИмя балансировщика без домена (В примере используется значение "ds")

    IP

    IPv4 адрес первого контроллера домена
  3. Нажать .

Шаг 2. Настроить конфигурационный файл Nginx на первом контрллере домена.

Ниже приведен пример конфигурационного файла Nginx для настройки NLB с использованием https. В секции "upstream site" перечислены все контроллеры в домене, между которыми будет распределяться нагрузка.
В примере используется:

  • FQDN первого контроллера домена "ds01.avanpost.local". Его необходимо заменить на ваш FQDN.
  • FQDN контроллера домена "ds02.avanpost.local". Его необходимо заменить на ваш FQDN.
  • FQDN контроллера домена "ds03.avanpost.local". Его необходимо заменить на ваш FQDN.
  • Имя балансировщика "ds.avanpost.local". Его необходимо заменить на имя, указанное в A-записи на шаге 1.

Для публикации с использованием протокола https требуются сертификаты, выданные вашим удостоверяющим центром.

/etc/nginx/conf.d/nlb.conf
upstream site {
    ip_hash;
    server ds01.avanpost.local:8080;
    server ds02.avanpost.local:8080;
    server ds03.avanpost.local:8080;
}

server {
    listen       443 ssl;
    server_name  ds.avanpost.local;
    ssl_certificate     /opt/ds01.avanpost.local.crt;
    ssl_certificate_key /opt/ds01.avanpost.local.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://site;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Обсуждение