“1 VPS hứng request → chia sang 3 VPS chạy” luôn, kiểu kiến trúc phổ biến nhất ngoài đời 👇
Internet | v [VPS 1 - Nginx Load Balancer] | | | v v v [VPS 2] [VPS 3] [VPS 4] (App) (App) (App)
VPS 2: 10.0.0.2 VPS 3: 10.0.0.3 VPS 4: 10.0.0.4
upstream backend_app {
least_conn;
server 10.0.0.2:80;
server 10.0.0.3:80;
server 10.0.0.4:80;
}
👉 Giải thích:
least_conn: đẩy request vào server đang ít kết nối nhấtround_robin (mặc định)ip_hash (giữ session theo IP)server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
✔ Request từ user → VPS 1
✔ VPS 1 → phân sang VPS 2/3/4
👉 Chỉ cần SSL ở VPS 1
certbot --nginx -d example.com
upstream backend_app {
ip_hash;
server 10.0.0.2;
server 10.0.0.3;
server 10.0.0.4;
}
⚠ Không scale tốt bằng Redis
upstream backend_app {
server 10.0.0.2 max_fails=3 fail_timeout=10s;
server 10.0.0.3 max_fails=3 fail_timeout=10s;
server 10.0.0.4 max_fails=3 fail_timeout=10s;
}
👉 1 VPS chết → Nginx tự loại
✔ Traffic trung bình → cao
✔ Muốn scale ngang
✔ Không muốn dùng Cloud LB (AWS / GCP đắt)
✔ Chủ động control hệ thống
❌ App còn nhỏ
❌ Chưa xử lý session
❌ Database yếu → LB cũng không cứu được