Я расписывал про свой опыт тут. Начал городить такую схему в том числе по причине неудобства точечной настройки NPM через веб интерфейс (по сути, приходится просто прописывать свой конфиг nginx в Advanced, который будет игнорировать то, что прописано в Details, но об этом вы сами все узнаете в следующем видео от @admin
Кстати, по поводу балансировки, не знаю, будет ли в видео описано и умеет ли NPM из коробки, но очень полезно включить липкие печеньки/sticky cookie для ряда сервисов, иначе round robin балансировка может только повредить (у меня были проблемы с consul и консолью в pve)
P.S.
В ближайшие дни обновлю свою схему (ссылка выше) т.к. добавил и успешно работает authentication proxy by authentik тоже в кластерном исполнении
Случаев, вариантов и причин применения может быть множество.
В домашнем самохостинге - я бы говорил о тех случаях, когда:
Вам критична отказоустойчивость сервиса. Например, чтобы Ваш основной 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
Как бы странно не звучало в теме про NPM, но он хорош ровно под те простые задачи для которых он автором был написан.
А если во время обеда пришел аппетит..
пора изучать инструменты мощнее и не то, чтобы сильно сложнее, когда мы говорим о yaml конфиграции(как выше) VS набора conf файлов.. просто иные
Но тут каждый сделает выбор сам.
PS
спасибо, что поделился примером настройки в альтернативном варианте
Ну вот я его рекомендую новичкам усиленно, кому не надо 100500 вариантов сложной конфигурации + он сам получает LE сертификаты, а на моей практике еще ни разу новичок не настроил связку docker + nginx + certbot с первой попытки
Спасибо за видео, в единичных случаях проще один раз подпилить NPM, чем переезжать на другое решение.
А еще в NPM давно не было каких-то значительных изменений, продукт явно достиг своего предела в развитии.
TTL приходится снижать минимально. При этом перед каждым подключением будет уходить запрос на сервер (у меня дома и без этого более 1.5 млн запросов в сутки), что повышает латентность и нагрузку на сервер
Работает в рамках одного сегмента сети, с учетом кеширующих DNS серверов время реакции порядка 5 минут является очень хорошим
DNS сервер тоже надо дублировать т.к. он становится бутылочным горлышком т.к. см. пункт 1
Редко применяется за пределами service discovery
Ну и если брать только браузер, то можно иметь 2 DNS записи и браузер будет перебирать все значения пока не получится открыть страницу