Web Cluster Deployment
About 1 min
Web Cluster Deployment
This page describes a two-server Web cluster deployment model. Adjust IP addresses, passwords, SSL certificates, JVM parameters, and storage paths according to the production environment.
Server Role Planning
| Role | Server A | Server B |
|---|---|---|
| Nginx load balancing | No, single point on B | Yes, main load balancer |
| Spring Boot application | Yes, FastBee with Ignite node | Yes, FastBee with Ignite node |
| Database | MySQL + TDengine | Primary-replica mode to be implemented |
| Cache | Redis single node with persistence | Primary-replica mode to be implemented |
1. Prepare Both Servers
Install Docker and Docker Compose on both servers:
curl -fsSL https://get.docker.com | sh
systemctl start docker && systemctl enable docker
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose2. Deploy Server A
Assume the public IPs are 123.0.0.1 and 124.0.0.2, and the internal IPs are 10.1.1.10 and 20.2.2.20.
Before deployment:
- Package the backend as
fastbee-admin.jar. - Build the frontend
distpackage. - Prepare the license file, upload directory, logs directory, and database initialization files.
Key configuration items in docker-compose.yml:
java:
image: openjdk:8-jre
container_name: java
ports:
- 8080:8080
- 47500-47509:47500-47509
- 47101:47101
- 11211:11211
- 10800:10800
- 48500:48500
- 48880:48880
environment:
WORKER_HOST: 123.0.0.1
IGNITE_LOCAL_IP: 10.1.1.10
IGNITE_CLUSTER_NODES: 10.1.1.10,20.2.2.20
network_mode: host
volumes:
- /var/data/java/fastbee-admin.jar:/server.jar
- /var/data/java/license:/license
- /var/data/java/uploadPath:/uploadPath
- /var/data/java/logs:/logs
- /etc/localtime:/etc/localtimeTune JVM and Ignite parameters based on server resources. For a 4-core 8 GB server, start from conservative heap and off-heap settings, then adjust after benchmarking.
3. Deploy Server B
Server B runs Nginx load balancing and a Spring Boot application instance. The Nginx upstream should point to the internal IPs of Server A and Server B:
upstream backend {
server 10.1.1.10:8080 max_fails=1 fail_timeout=10s;
server 20.2.2.20:8080 max_fails=1 fail_timeout=10s;
keepalive 60;
least_conn;
}
server {
listen 80;
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/share/nginx/ssl/fastbee.crt;
ssl_certificate_key /usr/share/nginx/ssl/fastbee.key;
location /prod-api/ {
proxy_pass http://backend/;
}
}Verification
- Confirm both Spring Boot instances are registered and healthy.
- Access the platform through Nginx and verify login, device list, product list, and common APIs.
- Verify WebSocket, file upload, video callback, and static resource paths.
- Simulate node restart and confirm Nginx routes traffic to the remaining healthy node.
