Skip to main content
Version: 7.0

Application servers

Introduction​

Running multiple Passwork application servers is a core part of the fault-tolerant architecture. It delivers high availability, load distribution, and room for horizontal scaling.

Key benefits:

  • Automatic traffic distribution — if a server fails, the load balancer removes it from the pool and routes traffic to healthy nodes
  • Load distribution — requests are spread evenly
  • Horizontal scaling — add more servers to increase capacity
  • No downtime — remaining servers keep working when one fails
  • Predictable failover — traffic shifts automatically without changing app config

Architecture with multiple application servers​

Overview​

Several Passwork application servers run in parallel. Each server is a full Passwork instance with a web server and PHP-FPM.

note

Application servers do not exchange data directly and do not know how many servers are in the pool — this information is not stored in the database. All requests (authentication, reads, writes, events) go through the database connection, where data is stored and retrieved for users.

Architecture:

Application server fault tolerance scheme

Components of an application server​

  1. Web server

    • Handles HTTPS requests
    • Serves static files
    • Proxies requests to PHP-FPM
  2. Passwork application

    • Core Passwork logic
    • Business operations
  3. PHP-FPM (FastCGI Process Manager)

    • Executes PHP code
    • Manages PHP worker pool
    • Connects to the database

Load balancer​

The load balancer is critical for fault tolerance. It distributes requests across application servers and automatically shifts traffic when a server fails.

Functions of the load balancer​

  1. Load distribution

    • Evenly distributes requests
    • Supports algorithms such as round-robin, least connections, IP hash
  2. Health check

    • Periodically checks server availability
    • Automatically removes failed servers from the pool
    • Returns servers to the pool after recovery

Passwork exposes /api/v1/app/health-check for probing application server health.

  1. SSL/TLS termination (optional)
    • Offloads HTTPS at the balancer
    • Simplifies certificate management
info

User sessions are stored in the Passwork database. When a user is routed to another application server, existing tokens stay valid. Sticky sessions are not required — use even traffic distribution and health checks.

Sticky sessions and cache​

  • Sticky sessions are unnecessary: sessions and tokens are stored in the database.
  • CDN/edge cache is fine for static assets (CSS/JS); do not cache API requests.

Traffic balancing options​

Choose a solution that fits your infrastructure:

  • HAProxy — popular L4/L7 balancer with flexible config
  • Nginx — widely used L7 balancer
  • Envoy / Traefik — dynamic L7 balancers with service discovery
  • GSLB / DNS load balancing across sites — for geo-distributed deployments
  • Hardware ADC (F5, Citrix, A10, etc.) — for high-load or highly secured environments
warning

We do not provide installation or configuration guides for load balancers because they depend on each company's infrastructure.

Scaling recommendations​

Horizontal scaling lets you increase capacity by adding servers:

  • Start with 2–3 servers for basic fault tolerance
  • Add servers gradually as load grows
  • Monitor performance of each server
  • Keep configurations identical across application servers

Limitations​

  • Licensing — fault tolerance is available with the advanced license
  • Configuration synchronization — all servers must share the same settings
  • Database — all servers connect to the same MongoDB replica set