This system simulates a reverse proxy (load balancer) that distributes incoming requests to backend servers based on the least number of active connections. The backend servers simulate long-lived sessions or compute-intensive endpoints. The project is designed to handle HTTP-based web service requests and efficiently distribute them using a front-end load balancer.
- Load Balancer (Gateway): This component is responsible for distributing incoming HTTP requests to backend servers based on their load.
- Backend Servers: These servers handle requests from the load balancer. They simulate long-lived sessions or compute-intensive tasks.
- Iterative Request Redirection: Unlike traditional proxy systems, this solution uses an iterative approach to redirect clients to the backend server with the least active connections.
- High Traffic Scalability: The system optimizes resource utilization and improves scalability for high-traffic environments.
- Centralized Control: Despite the distributed backend architecture, the system maintains centralized control for optimal routing decisions.
: Lightweight and high-performance async HTTP server.
,
: Async HTTP clients for backend communication.
: Containerization.
: Used for orchestrating all containers and services across nodes.
: Security monitoring and agent-based system-level log collection.
The system was deployed using Nomad as the orchestration platform across multiple virtual machines.
- All components were orchestrated using Nomad job specifications.
- Wazuh Agent was deployed via Nomad on every node for system-level security monitoring.
- The application code (load balancer and backend services) was deployed only to appropriate nodes using Nomad's job constraints to control placement.
- Each component was declared in a dedicated
.nomadjob file for reproducibility.
Logs are handled by a unified logging stack:
- Wazuh Agent collects system-level and security-relevant logs.
💡 This deployment strategy ensures better scalability, security, and separation of concerns between logging, orchestration, and service logic.
Feel free to fork this repository and submit pull requests. Any contributions to improve the system, such as adding new features, enhancing performance, or improving security, are welcome!
- Telegram: @ostxxp
- Email: a.ostapenko@innopolis.university
- Telegram: @aliyushka_sgdv
- Email: a.sagdieva@innopolis.university
- Telegram: @XriXis
- Email: i.lobazov@innopolis.university
- Telegram: @wkwthigo
- Email: e.zagurskih@innopolis.university
This project is licensed under the MIT License - see the LICENSE file for details.
