+1

MỐI LIÊN HỆ GIỮA ALB – ECS – EC2 TARGET GROUP

🔁 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.

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

  1. Client gọi https://yourdomain.com/api/v1/users
  2. ALB nhận request tại Listener HTTPS:443
  3. Rule match /api/* → forward đến tg-api
  4. tg-api đang chứa các target là ECS task đang chạy container api-service
  5. ALB chọn 1 task (theo Round Robin hoặc Least Outstanding Request)
  6. 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ặc Host-based routing để scale dễ dàng.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.