Серверы приложений
Введение
Использование нескольких серверов приложений Пассворка является основным компонентом отказоустойчивой архитектуры. Это обеспечивает высокую доступность системы, распределение нагрузки и возможность горизонтального масштабирования.
Основные преимущества:
- Автоматическое распределение трафика — при сбое одного сервера балансировщик автоматически исключает его из пула и распределяет трафик на другие серверы
- Распределение нагрузки — запросы равномерно распределяются между всеми доступными серверами
- Горизонтальное масштабирование — можно добавлять новые серверы для увеличения производительности
- Отсутствие простоев — при выходе из строя одного сервера остальные продолжают работать
- Предсказуемые переключения — при failover трафик автоматически переводится на доступные ноды без изменения конфигурации приложения
Архитектура с несколькими серверами приложений
Общая схема
В отказоустойчивой архитектуре используется несколько серверов приложений Пассворка, работающих параллельно. Каждый сервер приложения представляет собой полноценный экземпляр Пассворка с веб-сервером и PHP-FPM.
Серверы приложений не обмениваются данными напрямую и не знают об общем количестве серверов в пуле — эта информация не хранится в базе. Все обращения (аутентификация, чтение и запись данных, события) выполняются через подключение к базе данных, откуда сервер получает и сохраняет информацию для отображения пользователю.
Архитектура:

Компоненты сервера приложения
Каждый сервер приложения включает:
-
Веб-сервер
- Обработка HTTPS запросов
- Обслуживание статических файлов
- Проксирование запросов к PHP-FPM
-
Пассворк Application
- Основное приложение Пассворк
- Обработка бизнес-логики
-
PHP-FPM (FastCGI Process Manager)
- Обработка PHP-кода приложения Пассворка
- Управление пулом процессов PHP
- Подключение к базе данных
Балансировщик нагрузки
Балансировщик нагрузки является критически важным компонентом отказоустойчивой архитектуры. Он распределяет запросы между серверами приложений и автоматически распределяет трафик на другие серверы при сбоях.
Функции балансировщика
-
Распределение нагрузки
- Равномерное распределение запросов между серверами
- Поддержка различных алгоритмов балансировки (round-robin, least connections, IP hash)
-
Health check
- Периодическая проверка доступности серверов
- Автоматическое исключение неработающих серверов из пула
- Автоматическое возвращение серверов в пул после восстановления
Пассворк предоставляет эндпоинт /api/v1/app/health-check для проверки состояния сервера приложения.
- SSL/TLS терминация (опционально)
- Обработка HTTPS на уровне балансировщика
- Упрощение управления сертификатами
Сессии пользователей хранятся в базе данных Пассворка. Если пользователя перенаправляет на другой сервер приложения, он продолжает работать с уже выданными токенами, поэтому включать sticky sessions (session affinity) на балансировщике не требуется — достаточно равномерного распределения трафика и health check.
Sticky sessions и кэш
- Sticky sessions не требуются: сессии и токены хранятся в базе.
- Для статики (CSS/JS) допустим CDN/edge-кэш; API-запросы кэшировать нельзя.
Варианты балансировки трафика
Примеры решений для балансировки трафика (выбирайте вариант, совместимый с вашей инфраструктурой):
- HaProxy — популярный L4/L7-балансировщик, гибкая конфигурация
- Nginx — распространённый L7-балансировщик
- Envoy / Traefik — динамическая L7-балансировка, сервис-дискавери
- GSLB / DNS-балансировка между площадками — для геораспределённых инсталляций
- Аппаратные ADC (F5, Citrix, A10 и т.п.) — для нагруженной или защищённой инфраструктуры
Мы не предоставляем инструкций, описывающих установку и настройку балансировщика трафика, так как данные действия по настройке и конфигурации зависят напрямую от инфраструктуры компаний.
Рекомендации по масштабированию
Горизонтальное масштабирование серверов приложений позволяет увеличивать производительность системы путём добавления новых серверов:
- Начинайте с 2-3 серверов для базовой отказоустойчивости
- Добавляйте серверы постепенно по мере роста нагрузки
- Мониторьте производительность каждого сервера
- Обеспечьте одинаковую конфигурацию на всех серверах приложений
Ограничения
- Лицензирование — отказоустойчивость Пассворка доступна в Расширенной лицензии
- Синхронизация конфигурации — все серверы должны иметь одинаковую конфигурацию
- База данны х — все серверы подключаются к одной базе данных (репликационный набор или кластер)