Khởi tạo Application Load Balancer
Trước khi khởi tạo Load Balancer chúng ta cần tạo một targer group(TG) để Load balancer có thể load traffic tới target group đó - đại khái thì TG sẽ là 1 “người giao liên” để forward traffic từ ALB tới service bên trong ECS của chúng ta. Các bạn vào EC2 -> Target group -> Create Target Group và điền các thông tin như hình bên dưới, chọn VPC mà chúng ta đã tạo ở bài 1:
Sau khi tạo xong các bạn vào mục EC2 -> Load Balancer -> Create Load Balancer và chọn Application Load Balancer, chọn VPC của chúng ta, các bạn nhớ là đặt ALB ở trong public subnet và public Security Group vì chúng ta sẽ public ALB ra bên ngoài để cho end user call được:
Sau khi khởi tạo chúng ta sẽ nhìn thấy dashboard của ALB như hình bên dưới:
Bây giờ chúng ta sẽ thử tạo mới một ECS Service nhưng lần này sẽ config Service nằm trong private subnet chứ không phải là public subnet giống như bài trước nữa.
Trước tiên để service return về các infor rõ ràng hơn các bạn có thể cập nhật service code của các bạn response theo format sau:
Sau đó push image lên ECR giống như ở bài trước
Các bạn quay về trang ECS -> Create new Service và điền các thông tin như lúc trước, riêng phần networking các bạn nhớ đặt service ở trong private subnet và private SG nhé vì bây giờ chúng ta đã có ALB để handle việc nhận request rồi, public IP cũng không cần luôn:
Config xong thì Create Service thôi, các bạn đợi một chút để AWS provisioning các ECS task cho service
Sau khi AWS provisoning xong thì các bạn sẽ được ECS service với 2 task như thế này:
Quay lại ALB copy phần DNS name paste vào browser là các bạn đã có thể truy cập vào ECS task từ ALB được rồi, ở đầy vì mình config 2 task nên ALB sẽ forward traffice ngẫu nhiên đến 1 trong 2 task nhé:
Các bạn có thể phân biệt các ECS task khác nhau dựa vào containerId và container name response về ở trên nhé.
Vì là domain free của AWS nên url sẽ hơi xấu 1 xíu và không hỗ trợ HTTPS nhé. Nếu các bạn muốn url đẹp và hỗ trợ HTTPS các bạn có thể register new domain với AWS thông qua Route 53 service và request certificate cho sub domain vừa tạo sử dụng AWS Certificate Manager nha. Chi tiết mình sẽ để link refer ở đây:
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html https://medium.com/@sonynwoye/creating-ssl-certificates-using-aws-certificate-manager-acm-1c359e70ce4ds
Sau khi config custom domain và request certificate xong các bạn chỉ cần vào Route 53 -> Tạo 1 A record và alias tới ALB mà chúng ta đã khởi tạo,
Sau đó vào ALB thêm 1 listener với port 443 hỗ trợ HTTPS và sử dụng certificate là có thể sử dụng ALB với custom domain và HTTPS như thông thường rồi.
Vì phần này phải tạo custom domain tốn chi phí khá nhiều nên mình sẽ không tạo trong series này, nếu có gì thắc mắc các bạn có thể ping mình để giao lưu nhé!
Thế là chúng ta đã khởi tạo xong ALB cho ECS Service rồi, bài tiếp theo các bạn chỉ cần config Database và connect Database với ECS Service nữa là đã DONE được mô hình 3-Tier APP trên AWS rồi. Quá xịn sò phải không nào?? hehe
HAPPY CODING!