Amazon ECS - Dịch Vụ Quản Lý Containers Trên AWS
Kiểu Khởi Chạy EC2 (EC2 Launch Type)
Khi bạn khởi chạy Docker container trên AWS, điều này đồng nghĩa với việc bạn đang khởi chạy ECS tasks trên ECS cluster. Với kiểu khởi chạy EC2, bạn cần cung cấp và quản lý cơ sở hạ tầng của mình. Mỗi EC2 instance cần chạy một ECS agent để đăng ký với ECS cluster.
Kiểu Khởi Chạy Fargate (Fargate Launch Type)
Với kiểu khởi chạy Fargate, bạn không cần phải tự cung cấp và quản lý cơ sở hạ tầng. Đây là một giải pháp serverless, nơi ECS sẽ tự động chạy các ECS tasks dựa trên yêu cầu về CPU và RAM của bạn. Để mở rộng quy mô, bạn chỉ cần tăng số lượng tasks.
IAM Role cho ECS
EC2 Instance Profile (chỉ dành cho EC2 Launch Type)
EC2 Instance Profile được sử dụng bởi ECS Agent, cho phép tạo API calls đến ECS, gửi log của containers đến CloudWatch, kéo ảnh container từ ECR, và tham chiếu đến thông tin trong Secret Manager hoặc Parameter Store.
ECS Task Role
Mỗi task trong ECS có thể có một role riêng, giúp cho từng task có thể thực hiện những công việc khác nhau. Task role này được định nghĩa trong Task Definition.
Bộ Cân Bằng Tải (Load Balancer)
Amazon Elastic Load Balancing (ALB) được hỗ trợ và có thể sử dụng trong hầu hết các tình huống. Network Load Balancer (NLB) được đề xuất cho các trường hợp cần tốc độ throughput cao và hiệu suất tốt. Classic Load Balancer cũng được hỗ trợ nhưng không được khuyến khích sử dụng.
Volume Dữ Liệu (Data Volume)
EFS (Elastic File System) có thể làm việc với cả EC2 Launch Type và Fargate Launch Type. Các tasks chạy trên nhiều Availability Zone (AZ) có thể chia sẻ dữ liệu với nhau. Sự kết hợp giữa Fargate và EFS tạo ra một giải pháp serverless hoàn chỉnh. Lưu ý rằng S3 không thể được sử dụng như một hệ thống lưu trữ dữ liệu mount.
Tự Động Mở Rộng (Auto Scaling)
Bạn có thể tự động điều chỉnh số lượng các ECS tasks thông qua Application Auto Scaling. Có ba loại metric có thể được sử dụng để tự động mở rộng:
- Độ sử dụng CPU trung bình của dịch vụ ECS
- Độ sử dụng bộ nhớ trung bình của dịch vụ ECS
- Số lượng yêu cầu từ ALB cho mỗi mục tiêu
Các kiểu mở rộng:
- Target Tracking: mở rộng dựa trên một metric cụ thể trong CloudWatch
- Step Scaling: mở rộng dựa trên một CloudWatch Alarm cụ thể
- Scheduled Scaling: mở rộng dựa trên thời gian cụ thể
Kiến Trúc Giải Pháp ECS
ECS Tasks được kích hoạt bởi EventBridge
ECS Tasks được kích hoạt theo lịch trình từ EventBridge
ECS và SQS
Gửi thông báo về sự thay đổi trạng thái của task
Amazon EKS - Dịch Vụ Quản Lý Kubernetes trên AWS
Amazon EKS là dịch vụ cho phép chạy containers Kubernetes được quản lý bởi AWS. Dịch vụ này tương tự như ECS với cùng mục tiêu nhưng khác API. EKS hỗ trợ hai chế độ khởi chạy: EC2 instance launch mode và Fargate launch mode. Trong đó, EKS pods tương đương với ECS tasks, và EKS Nodes tương đương với ECS services. Với AWS Fargate, bạn không cần phải quản lý bất kỳ node nào.
Loại Node (Node Types):
- Managed Node Groups: AWS sẽ tự động tạo và quản lý nodes cho người dùng. Các node này là một phần của Auto Scaling Group (ASG) và chỉ hỗ trợ on-demand hoặc spot instances.
- Self Manage Nodes: Các node được tạo bởi người dùng và đăng ký vào EKS để quản lý bởi ASG. Loại node này hỗ trợ on-demand hoặc spot instances.
Volume Dữ Liệu trong EKS
Để sử dụng volume cho dữ liệu, bạn cần định nghĩa StorageClass manifest trên EKS cluster. Kết hợp với các driver tuân thủ Container Storage Interface. EKS hỗ trợ các loại volume như EBS, EFS (được sử dụng cho Fargate), FSx for Lustre và FSx for NetApp ONTAP.
source: viblo