[AWS] Chapter 2: AWS EC2
Trong chương này, chúng ta sẽ tìm hiểu Amazon Elastic Compute Cloud (EC2), một trong những dịch vụ cốt lõi của AWS. EC2 cung cấp khả năng tính toán linh hoạt và có thể mở rộng, cho phép bạn dễ dàng triển khai và quản lý các ứng dụng của mình trên đám mây. Chúng ta sẽ tìm hiểu về các khái niệm cơ bản, các loại instance, cách thức hoạt động và các trường hợp sử dụng phổ biến của EC2.
1. Khái niệm cơ bản về EC2
Amazon Elastic Compute Cloud (EC2) là một dịch vụ web cung cấp khả năng tính toán linh hoạt và có thể mở rộng trong đám mây. EC2 cho phép người dùng khởi tạo và quản lý các máy chủ ảo, được gọi là “instances”, với nhiều cấu hình phần cứng và phần mềm khác nhau. EC2 = Elastic Compute Cloud = Cơ sở hạ tầng như một dịch vụ (IaaS)
Các khái niệm chính:
- Instance: Là một máy chủ ảo mà bạn có thể khởi tạo và quản lý trên EC2. Mỗi instance có thể chạy một hệ điều hành và các ứng dụng của bạn.
- AMI (Amazon Machine Image): Là một mẫu chứa thông tin cấu hình (hệ điều hành, ứng dụng, v.v.) để khởi tạo một instance.
- Instance Type: Là các cấu hình phần cứng khác nhau cho instance, bao gồm CPU, RAM, lưu trữ và mạng.
- Key Pair: Là một cặp khóa (public key và private key) được sử dụng để truy cập an toàn vào các instance.
- Security Group: Là một tập hợp các quy tắc tường lửa kiểm soát lưu lượng vào và ra của các instance.
- Elastic IP: Là một địa chỉ IP tĩnh có thể gán cho các instance để duy trì địa chỉ IP cố định ngay cả khi instance bị khởi động lại.
- EBS: Lưu trữ dữ liệu trên ổ đĩa ảo.
- ELB: Phân phối tải giữa các máy chủ ảo (instance) để cân bằng tải.
- ASG: Mở rộng dịch vụ bằng cách sử dụng nhóm tự động mở rộng.
Các lợi ích của EC2:
- Tính linh hoạt: Bạn có thể chọn từ nhiều loại instance khác nhau để phù hợp với nhu cầu tính toán của mình.
- Khả năng mở rộng: Dễ dàng tăng hoặc giảm số lượng instance để đáp ứng nhu cầu thay đổi.
- Chi phí hiệu quả: Chỉ trả tiền cho tài nguyên bạn sử dụng, với nhiều tùy chọn giá cả khác nhau.
- Tính sẵn sàng cao: EC2 cung cấp các tùy chọn triển khai trong nhiều vùng địa lý để đảm bảo tính sẵn sàng và độ tin cậy cao.
2. Các thông số của EC2
Khi triển khai EC2, việc lựa chọn kích thước và cấu hình phù hợp là rất quan trọng để đảm bảo hiệu suất và chi phí hiệu quả. Dưới đây là một số yếu tố cần xem xét:
Các yếu tố cần xem xét:
- Instance Type: Chọn loại instance phù hợp với nhu cầu tính toán, bộ nhớ và lưu trữ của bạn. AWS cung cấp nhiều loại instance khác nhau như t2.micro, m5.large, c5.xlarge, v.v.
- Operating System (OS): Chọn hệ điều hành phù hợp với ứng dụng của bạn, bao gồm Amazon Linux, Ubuntu, Windows Server, v.v.
- CPU: Số lượng vCPU cần thiết cho ứng dụng của bạn.
- RAM: Dung lượng bộ nhớ cần thiết để chạy ứng dụng một cách hiệu quả.
- Storage: Lựa chọn giữa EBS (Elastic Block Store) và Instance Store. EBS cung cấp lưu trữ bền vững, trong khi Instance Store cung cấp lưu trữ tạm thời với hiệu suất cao.
- Network: Băng thông mạng cần thiết cho ứng dụng của bạn.
- Pricing: Lựa chọn giữa các mô hình giá như On-Demand, Reserved Instances, và Spot Instances để tối ưu chi phí.
Cấu hình EC2:
- AMI: Chọn Amazon Machine Image phù hợp với hệ điều hành và phần mềm bạn cần.
- Key Pair: Tạo hoặc chọn một cặp khóa để truy cập an toàn vào instance.
- Security Group: Cấu hình các quy tắc tường lửa để kiểm soát lưu lượng vào và ra của instance.
- IAM Role: Gán IAM Role cho instance để quản lý quyền truy cập vào các dịch vụ AWS khác.
- Bootstrap Script: Sử dụng EC2 User Data để cấu hình và triển khai tự động các instance.
EC2 User Data
EC2 User Data cho phép bạn cung cấp các tập lệnh hoặc dữ liệu khi khởi tạo instance. Điều này rất hữu ích để tự động hóa các tác vụ cấu hình và triển khai. EC2 user data thường được sử dụng để tự động hoá những tác vụ như cài đặt phần mềm, cập nhật hệ thống, cấu hình môi trường làm việc và tất cả những gì mà bạn có thể làm.
Lưu ý: EC2 User Data Script được chạy với quyền root trên instance, vì vậy hãy cẩn thận khi sử dụng.
Cách sử dụng EC2 User Data:
- Shell Script: Bạn có thể cung cấp một shell script để cài đặt phần mềm, cập nhật hệ thống, hoặc thực hiện các tác vụ cấu hình khác.
- Cloud-Init: Sử dụng Cloud-Init để quản lý cấu hình instance trên các hệ điều hành Linux.
Ví dụ về EC2 User Data:
#!/bin/bash
# Cập nhật hệ thống
yum update -y
# Cài đặt Apache Web Server
yum install -y httpd
# Khởi động Apache Web Server
systemctl start httpd
systemctl enable httpd
# Tạo một trang web đơn giản
echo "<html><body><h1>Welcome to EC2 Instance</h1></body></html>" > /var/www/html/index.html
3. Các loại instance EC2
- Bạn có thể sử dụng các loại instance EC2 khác nhau được tối ưu hóa cho các trường hợp sử dụng khác nhau. Tham khảo thêm tại đây
- AWS có quy ước đặt tên như sau:
- m5.2xlarge
- m: instance class
- 5: generation (AWS cải tiến chúng theo thời gian)
- 2xlarge: size within the instance class
- m5.2xlarge
AWS EC2 cung cấp nhiều loại instance khác nhau để phù hợp với các nhu cầu tính toán, bộ nhớ và lưu trữ khác nhau. Dưới đây là một số loại instance phổ biến:
- General Purpose
- Compute Optimized
- Memory Optimized
- Storage Optimized
- Accelerated Computing
- High Performance Computing (HPC)
3.1. General Purpose
Các instance General Purpose cung cấp sự cân bằng giữa tài nguyên tính toán, bộ nhớ và mạng, phù hợp cho nhiều ứng dụng khác nhau.
- T4ag, T3, T3a, T2: Các instance này cung cấp hiệu suất cơ bản với khả năng tăng tốc độ khi cần thiết.
- M7g, M7i, M7i-flex, M7a, Mac, M6g, M6i, M6in, M6a, M5, M5n, M5zn, M5a, M4: Các instance này cung cấp sự cân bằng giữa CPU, bộ nhớ và mạng, phù hợp cho các ứng dụng như máy chủ web và cơ sở dữ liệu nhỏ.
3.2. Compute Optimized
Các instance Compute Optimized được thiết kế cho các ứng dụng yêu cầu hiệu suất tính toán cao. Phù hợp cho các tác vụ tính toán chuyên sâu yêu cầu bộ xử lý hiệu suất cao:
- Khối lượng công việc xử lý hàng loạt
- Chuyển đổi định dạng media
- Máy chủ web hiệu suất cao
- Tính toán hiệu suất cao (HPC)
- Mô hình khoa học & học máy
- Máy chủ trò chơi chuyên dụng
3.3. Memory Optimized
Hiệu suất nhanh cho các khối lượng công việc xử lý các tập dữ liệu lớn trong bộ nhớ.
- Trường hợp sử dụng:
- Cơ sở dữ liệu quan hệ/phi quan hệ hiệu suất cao
- Bộ nhớ đệm quy mô web phân tán
- Cơ sở dữ liệu trong bộ nhớ được tối ưu hóa cho BI (business intelligence)
- Ứng dụng thực hiện xử lý thời gian thực của dữ liệu lớn không có cấu trúc
3.4. Storage Optimized
Phù hợp cho các tác vụ yêu cầu lưu trữ chuyên sâu với khả năng đọc và ghi tuần tự cao vào các tập dữ liệu lớn trên lưu trữ cục bộ.
- Trường hợp sử dụng:
- Hệ thống xử lý giao dịch trực tuyến (OLTP) tần suất cao
- Cơ sở dữ liệu quan hệ & NoSQL
- Bộ nhớ đệm cho cơ sở dữ liệu trong bộ nhớ (ví dụ: Redis)
- Ứng dụng kho dữ liệu
- Hệ thống tệp phân tán
3.5. Accelerated Computing
Các instance Accelerated Computing sử dụng phần cứng chuyên dụng, như GPU và FPGA, để tăng tốc các tác vụ tính toán.
- P2, P3: Các instance này sử dụng GPU để tăng tốc các tác vụ như học sâu và mô phỏng khoa học.
- F1: Các instance này sử dụng FPGA để tăng tốc các tác vụ như phân tích dữ liệu và mã hóa video.
Mỗi loại instance có các đặc điểm và trường hợp sử dụng riêng, vì vậy việc lựa chọn loại instance phù hợp là rất quan trọng để đảm bảo hiệu suất và chi phí hiệu quả cho ứng dụng của bạn.
4. Security Groups
Security Groups là một tập hợp các quy tắc tường lửa kiểm soát lưu lượng vào và ra của các instance EC2. Chúng hoạt động như một lớp bảo mật ảo để bảo vệ các instance của bạn.
Các khái niệm chính:
- Inbound Rules: Các quy tắc kiểm soát lưu lượng vào instance.
- Outbound Rules: Các quy tắc kiểm soát lưu lượng ra từ instance.
- Protocol: Giao thức mạng (ví dụ: TCP, UDP, ICMP).
- Port Range: Phạm vi cổng mà quy tắc áp dụng.
- Source/Destination: Địa chỉ IP hoặc CIDR block mà quy tắc áp dụng.
Cách tạo và cấu hình Security Group:
- Tạo Security Group:
- Đặt tên và mô tả cho Security Group.
- Chọn VPC mà Security Group sẽ được gán vào.
- Thêm Inbound Rules:
- Chọn giao thức (TCP, UDP, ICMP).
- Chọn phạm vi cổng (ví dụ: 22 cho SSH, 80 cho HTTP).
- Chọn nguồn (địa chỉ IP hoặc CIDR block).
- Thêm Outbound Rules:
- Chọn giao thức (TCP, UDP, ICMP).
- Chọn phạm vi cổng.
- Chọn đích (địa chỉ IP hoặc CIDR block).
Ví dụ về cấu hình Security Group:
-
Inbound Rules:
- Cho phép SSH từ bất kỳ địa chỉ IP nào:
- Protocol: TCP
- Port Range: 22
- Source: 0.0.0.0/0
- Cho phép HTTP từ bất kỳ địa chỉ IP nào:
- Protocol: TCP
- Port Range: 80
- Source: 0.0.0.0/0
- Cho phép SSH từ bất kỳ địa chỉ IP nào:
-
Outbound Rules:
- Cho phép tất cả lưu lượng ra:
- Protocol: All
- Port Range: All
- Destination: 0.0.0.0/0
- Cho phép tất cả lưu lượng ra:
Lưu ý:
- Security Groups là stateful, nghĩa là nếu bạn cho phép một kết nối vào, lưu lượng trả về sẽ tự động được cho phép.
- Bạn có thể gán nhiều Security Group cho một instance, và các quy tắc của tất cả các Security Group sẽ được áp dụng.
- Có thể được gán cho nhiều instance
- Bị giới hạn trong một vùng / kết hợp VPC
- Hoạt động “bên ngoài” EC2 – nếu lưu lượng bị chặn, instance EC2 sẽ không thấy nó
- Nên duy trì một security group riêng cho truy cập SSH
- Nếu ứng dụng của bạn không thể truy cập (timeout), thì đó là vấn đề của security group
- Nếu ứng dụng của bạn báo lỗi “connection refused”, thì đó là lỗi của ứng dụng hoặc ứng dụng chưa được khởi chạy
- Tất cả lưu lượng vào đều bị chặn theo mặc định
- Tất cả lưu lượng ra đều được cho phép theo mặc định Security Groups giúp bảo vệ các instance của bạn bằng cách kiểm soát lưu lượng mạng, đảm bảo rằng chỉ có lưu lượng hợp lệ mới được phép truy cập và rời khỏi instance.
Bài Viết Liên Quan
[AWS] Chapter 1: AWS IAM & AWS CLI
I. IAM (Identity and Access Management) IAM là dịch vụ quản lý quyền truy cập của AWS. Nó giúp bạn quản lý người dùng, nhóm người dùng, và quyền truy cập vào tài nguyên của AWS.
Đọc ThêmXây dựng RestAPI theo mô hình Serverless
Xin chào tất cả các bạn, lại là mình đây. Hôm nay mình sẽ chia sẻ một kiến trúc được xây dựng theo mô hình serverless.
Đọc ThêmỨng dụng AWS Rekognition cùng Fipix
Xin chào tất cả các bạn, lại là mình đây. Ngày 26.07 vừa rồi mình rất may mắn khi được sếp của mình và các anh chị em ở Cloud Kinetics Việt Nam tạo điều kiện để tham gia, trình bày trong sự kiện Unlock Your Future with GenAI.
Đọc Thêm