Post

AWS cơ bản 3: Xây dựng hạ tầng AWS cơ bản: VPC, Subnet, EC2 và RDS từ A đến Z

AWS cơ bản 3: Xây dựng hạ tầng AWS cơ bản: VPC, Subnet, EC2 và RDS từ A đến Z

Chào mừng các bạn đến với bài viết thứ 3 trong series “AWS cơ bản” ! Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một kiến trúc AWS cơ bản, đặt nền móng vững chắc cho hành trình khám phá điện toán đám mây của bạn. Chúng ta sẽ đi qua VPC, subnet, cách cấu hình public và private subnet, root table, Network ACL (NACL), Security Group, và cuối cùng là thực hành dựng một kiến trúc cơ bản trên AWS với web server và database.


1. VPC là gì?

VPC (Virtual Private Cloud) là một cloud riêng ảo dành riêng cho bạn. Trong một tài khoản AWS, bạn có thể tạo ra nhiều VPC khác nhau, mỗi VPC là một vùng mạng riêng biệt. Hãy tưởng tượng mỗi VPC là một ngôi nhà riêng mà bạn có thể mua. Bên trong ngôi nhà đó, bạn có thể đặt các thành phần ứng dụng của mình (EC2, NAS server, …) và chúng sẽ giao tiếp với nhau trong mạng nội bộ của VPC đó.

Để VPC có thể kết nối ra Internet, bạn cần một Internet Gateway. Tin vui là Internet Gateway hoàn toàn miễn phí trên AWS.

2. Subnet là gì? Public Subnet khác Private Subnet ra sao?

Subnet là các phòng trong ngôi nhà VPC của bạn. Mỗi subnet là một phân vùng mạng nhỏ hơn bên trong VPC. Bạn không thể để giường, tủ, bếp, tivi vào cùng một phòng được, đúng không?

Có hai loại subnet chính: public và private. Về cơ bản, chúng giống nhau. Sự khác biệt nằm ở root table. Subnet nào được cấu hình root table để kết nối ra Internet thông qua Internet Gateway thì được gọi là public subnet. Subnet nào không có root table để đi ra Internet thì là private subnet.

Public subnet thường được dùng để đặt các thành phần ứng dụng cần giao tiếp trực tiếp với Internet (ví dụ: web server). Private subnet thường được dùng để đặt các thành phần nhạy cảm, không cần giao tiếp trực tiếp với Internet (ví dụ: database server).

3. Network ACL (NACL) là gì?

Mỗi subnet có một cái “cửa”, và NACL là bộ quy tắc kiểm soát lưu lượng ra vào cái cửa đó. NACL kiểm soát traffic in và out của subnet, và là “stateless” (không lưu trạng thái). Điều này có nghĩa là bạn cần phải định nghĩa cả rule cho chiều đi vào (inbound) và chiều đi ra (outbound).

Ví dụ: nếu bạn muốn cho phép traffic HTTP (cổng 80) đi vào subnet, bạn cần phải có rule cho phép inbound traffic trên cổng 80, và một rule khác cho phép outbound traffic trên cổng 80.

4. Security Group là gì?

Nếu NACL bảo vệ cả căn phòng (subnet), thì Security Group bảo vệ từng đồ vật trong phòng (EC2 instance). Security Group là một virtual firewall cho EC2 instance.

Security Group là “stateful” (lưu trạng thái). Điều này có nghĩa là nếu bạn đã cho phép traffic đi vào, thì traffic trả về sẽ tự động được cho phép đi ra. Security Group chỉ có rule “allow”, không có rule “deny”.

5. Thực hành: Xây dựng kiến trúc cơ bản trên AWS

Chúng ta sẽ xây dựng kiến trúc sau:

  • VPC: Một VPC duy nhất.
  • Subnet: Một public subnet và hai private subnet.
  • EC2: Một EC2 instance (web server) đặt trong public subnet.
  • RDS: Hai RDS instance (database server) đặt trong hai private subnet khác nhau để tăng tính sẵn sàng (high availability).

Các bước thực hiện:

  1. Tạo VPC:
    • Vào AWS Management Console, chọn VPC.
    • Tạo VPC mới với CIDR block (ví dụ: 10.0.0.0/16).
  2. Tạo Internet Gateway:
    • Tạo Internet Gateway mới.
    • Attach Internet Gateway vào VPC vừa tạo.
  3. Tạo Subnet:
    • Tạo public subnet (ví dụ: 10.0.1.0/24).
    • Tạo hai private subnet (ví dụ: 10.0.2.0/24 và 10.0.3.0/24).
  4. Tạo Root Table:
    • Tạo root table cho public subnet:
      • Thêm rule cho phép traffic đi ra Internet thông qua Internet Gateway.
    • Tạo root table cho private subnet:
      • Chỉ cần rule local để cho phép giao tiếp nội bộ trong VPC.
  5. Gán Root Table vào Subnet:
    • Gán root table public vào public subnet.
    • Gán root table private vào hai private subnet.
  6. Tạo Security Group:
    • Tạo Security Group cho web server:
      • Cho phép inbound traffic: SSH (cổng 22), HTTP (cổng 80) từ mọi địa chỉ IP.
      • Cho phép outbound traffic: Tất cả traffic đi ra.
    • Tạo Security Group cho database server:
      • Cho phép inbound traffic: MySQL (cổng 3306) từ Security Group của web server.
      • Cho phép outbound traffic: Tất cả traffic đi ra.
  7. Tạo EC2 Instance (Web Server):
    • Chọn AMI (Amazon Machine Image) phù hợp (ví dụ: Ubuntu).
    • Chọn instance type (ví dụ: t2.micro - free tier).
    • Chọn VPC và public subnet.
    • Chọn Security Group cho web server.
  8. Tạo RDS Instance (Database Server):
    • Chọn engine (ví dụ: MySQL).
    • Chọn template (ví dụ: Free tier).
    • Đặt username, password.
    • Chọn VPC, subnet group (tạo từ 2 private subnet).
    • Chọn Security Group cho database server.

Kiểm tra kết nối:

  • SSH vào web server.
  • Cài đặt Apache và PHP.
  • Tạo một file PHP để kiểm tra kết nối đến database server.

Kết luận:

Chúc mừng bạn đã xây dựng thành công hạ tầng AWS cơ bản đầu tiên! Đây là nền tảng quan trọng để bạn tiếp tục khám phá các dịch vụ khác của AWS và xây dựng các ứng dụng phức tạp hơn.

This post is licensed under CC BY 4.0 by the author.