Triển khai Blue/Green và Service Scaling với Backend

Tạo ECS Service Backend

Bây giờ, chúng ta cần phải tạo ECS service để chạy các container ở trong đó.

  • Tìm kiếm từ khóa ECS trong AWS Console.
  • Chọn Cluster mình đã tạo.
  • Kéo xuống phần Service và chọn Create.

image

Chúng ta sẽ cấu hình FARGATE để dễ dàng sử dụng hơn.

  • Chọn Launch typeFARGATE.
  • Version chọn LATEST.

image

  • Chọn type là Service.
  • Family chọn Task definition đã tạo cho backend và chọn version mới nhất.
  • Nhập tên: backend

image

  • Chọn type là Replica và chọn 1 task để khởi chạy.
  • Chọn deploy bằng Blue/Green.
  • Chọn cấu hình deploy là CodeDeployDefault.ECSCanary10Percent5Minutes
  • Phần Role chọn role đã tạo ở phần chuẩn bị CodeDeployServiceRole.

image

Service discovery

Phần này quan trọng, để cho Frontend Service và Backend Service thì chúng ta phải cấu hình Service discovery cho Backend Service với namespace và serivce đã tạo trong phần Cloud Map (Đã được cấu hình bằng Terraform).

  • Chọn Use service discovery.
  • Chọn Select an existing namespace, chọn namespace fcjresbar.internal mà chúng ta đã được tạo trước đó.
  • Chọn Select an existing service discovery service, chọn service backend.
  • Các cấu hình còn lại để mặc định.

image

Networking

Giờ thì mình sẽ gán Service này và các container vào trong vùng mạng, subnet mà mình đã tạo sẵn bằng hạ tầng Terraform.

  • VPC: Chọn VPC mà chúng ta đã tạo trước đó
  • Subnet: Chọn private subnet (DoAn-network-subnet-private4) mà chúng ta đã tạo trong phần chuẩn bị
  • Security group: Chọn DoAn-network-sg-private.
  • Public ip: Phần này sẽ tắt để tăng tính bảo mật hơn vì traffic đã được truyền thông qua Load Balancer rồi.

image

Load Balancing

Cấu hình một số thông tin của Load Balancer như sau:

  • Load balancing type: Chọn Application Load Balancer
  • Container: backend 5000:5000 (port ở đây sẽ là port của host và container)
  • Chọn Use an existing load balancer
  • Chọn Doan-alb load balancer
  • Health Check: Giữ mặc định.

image

Phần Listener ta sẽ tạo mới 2 Listener.

  • Production listener: port 5000, protocol HTTP
  • Test listener: port 8080, protocol HTTP

image

Phần của target group sẽ được giữ mặc định hoặc cấu hình theo ý muốn.

image

image

Service auto scaling

Giờ thì mình sẽ cấu hình scaling cho container

  • Minimun: 1
  • Maximun: 2
  • Scaling policy type: Target tracking

image

Cấu hình chính sách cho scaling

  • Name: ScaleAtThreshold75Percent
  • ECS service metric: ECSServiceAverageCPUUtilization
  • Target value: 75
  • Scale-out cooldown period: 120
  • Scale-in cooldown period: 120
  • Và ấn Create để tạo

image

Chúng ta cần phải đợi khoảng 5 phút để cho Service được tạo hoàn tất.

image