NPM как балансировщик

И так, краткая сопроводительная справка к видео:

  1. Зачем нужен балансировщик?
нажмите, чтобы развернуть детали

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

  • Вам критична отказоустойчивость сервиса. Например, чтобы Ваш основной DNS сервер, блокировщик рекламы, сервис хранения паролей - дублировался.
  • Нагрузка на одной физической машине критически высока, нужно ее распределеить на несколько серверов.
  1. Как настроить балансировку в NPM
нажмите, чтобы развернуть детали

2.1 создать папку mkdir /data/nginx/custom/ в lxc или docker контейнере
2.2 создать файл конфигурации для баналсировщика: НАЗВАНИЕ.conf
например nano http.conf или nano balancer1.conf
содержащий адрес-порт серверов для балансировки:

upstream backend1 {
 server ip:port weight=1;
 server ip2:port2 weight=10;
}

где

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

2.3 Добавить блок #Custom в nano /etc/nginx/conf/nginx.conf
указав, что конфигруации nginx нужно смотреть на созданный Вами файл
/data/custom/balancer1.conf

include /data/nginx/custom/balancer1[.]conf;

2.4 В веб панели npm добавить proxy host


где

  • loadtest.lan - ваш целевой ресурс, требующий балансировки
  • balancerovshik - любое название латиницей(не влияет ни на что), порт любой

вкладка Advanced

location / {
add_header       X-Served-By $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Forwarded-Proto  $scheme;
proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP          $remote_addr;
proxy_pass       http://balancer1;
}

где balancer1 это название апстрима, которое вы указали в файле конфигурации балансировки.

  1. Дополнительные материалы по видео
нажмите, чтобы развернуть детали

3.1 Вместо реальных сервисов исользовались демо nginx-hello контейнеры

services:
  nginx-hello:
    image: nginxdemos/hello
    ports:
      - 80:80

3.2 NPM можно равернуть:
- как LXC контейнер в Proxmox VE
- как docker app

  1. Полезные статьи по данной тематике:
нажмите, чтобы развернуть детали

4.1 How to load balance your servers using Nginx Proxy Manager and Cloudflare - Silicon's blog
4.2 NGINX as sticky balancer for HA using cookies
4.3 Как настроить Nginx в качестве балансировщика нагрузки / Хабр

2 лайка