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
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
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
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
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
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
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
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
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
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
# 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
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