Kiến trúc hạ tầng
Mô hình kiến trúc Terraform cho MILU2 Stage Infrastructure
Shared vs Stage
Terraform chia làm 2 config độc lập, mỗi config có state riêng:
| Shared | Stage | |
|---|---|---|
| Phạm vi | Global / account-level | Per-region |
| Resources | S3 (4 bucket), IAM role, CloudFront (2) | VPC, Subnets, ALB, NLB, EC2, ECR, ACM, Route53, CloudWatch |
| State file | shared/terraform.tfstate | terraform.tfstate |
| Cơ chế existing | Có — tự skip nếu đã tồn tại | Auto-import 31 loại resource |
Thông tin
Luồng vận hành: (1) shared chạy trước (1 lần) — tạo tài nguyên global. (2) stage chạy sau (mỗi region/stage_index một lần).
Mô hình mạng (Network Topology)
Sơ đồ tổng quan các thành phần mạng và luồng traffic:
Network Topology (ASCII)
Internet
│
┌─────────┴─────────┐
│ ALB internet-facing│ (443 HTTPS)
└─────────┬─────────┘
│
┌────────────────────┴─────────────────────────┐
│ milu2stage-vpc (172.{34+stage_index}.0.0/16)│
│ ┌──────────────┐ ┌──────────────┐ │
│ │ subnet main │ │ subnet second│ │
│ │ (AZ-1) │ │ (AZ-2) │ │
│ └──────┬───────┘ └──────┬───────┘ │
│ │ ALB internal / NLB │ │
│ │ ASG(API) EC2(Web/DB/Node) │
└─────────┼──────────────────────┼─────────────┘
│ VPC Peering (pcx) │
▼ ▼
milu2-vpc (build, 172.31.0.0/16) — cùng accountCIDR Scheme
Tất cả CIDR (VPC + subnets) được tính tự động từ biến stage_index:
| stage_index | VPC CIDR | Subnet main | Subnet second |
|---|---|---|---|
| 0 | 172.34.0.0/16 | 172.34.0.0/24 | 172.34.1.0/24 |
| 1 | 172.35.0.0/16 | 172.35.0.0/24 | 172.35.1.0/24 |
| 2 | 172.36.0.0/16 | 172.36.0.0/24 | 172.36.1.0/24 |
| ... | ... | ... | ... |
Mẹo
reserved_offsets tự skip các CIDR đã dùng (172.30–33.0.0/16). preflight-check.ps1 tự đề xuất stage_index trống khi VPC Peering được bật.
VPC Peering
Cho phép giao tiếp giữa VPC stage và VPC build:
VPC Peering Configuration
# terraform.tfvars
peer_build_vpc_id = "vpc-xxxxxxxxx" # VPC ID of the build VPC
peer_build_vpc_cidr = "172.31.0.0/16" # CIDR of the build VPC
peer_region = "ap-northeast-1" # Region (leave empty if same region)Security Groups
7 Security Groups theo vai trò:
| Tên | Mục đích |
|---|---|
| milu2stage-VN-trusted-ip-sg | IP văn phòng / tin cậy |
| MILU2stage-sg | SG chung ứng dụng |
| MILU2-stage-node-game-sg | Node game |
| MILU2-stage-node-world-sg | Node world |
| MILU2-stage-node-chat-sg | Node chat |
| MILU2-stage-node-commu-sg | Node commu |
| milu2stage-db | DB / ICMP |