AWS EC2 Toàn Tập: Máy Chủ Ảo Đám Mây Hoạt Động Như Thế Nào?
Danh Mục Bài Viết
- 1. EC2 là gì? Tại sao không chỉ là "thuê VPS"
- 2. Bên trong EC2: Kiến trúc Hypervisor và Instance
- 3. Instance Types: Chọn đúng "kích cỡ" cho bài toán của bạn
- 4. AMI (Amazon Machine Image): "Bản sao" hệ điều hành của bạn
- 5. Hướng dẫn: Tạo và kết nối EC2 Instance thực tế
- 6. Pricing Model: Tránh sốc hóa đơn cuối tháng
- 7. FAQ — Những câu hỏi thực tế
- 8. Nắm EC2 là nắm nền tảng của AWS
Hồi mới học AWS, mình cứ tưởng EC2 chỉ là "thuê VPS đắt hơn". Cho đến khi production server bị sập lúc 2 giờ sáng và mình cần scale gấp từ 1 lên 10 máy chủ trong 5 phút — lúc đó mới hiểu tại sao cả thế giới dùng EC2. Nếu bạn đang xây dựng bất kỳ thứ gì cần chạy trên internet, EC2 là thứ bạn cần hiểu thấu đáo.
EC2 là gì? Tại sao không chỉ là "thuê VPS"
AWS EC2 (Elastic Compute Cloud) là dịch vụ cung cấp máy chủ ảo (Instance) trên hạ tầng đám mây của Amazon. Nếu VPS truyền thống giống như thuê phòng trong căn hộ cố định, thì EC2 giống như đặt phòng khách sạn — bạn thuê đúng cỡ phòng cần, check-out khi xong, không bị ràng buộc hợp đồng dài hạn.
Điểm khác biệt cốt lõi: EC2 là Elastic. Bạn có thể tăng từ 1 lên 100 Instance trong vài phút khi có sự kiện lớn, rồi thu về 1 Instance sau khi traffic giảm. Một startup như Airbnb đã từng scale từ vài chục lên hàng nghìn server trong đúng dịp lễ Thanksgiving — không có hạ tầng vật lý nào làm được điều đó.
Năm 2024, AWS EC2 chiếm khoảng 31% thị phần cloud infrastructure toàn cầu. Đơn giản vì không có đối thủ nào sánh kịp về độ đa dạng Instance type (700+ loại), độ phủ Region (33 regions), và hệ sinh thái tích hợp.
Bên trong EC2: Kiến trúc Hypervisor và Instance
Một máy chủ vật lý của AWS (host machine) được chia thành nhiều Instance ảo thông qua công nghệ Hypervisor. AWS dùng Nitro Hypervisor — một lớp ảo hóa cực kỳ nhẹ, gần như không có overhead. Điều này giúp một EC2 Instance có hiệu năng xấp xỉ bare-metal server.
Mỗi Instance có đầy đủ: CPU ảo (vCPU), RAM, storage (EBS hoặc Instance Store), card mạng ảo (ENI), và địa chỉ IP. Khi bạn "start" một Instance, AWS thực chất là cấp phát tài nguyên từ pool máy chủ vật lý và boot OS cho bạn trong vài giây.
Instance Types: Chọn đúng "kích cỡ" cho bài toán của bạn
AWS chia EC2 thành các họ Instance theo mục đích sử dụng:
- General Purpose (t3, t4g, m6i): Cân bằng CPU/RAM, phù hợp web server, app server, môi trường dev.
t3.micronằm trong Free Tier — điểm khởi đầu hoàn hảo. - Compute Optimized (c6i, c7g): CPU mạnh, RAM vừa phải. Dùng cho batch processing, game server, encoding video. Tỷ lệ vCPU:RAM cao hơn.
- Memory Optimized (r6i, x2idn): RAM cực lớn (đến 24TB). Dùng cho database in-memory như Redis ở scale lớn, SAP HANA, data analytics.
- Storage Optimized (i4i, d3en): NVMe SSD tốc độ cao, IOPS khủng. Dùng cho data warehouse, Elasticsearch, Cassandra.
- Accelerated Computing (p4, g5, inf2): GPU/TPU. Dùng cho ML training, inference AI, đồ họa 3D render.
Naming convention của AWS: m6i.2xlarge — m = family (general purpose), 6 = generation (thế hệ 6), i = processor variant (Intel), 2xlarge = size (8 vCPU, 32GB RAM).
Mẹo thực chiến: Bắt đầu với
t3.smallhoặct3.mediumcho hầu hết web app. Sau khi có metrics thực tế từ CloudWatch (CPU%, Memory%), mới quyết định upgrade. Đừng over-provision từ đầu — tiền cháy rất nhanh.
AMI (Amazon Machine Image): "Bản sao" hệ điều hành của bạn
AMI là template chứa OS, cấu hình, và (tùy chọn) các ứng dụng đã cài sẵn. Khi launch Instance, bạn chọn AMI làm điểm khởi đầu. AWS cung cấp AMI chính thức cho Amazon Linux 2, Ubuntu 22.04, Windows Server, RHEL... Ngoài ra còn có AMI từ AWS Marketplace (đã cài sẵn WordPress, LAMP stack, v.v.) và AMI tự tạo (Golden Image) của bạn.
Custom AMI cực kỳ hữu ích khi bạn cần scale nhanh: thay vì mỗi lần tạo Instance mới phải chạy lại script cài đặt 30 phút, bạn đóng gói sẵn môi trường vào AMI, launch Instance mới chỉ mất 90 giây và đã ready to serve traffic.
Hướng dẫn: Tạo và kết nối EC2 Instance thực tế
Dưới đây là luồng đầy đủ để tạo một EC2 Ubuntu Server và SSH vào:
Bước 1 — Launch Instance qua Console:
- Vào EC2 → "Launch Instance" → Đặt tên (ví dụ:
my-web-server) - Chọn AMI: Ubuntu Server 22.04 LTS (Free Tier eligible)
- Instance type: t2.micro (Free Tier) hoặc t3.small
- Key pair: Tạo mới → Đặt tên → Download file
.pem(lưu kỹ, mất là mất luôn) - Security Group: Cho phép SSH (port 22) từ IP của bạn, HTTP (80), HTTPS (443)
- Storage: 20GB gp3 (nhanh hơn gp2, giá tương đương)
Bước 2 — Kết nối SSH:
# Phân quyền file .pem (bắt buộc, không làm SSH sẽ báo lỗi)
chmod 400 my-key.pem
# SSH vào Instance (thay PUBLIC_IP bằng IP thực)
ssh -i my-key.pem ubuntu@PUBLIC_IP
# Kiểm tra kết nối
uname -a
Bước 3 — Cài Nginx test:
sudo apt update && sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Sau đó truy cập http://PUBLIC_IP trên browser — nếu thấy trang Nginx welcome là thành công.
Ổ gà hay gặp: Security Group không mở port 80 → browser timeout. Kiểm tra Inbound Rules trong EC2 Console trước khi debug code.
Pricing Model: Tránh sốc hóa đơn cuối tháng
EC2 có 4 pricing model chính, chọn sai là mất tiền vô lý:
- On-Demand: Trả theo giờ, không cam kết. Linh hoạt nhất nhưng đắt nhất (~$0.0104/giờ cho t3.micro ở us-east-1). Dùng cho dev/test, workload không đoán được.
- Reserved Instances (RI): Cam kết 1-3 năm, tiết kiệm 30-72% so với On-Demand. Dùng cho production workload ổn định dài hạn.
- Savings Plans: Cam kết chi tiêu theo giờ (VD: $0.05/giờ), linh hoạt hơn RI, tiết kiệm tương đương. AWS khuyến nghị dùng thay RI.
- Spot Instances: Dùng capacity dư của AWS, giá rẻ hơn 70-90% nhưng có thể bị terminate bất cứ lúc nào (2 phút cảnh báo). Phù hợp batch job, ML training, CI/CD pipeline.
FAQ — Những câu hỏi thực tế
Q: Nên dùng EC2 hay Elastic Beanstalk/ECS cho ứng dụng web?A: EC2 cho bạn toàn quyền kiểm soát OS và cấu hình — phù hợp khi bạn cần customize sâu hoặc chạy software đặc thù. Elastic Beanstalk (PaaS) và ECS/EKS (container) trừu tượng hóa hạ tầng, phù hợp khi team muốn focus vào code hơn là ops. Với team nhỏ mới bắt đầu, Beanstalk hoặc ECS thường nhanh hơn.
Q: EC2 có bị tính tiền khi Stop (không phải Terminate)?A: Khi Stop Instance, bạn không bị tính tiền compute, nhưng vẫn bị tính tiền EBS volume (ổ đĩa đính kèm). Terminate mới là xóa hoàn toàn. Nhiều người để Instance ở trạng thái Stop cả tháng và ngạc nhiên thấy bill $5-10 từ EBS — đó là lý do cần dọn dẹp resource không dùng.
Q: Elastic IP là gì và có cần thiết không?A: Mỗi lần Start/Stop Instance, Public IP thay đổi. Elastic IP là IP tĩnh bạn gắn vào Instance — IP không đổi dù restart. Miễn phí khi đang gắn vào Instance đang chạy, nhưng tính tiền $0.005/giờ nếu Elastic IP không gắn vào Instance nào. Cho production: dùng Elastic IP hoặc Route 53. Cho dev: Public DNS đủ rồi.
Nắm EC2 là nắm nền tảng của AWS
EC2 không chỉ là "thuê VPS" — đó là nền tảng để bạn hiểu cách cloud infrastructure thực sự vận hành. Khi bạn hiểu Instance type, AMI, Security Group, pricing model... bạn sẽ thấy các dịch vụ AWS khác như ECS, EKS, Elastic Beanstalk, Lambda đều dựa trên cùng những khái niệm này. Bước tiếp theo: thử tự tạo một Instance, deploy một app Node.js hoặc Python đơn giản, và đo latency từ Việt Nam — trải nghiệm thực tế sẽ giúp bạn nhớ lâu hơn bất kỳ tutorial nào.
