Перейти к основному содержимому
Версия: 7.0

Серверы приложений

Введение

Использование нескольких серверов приложений Пассворка является основным компонентом отказоустойчивой архитектуры. Это обеспечивает высокую доступность системы, распределение нагрузки и возможность горизонтального масштабирования.

Основные преимущества:

  • Автоматическое распределение трафика — при сбое одного сервера балансировщик автоматически исключает его из пула и распределяет трафик на другие серверы
  • Распределение нагрузки — запросы равномерно распределяются между всеми доступными серверами
  • Горизонтальное масштабирование — можно добавлять новые серверы для увеличения производительности
  • Отсутствие простоев — при выходе из строя одного сервера остальные продолжают работать
  • Предсказуемые переключения — при failover трафик автоматически переводится на доступные ноды без изменения конфигурации приложения

Архитектура с несколькими серверами приложений

Общая схема

В отказоустойчивой архитектуре используется несколько серверов приложений Пассворка, работающих параллельно. Каждый сервер приложения представляет собой полноценный экземпляр Пассворка с веб-сервером и PHP-FPM.

примечание

Серверы приложений не обмениваются данными напрямую и не знают об общем количестве серверов в пуле — эта информация не хранится в базе. Все обращения (аутентификация, чтение и запись данных, события) выполняются через подключение к базе данных, откуда сервер получает и сохраняет информацию для отображения пользователю.

Архитектура:

Схема отказоустойчивости серверов приложений

Компоненты сервера приложения

Каждый сервер приложения включает:

  1. Веб-сервер

    • Обработка HTTPS запросов
    • Обслуживание статических файлов
    • Проксирование запросов к PHP-FPM
  2. Пассворк Application

    • Основное приложение Пассворк
    • Обработка бизнес-логики
  3. PHP-FPM (FastCGI Process Manager)

    • Обработка PHP-кода приложения Пассворка
    • Управление пулом процессов PHP
    • Подключение к базе данных

Балансировщик нагрузки

Балансировщик нагрузки является критически важным компонентом отказоустойчивой архитектуры. Он распределяет запросы между серверами приложений и автоматически распределяет трафик на другие серверы при сбоях.

Функции балансировщика

  1. Распределение нагрузки

    • Равномерное распределение запросов между серверами
    • Поддержка различных алгоритмов балансировки (round-robin, least connections, IP hash)
  2. Health check

    • Периодическая проверка доступности серверов
    • Автоматическое исключение неработающих серверов из пула
    • Автоматическое возвращение серверов в пул после восстановления

Пассворк предоставляет эндпоинт /api/v1/app/health-check для проверки состояния сервера приложения.

  1. 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 и т.п.) — для нагруженной или защищённой инфраструктуры
warning

Мы не предоставляем инструкций, описывающих установку и настройку балансировщика трафика, так как данные действия по настройке и конфигурации зависят напрямую от инфраструктуры компаний.

Рекомендации по масштабированию

Горизонтальное масштабирование серверов приложений позволяет увеличивать производительность системы путём добавления новых серверов:

  • Начинайте с 2-3 серверов для базовой отказоустойчивости
  • Добавляйте серверы постепенно по мере роста нагрузки
  • Мониторьте производительность каждого сервера
  • Обеспечьте одинаковую конфигурацию на всех серверах приложений

Ограничения

  • Лицензирование — отказоустойчивость Пассворка доступна в Расширенной лицензии
  • Синхронизация конфигурации — все серверы должны иметь одинаковую конфигурацию
  • База данных — все серверы подключаются к одной базе данных (репликационный набор или кластер)