1. Tổng Quan Môi Trường Production#
1.1. Đặc Điểm Cốt Lõi#
Production là môi trường phục vụ traffic thực của khách hàng. Kiến trúc production của Tools V2 khác hoàn toàn so với Staging và Local ở những điểm sau:Không build trực tiếp trên server worker. Thay vào đó, Docker image được build trên một Bastion Build Server riêng biệt và push lên AWS ECR.
Các server worker (cụm Vnetwork) chỉ pull image từ ECR và chạy — không cần cài Bun, không cần source code TypeScript.
Triển khai đến nhiều server worker đồng thời bằng vòng lặp SSH.
Mỗi server worker chạy một instance Tools V2 độc lập với SERVER_ID là IP của server đó.
Kết nối với Production API Backend tại https://traffic-apilangtu.club.
1.2. Kiến Trúc Tách Biệt Build Và Deploy#
GitLab CI/CD
│
├── Stage: build-master
│ └── SSH → Bastion Build Server
│ ├── git pull (nhánh master-v2)
│ ├── docker buildx build
│ └── docker push → AWS ECR (ap-southeast-1)
│
└── Stage: deploy-master
└── SSH → Vnetwork Server 1, 2, 3, ... (vòng lặp)
├── aws ecr get-login-password | docker login
├── docker pull image:latest
├── git pull (docker-compose.yml)
└── docker compose up -d --force-recreate
1.3. Thông Tin Production API Backend#
Host: 13.213.54.248 (AWS Singapore, ap-southeast-1)
Express Admin Port: 43070
Public URL: https://traffic-apilangtu.club
1.4. Nhánh Git#
Nhánh production: master-v2
Chỉ merge lên master-v2 sau khi đã kiểm thử kỹ trên staging-v2 và release-v2.
2. Giai Đoạn Build — build-master#
2.1. Mục Đích#
Giai đoạn build chạy trên Bastion Build Server — một server chuyên dụng chỉ để build Docker images. Server này có đủ tài nguyên để build nhanh và có kết nối tốt đến AWS ECR.2.2. Cấu Hình Pipeline#
2.3. Các Bước Build#
Bước 1 — Xác thực SSH đến Bastion Build Server:Bước 2 — Đăng nhập AWS ECR:Bước 3 — Cập nhật source code:Bước 4 — Pull image cũ để dùng làm cache:|| true đảm bảo pipeline không fail nếu image chưa tồn tại (lần build đầu tiên).Bước 5 — Build Docker image:Image được push với hai tags:latest: Luôn là image mới nhất, dùng cho deploy thông thường.
$CI_COMMIT_SHORT_SHA: Tag theo commit hash, dùng cho rollback.
2.4. AWS ECR Repository#
Registry: 211125536219.dkr.ecr.ap-southeast-1.amazonaws.com
Repository: traffic/tool-v2-prod
Region: ap-southeast-1 (Singapore)
3. Giai Đoạn Deploy — deploy-vnetwork-master#
3.1. Mục Đích#
Sau khi image được push lên ECR, giai đoạn deploy SSH đến từng server trong cụm Vnetwork và cập nhật container.3.2. Cấu Hình Pipeline#
3.3. Vòng Lặp Deploy Đến Nhiều Server#
VNETWORK_TRAFFIC_PROD_IP là biến GitLab CI/CD chứa danh sách IP của tất cả server Vnetwork, phân cách bằng dấu cách. Ví dụ: "10.0.0.1 10.0.0.2 10.0.0.3".3.4. Cấu Trúc Thư Mục Trên Server Vnetwork#
/home/traffic/project/traffic/
└── tool-v2/ ← Wrapper repo
├── docker-compose.yml ← Dùng image từ ECR
└── .env ← Biến môi trường production
Khác với Staging, thư mục này không có build/tools/ submodule vì không cần source code — chỉ cần docker-compose.yml và .env.Modified at 2026-03-27 02:48:49