Перейти к содержанию

Несколько реплик local-backend

Последнее обновление 25 сентября 2026Открыть как Markdown

local-backend можно запустить в нескольких экземплярах на одном хосте — запросы между ними распределяет nginx из состава дистрибутива. Общее состояние реплики держат в базе: в compose задано DISTRIBUTED_STATE=postgres.

Это вертикальное масштабирование одной машины. Если задача — пережить отказ сервера, нужна схема на двух нодах.

Запуск

С nginx:

./scripts/prepare-nginx.sh
docker compose --profile proxy up -d --scale backend-local=2

Без nginx:

docker compose up -d --scale backend-local=2

Число реплик можно менять той же командой; лишние контейнеры compose остановит сам.

Имя сервиса backend

В командах docker compose сервис backend называется backend-local. В прежних версиях дистрибутива он назывался local-backend. Если команда отвечает no such service: backend-local, стенд ещё не обновлён — используйте прежнее имя или обновите стенд командой ./update.sh.

Ограничения

Ограничение Почему Что делать
Прямой доступ к API с хоста при --scale недоступен docker-compose.publish-backend.yml публикует фиксированный порт хоста, и вторая реплика его занять не сможет Ставить nginx и ходить в API через него
RADIUS на хост не публикуется UDP-порт нельзя отдать нескольким контейнерам сразу Один экземпляр local-backend на хост либо две ноды с RADIUS_UDP_BINDING=all
Слушатель RADIUS работает только у лидера Владелец аренды один — при RADIUS_UDP_BINDING=leader остальные реплики UDP не слушают Учитывать при планировании: масштабирование ускоряет HTTP API, но не RADIUS

Оверлей docker-compose.publish-radius.yml при нескольких репликах подключать не нужно: install.sh и update.sh замечают, что реплик больше одной, не включают оверлей в COMPOSE_FILE и печатают предупреждение. ./doctor.sh в этом случае выдаёт [WARN], а не ошибку.

Проверка

docker compose ps backend-local
./doctor.sh

В выводе docker compose ps должно быть столько контейнеров backend, сколько задано в --scale. В отчёте doctor.sh обратите внимание на строку о репликах и публикации UDP: она подтверждает, что оверлей RADIUS не подключён — для этой схемы это нормально.

После обновления ./update.sh удаляет предыдущие образы только тогда, когда все реплики перешли в healthy. Если хотя бы одна не поднялась, образы остаются на диске — подробнее в разделе «Старые образы и место на диске».

Смотрите также

Связаться с нами

Подберём сценарий под вашу инфраструктуру, рассчитаем стоимость и запустим бесплатный пилот на 30 дней.

Отправляя заявку, вы соглашаетесь на обработку персональных данных.