This project is an MVP developed for our industry partner SEP. It implements an alternative approach for managing distributed nodes in a backup cluster environment.
The system consists of:
- A Frontend that offers a UI for editing and viewing data from nodes, users, and their permissions.
- A Backend that simulates backup nodes and handles the interaction logic between nodes.
For comprehensive documentation, please visit our Project Wiki.
The project is divided into two main components. Please refer to their respective README files for detailed documentation and instructions on how to run them individually:
The frontend is built with Angular. It communicates with the backend to get, edit, and delete data such as users, permissions, backups, and cluster information.
The backend is a Java Spring Boot application. It manages the business logic, simulates node interactions, and persists data.
The project uses a PostgreSQL database, which is configured via docker-compose.yml in the root directory.
Backend configuration can be found in backend/src/main/resources/application.yml.
Frontend environment configurations are located in frontend/src/environments/.
- Docker Desktop
To start the entire application (Frontend, Backend, and PostgreSQL), run the following command from the root directory:
docker compose up --buildThis will start:
- Frontend at
http://localhost:4200 - Backend (Cluster Manager) at
http://localhost:8080 - PostgreSQL Database at
http://localhost:5432
To start the application along with simulated nodes (defined in the test profile), use:
docker compose --profile test up --buildThis includes the components above plus the configured backup nodes.
This project includes integrated monitoring with Prometheus and Grafana to track system performance metrics from the cluster manager and backup nodes.
- Prometheus: Scrapes and stores metrics from Spring Boot applications (Micrometer)
- Grafana: Visualizes metrics in dashboards with automatic provisioning
- Metrics: CPU, memory, heap usage, HTTP requests, garbage collection, and more
To start the stack with Prometheus and Grafana along with simulated nodes for more comprehensive metrics:
docker compose --profile test up --buildVisit http://localhost:9090 to access Prometheus:
- Targets: Shows all monitored instances
- Graph: Query and visualize metrics in real-time
- Status: View Prometheus configuration and alerts
Visit http://localhost:3000 to access Grafana:
- Default login: admin / admin (change on first login)
- Data Source: Prometheus is pre-configured at
http://prometheus:9090 - Dashboard: "Cluster Overview" dashboard is auto-loaded
- Navigate to the docker-compose.yml file located in the root directory of the project.
- Replace the environment variable
- SPRING_PROFILES_ACTIVE=cluster_manager
inside the cluster-manager service with
- SPRING_PROFILES_ACTIVE=cluster_manager,test-runner
- Make sure you have followed the Requirement above for running any stress test.
- Select a test from the
/stress-testfolder you want to run- Each test has its own folder with a descriptive folder name, starting with
test- - Each test folder contains its own README.md file with specific instructions.
- Each test has its own folder with a descriptive folder name, starting with
- After selecting the test, run
docker compose --profile [folder-name] up --build
where[folder-name]is the name of the test folder you selected in step 2. - After running the test, you can find the results in the
/stress-test/[folder-name]/resultsfolder. - If you want to see the HTML report, run
node generate-results-page.jswhich will update theresults.html.
k6-reporter is used to create HTML reports of each test, you can access the code from Github
