🔁 MỐI LIÊN HỆ GIỮA ALB – ECS – EC2 TARGET GROUP
1. ALB (Application Load Balancer)
-
Nhận request HTTP/HTTPS từ client.
-
Có các Listener (ví dụ: HTTP trên port 80, HTTPS trên port 443).
-
Mỗi Listener có thể có Rule để điều hướng request dựa vào:
- Path (e.g.,
/api/*
) - Host (e.g.,
api.example.com
) - Header, query string, v.v.
- Path (e.g.,
2. Target Group
-
Mỗi rule của ALB sẽ điều hướng đến một Target Group.
-
Target Group chứa danh sách các Target, có thể là:
- IP address
- EC2 instance
- ECS container (Fargate hoặc EC2 launch type)
3. ECS Service
- Một ECS Service (trong ECS cluster) sẽ được cấu hình để register các task của nó vào một Target Group.
- Mỗi task chạy container sẽ trở thành 1 target.
🧩 SƠ ĐỒ QUAN HỆ
Client ↓
ALB (Listener: 443) └── Rule 1: path /api → Target Group A └── ECS Service A (cluster 1234) └── Task 1, Task 2 (containers) └── Rule 2: path /admin → Target Group B └── ECS Service B (cluster 1234) └── Task 3, Task 4 (containers)
📌 VÍ DỤ CẤU HÌNH
Giả sử bạn có ECS Cluster "cluster-1234" và 2 service:
api-service
xử lý/api/*
admin-service
xử lý/admin/*
Bước 1: Tạo 2 Target Groups
tg-api
– port 8080 (ví dụ container port)tg-admin
– port 8000
Bước 2: Tạo ALB + Listener
- ALB:
my-alb
- Listener: HTTPS 443
Bước 3: Cấu hình Listener Rule
# Rule 1
IF path is /api/* THEN forward to tg-api # Rule 2
IF path is /admin/* THEN forward to tg-admin
Bước 4: Tạo ECS Services
api-service
dùng task definition có container listen on port 8080.- ECS service sẽ đăng ký mỗi task của nó vào
tg-api
.
"loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:...:targetgroup/tg-api", "containerName": "api-container", "containerPort": 8080 }
]
Tương tự với admin-service
.
🚀 LUỒNG XỬ LÝ KHI CÓ REQUEST
- Client gọi
https://yourdomain.com/api/v1/users
- ALB nhận request tại Listener HTTPS:443
- Rule match
/api/*
→ forward đếntg-api
tg-api
đang chứa các target là ECS task đang chạy containerapi-service
- ALB chọn 1 task (theo Round Robin hoặc Least Outstanding Request)
- Forward request đến container đang listen port 8080
✅ GỢI Ý
- Mỗi ECS Service tương ứng 1 Target Group là cách phổ biến và dễ quản lý.
- Có thể gom nhiều service vào cùng target group nếu dùng chung container port & xử lý routing trong app.
- Dùng
Path-based
hoặcHost-based
routing để scale dễ dàng.