0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Triển Khai Hệ Thống Amazon ECS Bằng AWS CLI (Phần 2): Tạo RDS, Secrets Manager và Cấu Hình Load Balancer

Đăng vào 3 tuần trước

• 4 phút đọc

Triển Khai Hệ Thống AWS ECS Với AWS CLI (Phần 2)

Giới Thiệu Chung

Trong phần này, chúng ta sẽ tiếp tục tìm hiểu cách thiết lập Dịch vụ Cơ sở dữ liệu Quan hệ (RDS) và sử dụng AWS Secrets Manager để lưu trữ thông tin bảo mật, đồng thời cấu hình Application Load Balancer để đảm bảo việc truy cập ứng dụng diễn ra mượt mà.

Tạo RDS (Dịch Vụ Cơ Sở Dữ Liệu Quan Hệ)

Amazon RDS là dịch vụ giúp bạn dễ dàng thiết lập, vận hành và quy mô hóa cơ sở dữ liệu trên đám mây. Hãy làm theo quy trình sau để triển khai RDS:

Bước 1: Tạo RDS Subnet Group

bash Copy
rds_subnet_group_name=$project-subnet-group
rds_subnet_group_descript="Subnet Group for Postgres RDS"
rds_subnet1_id=$subnet_private_1
rds_subnet2_id=$subnet_private_2

aws rds create-db-subnet-group \
    --db-subnet-group-name $rds_subnet_group_name \
    --db-subnet-group-description "$rds_subnet_group_descript" \
    --subnet-ids $rds_subnet1_id $rds_subnet2_id \
    --tags "$tags"

Bước 2: Triển Khai RDS Instance

bash Copy
rds_name=$project-rds
rds_db_name="workshop"
rds_db_username="postgres"
rds_db_password="postgres"

aws rds create-db-instance \
    --db-instance-identifier $rds_name \
    --engine postgres \
    --db-name $rds_db_name \
    --db-instance-class db.t3.micro \
    --allocated-storage 20 \
    --master-username $rds_db_username \
    --master-user-password $rds_db_password \
    --storage-type gp2 \
    --no-enable-performance-insights \
    --availability-zone $az_01 \
    --db-subnet-group-name $rds_subnet_group_name \
    --vpc-security-group-ids $rds_sgr_id \
    --backup-retention-period 0 \
    --tags "$tags"

Sau khi tạo RDS, hãy đợi cho đến khi instance RDS trở thành dữ liệu khả dụng:

bash Copy
aws rds wait db-instance-available \
    --db-instance-identifier $rds_name

Tạo AWS Secrets Manager

AWS Secrets Manager cho phép bạn lưu trữ và quản lý thông tin đăng nhập an toàn hơn cho các cơ sở dữ liệu và dịch vụ khác.

Bước 1: Tạo Secret

bash Copy
secret_name=$project-sm
secret_string=$(echo '{"POSTGRES_HOST":"'$rds_address'","POSTGRES_PORT":"5432","POSTGRES_DB":"'$rds_db_name'","POSTGRES_USERNAME":"'$rds_db_username'","POSTGRES_PASSWORD":"'$rds_db_password'"}')

aws secretsmanager create-secret \
    --name $secret_name \
    --description "To save database information" \
    --tags "$tags" \
    --secret-string $secret_string

Cấu Hình Application Load Balancer

Application Load Balancer (ALB) cho phép các yêu cầu HTTP được chuyển tiếp tới các dịch vụ backend.

Bước 1: Tạo ALB

bash Copy
alb_name=$project-alb
alb_subnet1_id=$subnet_public_1
alb_subnet2_id=$subnet_public_2

alb_arn=$(aws elbv2 create-load-balancer \
    --name $alb_name  \
    --subnets $alb_subnet1_id $alb_subnet2_id \
    --security-groups $alb_sgr_id \
    --tags "$tags" \
    --query 'LoadBalancers[0].LoadBalancerArn' \
    --output text)

Bước 2: Tạo Target Group

bash Copy
alb_tgr_name=$project-tgr
alb_vpc_id=$vpc_id

alb_tgr_arn=$(aws elbv2 create-target-group \
    --name $alb_tgr_name \
    --protocol HTTP \
    --target-type ip \
    --health-check-path "/api/product" \
    --port 8080 \
    --vpc-id $alb_vpc_id \
    --tags "$tags" \
    --query 'TargetGroups[0].TargetGroupArn' \
    --output text)

Bước 3: Tạo Listener

bash Copy
alb_listener_arn=$(aws elbv2 create-listener \
    --load-balancer-arn $alb_arn \
    --protocol HTTP \
    --port 80 \
    --default-actions Type=forward,TargetGroupArn=$alb_tgr_arn \
    --query 'Listeners[0].ListenerArn' \
    --output text)

Tạo Elastic Container Service (ECS)

Dịch vụ ECS sẽ quản lý và chạy container của chúng ta. Chúng ta sẽ tạo một
ECS Cluster và tổ chức việc chạy các tasks và services.

Bước 1: Tạo ECS Cluster

bash Copy
ecs_cluster_name=$project-cluster

aws ecs create-cluster \
    --cluster-name $ecs_cluster_name \
    --region $region \
    --tags "$tags2"

Bước 2: Tạo ECS Capacity Provider

bash Copy
ecs_capacity_provider=$project-capacity-provider

aws ecs create-capacity-provider \
    --name $ecs_capacity_provider \
    --auto-scaling-group-provider `echo 'autoScalingGroupArn='$ecs_ec2_autoscaling_arn',managedScaling={status=ENABLED,targetCapacity=100},managedTerminationProtection=DISABLED'` \
    --tags $tags2

Tạo ECS Task Definition và Service

Bước 1: Tạo Task Definition

bash Copy
# Thông tin về Task Definition
ecs_task_name=$project-task
ecs_task_role_arn=$(aws iam create-role ...) # Cấu hình IAM Role cho Task

aws ecs register-task-definition \
    --family $ecs_task_name \
    --network-mode awsvpc \
    --requires-compatibilities EC2 \
    --cpu "512" \
    --memory "1024" \
    --execution-role-arn "$ecs_task_role_arn" \
    --container-definitions '...'

Bước 2: Tạo ECS Service

bash Copy
ecs_service_name=$project-service

aws ecs create-service \
   --cluster $ecs_cluster_name \
   --service-name $ecs_service_name \
   --task-definition $ecs_task_arn \
   --desired-count 1 \
   --network-configuration "awsvpcConfiguration={subnets=[$ecs_instance_subnet_id],securityGroups=[$ecs_instance_sgr_id]}"

Kiểm Tra Kết Quả

Sau khi hoàn tất triển khai, bạn có thể sử dụng các lệnh để kiểm tra trạng thái và hoạt động của RDS, ALB và ECS Service.

Dọn Dẹp Môi Trường

Khi bạn hoàn thành thử nghiệm hoặc phát triển, hãy nhớ dọn dẹp các tài nguyên đã tạo để tránh chi phí không cần thiết, bằng cách sử dụng các lệnh AWS CLI để xóa từng thành phần.

Kết Luận

Qua bài hướng dẫn này, bạn đã nắm rõ quy trình triển khai hệ thống ECS, RDS, Secrets Manager và Load Balancer trên AWS. Hy vọng nội dung cung cấp sẽ giúp ích cho bạn trong việc thiết lập môi trường làm việc hiệu quả. Nếu có bất kỳ câu hỏi hay đóng góp nào, hãy để lại ý kiến của bạn dưới đây.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào