И так, краткая сопроводительная справка к видео:
- Зачем нужен балансировщик?
нажмите, чтобы развернуть детали
Случаев, вариантов и причин применения может быть множество.
В домашнем самохостинге - я бы говорил о тех случаях, когда:
- Вам критична отказоустойчивость сервиса. Например, чтобы Ваш основной DNS сервер, блокировщик рекламы, сервис хранения паролей - дублировался.
- Нагрузка на одной физической машине критически высока, нужно ее распределеить на несколько серверов.
- Как настроить балансировку в 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 это название апстрима, которое вы указали в файле конфигурации балансировки.
- Дополнительные материалы по видео
нажмите, чтобы развернуть детали
3.1 Вместо реальных сервисов исользовались демо nginx-hello контейнеры
services:
nginx-hello:
image: nginxdemos/hello
ports:
- 80:80
3.2 NPM можно равернуть:
- как LXC контейнер в Proxmox VE
- как docker app
- Полезные статьи по данной тематике:




