Featured image of post AWS Journey - Triển khai 3-Tier Application trên AWS - Bài 1 - Set up VPC cho Application

AWS Journey - Triển khai 3-Tier Application trên AWS - Bài 1 - Set up VPC cho Application

Nhằm theo kịp xu hướng Cloud First Journey của NAB và thế giới, mình xin phép chia sẻ chuỗi series để set up một ứng dụng 3-Tier trên AWS từ những bước cơ bản nhất. Trong bài này, chúng ta sẽ tìm hiểu về cách thiết lập VPC , bước nền tảng quan trọng trong config tất cả AWS Resource.

Tổng quan về AWS VPC

Amazon VPC là thành phần đầu tiên cho mọi thệ thống trên AWS, cho phép bạn tạo một môi trường mạng an toàn, isolated trong AWS. Sự cô lập này đảm bảo rằng các tài nguyên ứng dụng có thể tương tác với nhau một cách bảo mật, đồng thời cho phép các thành phần cụ thể có thể truy cập từ internet.

Trong phần này, chúng ta sẽ thiết lập:

6 Subnet: Hai subnet public, hai subnet private cho ECS resource, và hai subnet private cho lớp data layer (AWS RDS).
Internet Gateway (IGW): Cổng để kết nối internet.
NAT Gateway: Cho phép các subnet private truy cập internet.
Route Tables: Điều khiển luồng đi của traffic trong các subnet
Security Groups: Quản lý quyền truy cập cho từng resource

Các bạn hãy thử hình dung chúng ta sẽ tạo 1 VPC với config và các resource như hình dưới đây:

Cấu hình VPC mà chúng ta sẽ tạo

Đầu tiên chúng ta sẽ tạo 1 VPC với CIDR: 10.0.0.0/16

Sau đó sẽ có 1 Internet Gateway để giúp VPC có thể giao tiếp với internet bên ngoài, tiếp theo là 2 public subnet với CIDR: 10.0.1.0/24 và 10.0.2.0/24 2 subnet này để giúp chung ta giao tiếp với thế giới bên ngoài, nhận request và routing với các private subnet bên trong.
Sau đó sẽ có 2 subnet private với CIDR: 10.0.3.0/24 và 10.0.4.0/24 dành riêng để host ECS cluster resource của chúng ta ở 2 subnet này. Chỉ nhận traffic trong VPC

Cuối cùng, tạo 2 subnet private với CIDR: 10.0.5.0/24 và 10.0.6.0/24 cho Data layer, chỉ nhận traffic từ ECS resource.

Chúng ta cũng phải config thêm một số resource khác(NAT Gateway, Route table, SG…) để toàn bộ hệ thống có thể giao tiếp với nhau hiệu quả, mình sẽ trình bày ở phần sau của bài viết

Bây giờ hãy bắt tay vào phần khởi tạo VPC trên AWS Console

Khởi tạo VPC trên AWS Console

Sau khi đăng nhập vào tài khoản AWS của các bạn, Chọn region mà các bạn muốn tạo(với mình là tokyo - ap-northeast-1) Vào VPC Dashboard trong AWS Console. Bắt đầu từ bây giờ các bạn có thể khởi tạo VPC theo template có sẵn của AWS - Khá tiện dụng để chúng ta không cần phải tạo các resource cho VPC manually trước kia nữa.

Chọn Create VPC and more Tại đây AWS đã config sẵn cho bạn tất cả các resource từ Subnet, Route table và IGW. Các bạn tinh chỉnh cấu hình như mình sau đó ấn Create VPC là xong kha khá bước rồi:

Cấu hình VPC mà chúng ta sẽ tạo

Cấu hình VPC mà chúng ta sẽ tạo

Ấn Create VPC và đợi AWS tạo tất tần tật mọi thứ

Các resource như Subnet, Route table và IGW sẽ được khởi tạo và attach đúng như sơ đồ mà AWS đang show cho chúng ta, khá tiện dụng phải không nào?

** Lưu ý: để giúp các bạn hiểu rõ hơn về NAT gateway nên mình sẽ không khởi tạo NAT Gateway cùng với template mà sẽ khởi tạo sau và config vào đúng route table mà chúng ta muốn.

Sau khi tạo xong các bạn vào lại VPC mới vừa tạo kiểm tra lại xem các resource đã được khởi tạo đúng chưa:

6 Subnet được tạo

5 route table được tạo

Các bạn lưu ý là mặc định VPC sẽ có 1 route table cho mỗi Subnet để có thể giao tiếp ở trong VPC được, chúng ta tạm thời chưa cần quan tâm đến route table default nhé.

1 PUBLIC Route table sẽ associate với 2 PUBLIC subnet của chúng ta với CIDR: 10.0.1.0/24 và 10.0.2.0/24 Và mỗi route table sẽ associate với 1 PRIVATE Subnet, tuy nhiên để simplyfi lại thì các bạn có thể config 1 route table associate với 2 private subnet cho ECS. Còn private subnet cho Data layer thì không cần thì vì Data Layer thường sẽ không cần config để nói chuyện với bên ngoài. Sau khi associate lại và delele các route table dư thừa thì chúng ta sẽ còn 2 route table như sau( Không tính route table mặc định của VPC):

2 route table tương ứng cho PUBLIC và PRIVATE subnet

Bây giờ chúng ta cần tạo 1 NAT GATEWAY để các private subnet có thể truy cập outbound resource(Docker, data, images…) và đồng thời ngăn chúng bị truy cập ngược lại từ bên ngoài nhé:

  • Vào NAT Gateway sao đó chọn Create NAT gateway:
  • Chọn một private subnet để khởi tạo NAT gateway within it
  • Cấp một Elastic IP để có địa chỉ IP cố định. Chọn Create NAT gateway

Tạo NAT Gateway cho private subnet

Sau đó, chúng ta config NAT gateway vào route table tương ứng với các private subnet để nó có thể truy cập các resource từ bên ngoài:

Config route cho private subnet trỏ vào NAT gateway

Bây giờ các subnet của chúng ta đã khá hoàn chỉnh theo như kiến trúc hình đầu tiên mà mình vẽ ở phía trên rồi. Chúng ta sẽ cần tạo 2 Security Group cho các public và private resource nữa là done phần config cho VPC rồi nhé:

Chúng ta sẽ khỏi tạo SG cho Public resource trước- Vào Security Group chọn Create Security Group:

Chọn VPC mà chúng ta đang config, Phần Inbound Rules chúng ta sẽ config để allow HTTP traffic from anywhere, và thêm 1 Inbound rule custom TCP với port 8080 để sau cần này host cho các service của chúng ta

Public security group

Tiếp theo là private SG cho các private resource - ECS service:

Chọn VPC mà chúng ta đang config, Phần Inbound Rules chúng ta sẽ config để allow all traffic từ public SG mà chúng ta vừa tạo, thế là done khởi tạo cho private SG

Private security group

DONE! Vậy là chúng ta vừa config xong tất cả các resource cần thiết cho VPC để có thể triển khai 3-Tier Application của chúng ta trên đó rồi. Nếu có chỗ nào chưa hiểu các bạn có thể ping mình qua email, facebook để có thể trao đổi chi tiết hơn nhé!

Tổng kết

Trong bài viết đầu tiên này, chúng ta đã hoàn thành việc thiết lập VPC, bao gồm cấu hình các subnet public và private, NAT Gateway, route tables và security groups trên AWS. Với hệ thống mạng bảo mật và ổn định này, chúng ta đã đảm bảo khả năng kết nối linh hoạt giữa các resource và tăng tính bảo mật cho hệ thống.

Bài tiếp theo sẽ hướng dẫn chi tiết từng bước để tạo ECS Cluster trên AWS, định nghĩa ECS tasks và thiết lập task definitions – các cấu hình giúp quản lý và vận hành các container dễ dàng hơn với ECS.

Hy vọng mọi người có thể ủng hộ và feedback để series được hoàn thiện hơn!

HAPPY CODING!

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy