Chuyển tới nội dung chính

DevOps On AWS 02: EC2 (Elastic Compute Cloud)

· 29 phút để đọc

Chào mừng bạn đến với bài thứ hai trong series "DevOps On AWS"! Sau khi đã nắm vững những kiến thức nền tảng về Cloud Computing, DevOps và AWS IAM trong bài trước, hôm nay chúng ta sẽ đi sâu vào Amazon EC2 (Elastic Compute Cloud) - dịch vụ máy chủ ảo cốt lõi và là nền tảng của hầu hết các giải pháp trên AWS.

EC2 không chỉ đơn thuần là "máy chủ ảo trong cloud" mà còn là một hệ sinh thái hoàn chỉnh với nhiều tùy chọn instance types, mô hình thanh toán linh hoạt, hệ thống bảo mật mạnh mẽ, và khả năng tích hợp sâu với các dịch vụ AWS khác. Trong bài viết này, chúng ta sẽ khám phá từ những khái niệm cơ bản đến các thực hành tốt nhất để tối ưu hóa hiệu suất và chi phí khi sử dụng EC2.

1. Giới thiệu về EC2 (Elastic Compute Cloud)

EC2 Overview

1.1. EC2 là gì?

EC2 (Elastic Compute Cloud) là một trong những dịch vụ cơ bản của AWS và là nền tảng của một số dịch vụ khác như ECS, EKS, và nhiều dịch vụ được quản lý khác. EC2 cung cấp cho người dùng các máy chủ ảo tùy chỉnh được gọi là instances, cho phép người dùng có thể cài đặt các ứng dụng theo nhu cầu như web application, database, proxy, và nhiều trường hợp sử dụng khác.

Dịch vụ này cung cấp cho người dùng các máy chủ ảo, tự do người dùng có thể cài đặt các ứng dụng theo nhu cầu như:

  • Ứng dụng web và máy chủ ứng dụng
  • Máy chủ cơ sở dữ liệu (MySQL, PostgreSQL, MongoDB, etc.)
  • Máy chủ proxy và bộ cân bằng tải
  • Môi trường phát triển và kiểm thử
  • Xử lý hàng loạt và tính toán khoa học
  • Máy chủ game và ứng dụng đa phương tiện

1.2. Các tính năng cốt lõi của EC2

Bên cạnh đó, EC2 còn cung cấp một số tính năng như:

🔧 EBS (Elastic Block Store): Là nơi lưu trữ dữ liệu trên các EC2 instance

  • Lưu trữ bền vững độc lập với vòng đời của EC2 instance
  • Nhiều loại storage với hiệu suất khác nhau (gp3, io2, st1, sc1)
  • Khả năng tạo snapshot và mã hóa
  • Multi-attach cho một số loại EBS

🖼️ AMI (Amazon Machine Image): Là một image hoàn chỉnh bao gồm OS và các phần mềm. Khi người dùng cần tạo một EC2 instance mới, có thể chọn một AMI có đầy đủ các phần mềm theo yêu cầu để rút ngắn thời gian cài đặt

  • Được cấu hình sẵn với hệ điều hành và bộ phần mềm
  • Public AMIs, Private AMIs, và AWS Marketplace AMIs
  • Tạo AMI tùy chỉnh từ các instance hiện có
  • Khả năng sao chép AMI qua các region

🛡️ Security Groups: Dùng để quản lý truy cập vào (inbound) và ra (outbound) các instance

  • Quy tắc tường lửa trạng thái cho EC2 instances
  • Quy tắc dựa trên địa chỉ IP, port ranges, và protocols
  • Mặc định từ chối tất cả inbound, cho phép tất cả outbound
  • Cập nhật quy tắc thời gian thực mà không cần khởi động lại instance

1.3. Kiến trúc EC2 trong AWS Infrastructure

Region: us-east-1
├── Availability Zone A
│ ├── EC2 Instances
│ ├── EBS Volumes
│ └── Local Instance Storage
├── Availability Zone B
│ ├── EC2 Instances
│ ├── EBS Volumes
│ └── Local Instance Storage
└── Availability Zone C
├── EC2 Instances
├── EBS Volumes
└── Local Instance Storage

High Availability Design:

  • Triển khai instances trên nhiều AZ
  • EBS volumes được sao chép trong cùng AZ
  • AMIs có thể sao chép qua các region và AZ
  • Auto Scaling Groups để duy trì dung lượng mong muốn

2. Sơ lược về Instance Types - Hiểu đúng để chọn đúng

Instance Type Naming

2.1. Cấu trúc đặt tên Instance Type

Instance type là sự tổng hợp của các thông tin về CPU, RAM, network bandwidth, disk bandwidth đối với mỗi instance.

Cấu trúc đặt tên instance type theo format: c7gn.2xlarge

c7gn.2xlarge
│││││ └─────── Instance size (nano, micro, small, medium, large, xlarge, 2xlarge, ...)
│││││
││││└─────────── Options (n=network optimized, d=NVMe SSD, a=AMD processors)
│││└──────────── Generation (7 = thế hệ thứ 7)
││└───────────── Instance family (c=compute, m=general, r=memory, etc.)
│└────────────── Generation series
└─────────────── Instance family

Ví dụ phân tích:

  • c7gn.2xlarge: Compute-optimized, generation 7, Graviton processor, network-optimized, size 2xlarge
  • m6i.large: General purpose, generation 6, Intel processor, size large
  • r5d.xlarge: Memory-optimized, generation 5, NVMe SSD, size xlarge

2.2. Các thông số kỹ thuật của Instance Types

Instance TypevCPUsMemory (GiB)Network PerformanceEBS Bandwidth
t3.micro21Up to 5 GbpsUp to 2,085 Mbps
t3.small22Up to 5 GbpsUp to 2,085 Mbps
m5.large28Up to 10 GbpsUp to 4,750 Mbps
c5.xlarge48Up to 10 GbpsUp to 4,750 Mbps
r5.2xlarge864Up to 10 GbpsUp to 4,750 Mbps

Tài liệu tham khảo chi tiết: AWS EC2 Instance Types

2.3. CPU Credits và Burstable Performance (T-Series)

T-Series instances (t3, t4g) sử dụng CPU Credit System:

Baseline Performance: 20% CPU utilization
CPU Credits: Earned when below baseline, consumed when above baseline
Unlimited Mode: Pay for additional credits when exhausted

Khi nào sử dụng T-Series:

  • ✅ Development/testing environments
  • ✅ Light workloads với occasional bursts
  • ✅ Web servers với traffic patterns không đều
  • ❌ Consistent high CPU workloads
  • ❌ Production databases với high throughput

3. Các loại Instance và trường hợp sử dụng

3.1. General Purpose Instances

EC2 chia ra các loại instance type chính:

🏠 General Purpose: Phù hợp cho hầu hết các loại ứng dụng

M-Series (M5, M6i, M6a, M7i):

  • Balanced compute, memory, và networking
  • Trường hợp sử dụng: Web servers, microservices, backend services, small databases
  • Typical ratios: 1 vCPU : 4 GiB RAM

T-Series (T3, T4g):

  • Burstable performance với CPU credits
  • Trường hợp sử dụng: Development environments, low-traffic websites, batch processing
  • Cost-effective: Ideal cho workloads không cần consistent high performance

3.2. Compute Optimized Instances

⚡ Compute Optimized: Phù hợp cho các ứng dụng yêu cầu CPU có hiệu năng cao như batch processing, ad serving, video encoding, gaming, scientific modeling, distributed analytics, và CPU-based ML inference.

C-Series (C5, C6i, C7i):

  • High-performance processors với highest compute performance
  • Trường hợp sử dụng:
    • Web servers hiệu suất cao: Nginx, Apache với high request rates
    • Tính toán khoa học: Monte Carlo simulations, mathematical modeling
    • Xử lý hàng loạt: Large-scale data processing, ETL jobs
    • Máy chủ game: Real-time multiplayer games
    • Công cụ quảng cáo: Real-time bidding, campaign optimization
    • Mã hóa video: Media transcoding, streaming applications

Đặc điểm hiệu suất:

  • Up to 192 vCPUs (c7i.48xlarge)
  • High memory bandwidth
  • Enhanced networking up to 200 Gbps
  • NVMe SSD storage options

3.3. Memory Optimized Instances

🧠 Memory Optimized: Phù hợp cho các ứng dụng yêu cầu hiệu năng memory cao như open source databases, in-memory caches và real-time big data analytics.

R-Series (R5, R6i, R7i):

  • High memory-to-vCPU ratios (up to 1:32)
  • Trường hợp sử dụng:
    • Cơ sở dữ liệu trong bộ nhớ: Redis, Memcached clusters
    • Phân tích thời gian thực: Apache Spark, Elasticsearch clusters
    • Cơ sở dữ liệu hiệu suất cao: SAP HANA, Apache Cassandra

X-Series (X1e, X2i):

  • Extreme memory ratios (up to 1:128)
  • Trường hợp sử dụng:
    • Ứng dụng doanh nghiệp: SAP Business Suite, Microsoft SQL Server
    • Xử lý dữ liệu lớn: Apache Hadoop, Apache Kafka
    • Tính toán hiệu suất cao: In-memory analytics workloads

Memory specifications:

  • R6i.32xlarge: 128 vCPUs, 1024 GiB RAM
  • X2i.32xlarge: 128 vCPUs, 4096 GiB RAM

3.4. Accelerated Computing Instances

🚀 Accelerated Computing: Phù hợp cho các ứng dụng yêu cầu cả CPU và GPU có hiệu năng cao như Generative AI applications (hỏi đáp, tạo ảnh, video, nhận dạng giọng nói)

P-Series (P3, P4, P5):

  • NVIDIA Tesla GPUs cho machine learning training
  • Trường hợp sử dụng:
    • Học sâu: Training large neural networks (LLMs, CNNs)
    • Nghiên cứu AI/ML: PyTorch, TensorFlow workloads
    • Tính toán khoa học: Molecular dynamics, climate modeling

G-Series (G4, G5):

  • NVIDIA GPUs cho graphics workloads và ML inference
  • Trường hợp sử dụng:
    • Streaming game: NVIDIA GeForce NOW-style services
    • Xử lý video: Real-time transcoding, rendering
    • Máy trạm ảo: CAD, 3D modeling applications

So sánh thế hệ hiện tại:

P5.48xlarge: 8x NVIDIA H100 GPUs, 2TB GPU memory
G5.48xlarge: 8x NVIDIA A10G GPUs, 192 GB GPU memory
P4d.24xlarge: 8x NVIDIA A100 GPUs, 320 GB GPU memory

3.5. Storage Optimized Instances

💾 Storage Optimized: Phù hợp cho các ứng dụng yêu cầu disk I/O cao

I-Series (I3, I4i):

  • NVMe SSD instance storage với very high random I/O
  • Trường hợp sử dụng:
    • Cơ sở dữ liệu phân tán: Apache Cassandra, MongoDB sharding
    • Công cụ tìm kiếm: Elasticsearch với high write throughput
    • Lớp cache: Redis với persistence enabled

D-Series (D3):

  • Dense HDD storage cho sequential access patterns
  • Trường hợp sử dụng:
    • Hệ thống lưu trữ phân tán: HDFS data nodes
    • Xử lý dữ liệu: MapReduce, Apache Spark với large datasets

3.6. HPC Optimized Instances

🔬 HPC Optimized: Phù hợp cho các ứng dụng đòi hỏi CPU, memory có hiệu năng rất cao

Hpc-Series (Hpc6a, Hpc7a):

  • Optimized cho high-performance computing workloads
  • Trường hợp sử dụng:
    • Mô phỏng khoa học: Weather forecasting, computational fluid dynamics
    • Mô hình tài chính: Risk analysis, algorithmic trading
    • Mô phỏng kỹ thuật: Finite element analysis, crash simulations

Tính năng chính:

  • Enhanced networking với Elastic Fabric Adapter (EFA)
  • High memory bandwidth và low latency
  • Optimized cho MPI (Message Passing Interface) applications

4. Các lựa chọn thanh toán - Tối ưu chi phí với pricing models linh hoạt

Pricing Models

4.1. On-Demand Instances

EC2 chia ra 4 lựa chọn thanh toán:

🟢 On-Demand:

  • Thanh toán cho khoảng thời gian sử dụng thực tế (tính theo từng giây) cho từng instance
  • Phù hợp cho các ứng dụng cần độ ổn định cao và không được phép gián đoạn

Đặc điểm:

  • Không có minimum commitment hoặc upfront payment
  • Tính phí theo second (Linux) hoặc hour (Windows)
  • Highest flexibility, highest cost
  • Có thể terminate bất cứ lúc nào

Trường hợp sử dụng phù hợp:

  • Development và testing: Quick spin-up/down environments
  • Short-term workloads: Batch jobs, data processing
  • Unpredictable workloads: Traffic spikes, seasonal applications
  • New applications: Khi chưa biết usage patterns

Pricing example (us-east-1, Linux):

t3.micro: $0.0104/hour
m5.large: $0.096/hour
c5.xlarge: $0.17/hour
r5.2xlarge: $0.504/hour

4.2. Spot Instances

💰 Spot Instance:

  • Với cùng một cấu hình (CPU, RAM) chỉ phí phải trả cho một spot instance sẽ rẻ hơn on-demand có thể lên đến 90%
  • Các spot instance được cấp thực tế là lượng tài nguyên chưa được sử dụng của AWS

Cách thức hoạt động:

  1. Spot bidding process: Người dùng đặt ra một khoảng giá tối đa có thể chi trả
  2. Market-driven pricing: Nếu khoảng giá đó lớn hơn hoặc bằng giá spot instance (được quy định bởi AWS, phụ thuộc vào cung cầu) thì instance đó sẽ được cấp cho người dùng
  3. 2-minute interruption notice: AWS có thể thực hiện thu hồi lại tài nguyên bất cứ khi nào (thông báo trước khi thực hiện khoảng 2 phút)
  4. Automatic termination: Điều đó có nghĩa instance sẽ bị xóa, shutdown hoặc hibernate tùy thuộc vào người dùng cấu hình

Chiến lược Spot instance:

Đa dạng hóa: Phân bổ trên nhiều loại instance và AZ
Chịu lỗi: Thiết kế ứng dụng để xử lý gián đoạn
Lưu điểm kiểm tra: Lưu tiến trình công việc thường xuyên
Kết hợp loại instance: Kết hợp với On-Demand cho các thành phần quan trọng

Thực hành tốt nhất cho Spot Instances:

  • Spot sẽ phù hợp với các ứng dụng dễ dàng retry/restart như CI/CD, crawler data,...
  • Sử dụng Spot Fleet để tự động yêu cầu đa dạng loại instance
  • Triển khai xử lý tắt máy nhẹ nhàng trong ứng dụng
  • Theo dõi xu hướng giá Spot và điều chỉnh chiến lược đấu giá
  • Kết hợp với Auto Scaling Groups để tăng khả năng phục hồi

Spot Instance pricing example:

m5.large On-Demand: $0.096/hour
m5.large Spot: $0.029/hour (70% savings)
Savings: Up to 90% compared to On-Demand

4.3. Savings Plans và Reserved Instances

📅 Savings Plans (khuyên khích sử dụng bởi AWS):

  • Người dùng sẽ nhận được giảm giá dựa vào cam kết sẽ chi tiêu bao nhiêu tiền trong một giờ và trong thời gian bao lâu (1 năm hoặc 3 năm), sẽ thanh toán trước (toàn bộ hoặc một phần) hoặc không thanh toán trước

Các loại Savings Plans:

  • 💻 Compute Savings Plans (tiết kiệm tới đa 66%): Không ràng buộc về machine type, OS, region
  • 🖥️ EC2 Instance Savings Plans (tiết kiệm tới đa 72%): Không ràng buộc về machine size (nhưng có ràng buộc về instance family), OS nhưng chỉ được áp dụng cho một số instance family ở một số region nhất định

Tùy chọn thanh toán:

Không trả trước: Chia chi phí theo thời hạn, giảm giá thấp nhất
Trả trước một phần: Trả 50% trước, còn lại theo tháng, giảm giá trung bình
Trả trước toàn bộ: Trả 100% trước, giảm giá cao nhất (lên đến 75% cho 3 năm)

📋 Reserved Instance (AWS khuyến khích sử dụng Savings Plans thay vì Reserved Instance):

  • Người dùng sẽ nhận được giảm giá dựa vào cam kết sẽ sử dụng một machine type cụ thể trong thời gian bao lâu (1 tháng đến 3 năm), sẽ thanh toán trước (toàn bộ hoặc một phần) hoặc không thanh toán trước

Các loại Reserved Instance:

Standard RIs: Giảm giá lên đến 75%, không có tính linh hoạt để thay đổi
Convertible RIs: Giảm giá lên đến 54%, có thể đổi sang instance khác

Bảng so sánh:

Payment ModelFlexibilityDiscountBest For
On-DemandHighest0%Khối lượng công việc biến động
SpotMediumUp to 90%Khối lượng công việc chịu lỗi
Savings PlansHighUp to 72%Sử dụng tính toán ổn định
Reserved InstancesLowUp to 75%Khối lượng công việc dự đoán được

5. Cấu hình bảo mật với Security Groups

Security Groups

5.1. Security Groups là gì?

Security Groups được dùng để CHO PHÉP truy cập vào (inbound) và ra (outbound) các EC2 instance thông qua các rule.

Security Groups được chia làm Inbound rules và Outbound rules:

🔒 Stateful Firewall:

  • Security Groups hoạt động như một stateful firewall
  • Nếu cho phép inbound traffic, return traffic tự động được allow
  • Rules chỉ định việc ALLOW, không thể tạo DENY rules

📝 Rule Components:

  • Type: Protocol type (HTTP, HTTPS, SSH, Custom, etc.)
  • Protocol: TCP, UDP hoặc một số lựa chọn riêng của ICMP như echo request, echo reply
  • Port range: Port hoặc port range sẽ được truy cập vào hoặc ra
  • Source/Destination: IP range sẽ được truy cập vào hoặc ra

5.2. Cấu trúc và thực hành tốt nhất của Security Groups

🎯 Một số lưu ý:

  • Các rule chỉ dùng để quy định việc cho phép (allow), không phải để ngăn chặn (deny)
  • Nếu có một request không thỏa mãn bất kỳ rule nào, request đó sẽ bị deny
  • Khi tạo mới một Security Group, sẽ có một Outbound rule mặc định cho phép tất cả traffic (all protocol, all port, all destination)

Default behavior:

Inbound: Deny all (no rules)
Outbound: Allow all (0.0.0.0/0, all protocols, all ports)

Common Security Group patterns:

Web Server Security Group:

{
"InboundRules": [
{
"Type": "HTTP",
"Protocol": "TCP",
"Port": "80",
"Source": "0.0.0.0/0"
},
{
"Type": "HTTPS",
"Protocol": "TCP",
"Port": "443",
"Source": "0.0.0.0/0"
},
{
"Type": "SSH",
"Protocol": "TCP",
"Port": "22",
"Source": "10.0.0.0/8"
}
]
}

Database Security Group:

{
"InboundRules": [
{
"Type": "MySQL/Aurora",
"Protocol": "TCP",
"Port": "3306",
"Source": "sg-web-servers"
}
]
}

5.3. Cấu hình nâng cao cho Security Groups

🔗 Security Group References:

  • Có thể reference other Security Groups thay vì IP ranges
  • Automatically updates khi instances join/leave groups
  • Ideal cho dynamic environments như Auto Scaling

📊 Security Group Limits:

Rules per Security Group: 60 inbound + 60 outbound
Security Groups per Instance: 5 (can request increase to 16)
Security Groups per VPC: 2,500 (soft limit)

🛡️ Thực hành tốt nhất:

  1. Principle of least privilege: Chỉ mở ports cần thiết
  2. Use descriptive names: web-server-sg, database-sg
  3. Reference Security Groups: Thay vì hardcode IP addresses
  4. Regular auditing: Review và cleanup unused Security Groups
  5. Layered security: Combine với NACLs và WAF

6. Các loại địa chỉ IP trong EC2

6.1. Private IP Addresses

🏠 IP Private:

  • Địa chỉ IP chỉ dùng để giao tiếp trong mạng nội bộ
  • Nếu muốn giao tiếp ra ngoài mạng thì sẽ cần dùng NAT
  • Chỉ có 3 range IP là: 10.0.0.0/8, 172.16.0.0/16-172.31.0.0/16 và 192.168.0.0/24
  • Nên sử dụng để kết nối đến các internal service

Private IP characteristics:

Range 1: 10.0.0.0/8 (10.0.0.0 - 10.255.255.255)
Range 2: 172.16.0.0/12 (172.16.0.0 - 172.31.255.255)
Range 3: 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)

Trường hợp sử dụng:

  • Inter-service communication: Database connections, microservices
  • Internal load balancers: Application Load Balancer trong private subnets
  • VPC peering: Communication across VPCs
  • VPN connections: On-premises to AWS connectivity

6.2. Public IP Addresses

🌐 IP Public:

  • Địa chỉ IP chỉ dùng để giao tiếp cả trong và ngoài mạng nội bộ
  • Có thể là bất cứ IP nào, ngoại trừ 3 range IP private

Public IP behavior:

  • Dynamic assignment: Thay đổi khi stop/start instance
  • Internet Gateway required: Cần IGW để route traffic
  • Not charged separately: Included trong EC2 pricing
  • Regional scope: Unique trong AWS Region

Limitations:

Public IP changes when instance stops/starts
Cannot reassign to different instance
Released when instance terminates
No control over specific IP address assigned

6.3. Elastic IP (EIP)

🔧 Elastic IP:

  • Mặc định, khi EC2 instance bị stop và start lại thì IP public sẽ bị thay đổi. IP public trước đó sẽ bị thu hồi
  • Elastic IP dùng để giải quyết vấn đề trên, bằng cách "đặt hàng" một địa chỉ IP public và gắn địa chỉ IP đó vào EC2 instance

EIP characteristics:

Static public IP: Không thay đổi khi stop/start
Reassignable: Có thể move between instances
Regional resource: Thuộc về specific AWS Region
Charged when unused: $0.005/hour khi không attach

Thực hành tốt nhất cho EIP:

  1. Use sparingly: Chỉ khi cần static IP for external access
  2. Consider alternatives:
    • Application Load Balancer với Route 53
    • CloudFront với custom domain
    • NAT Gateway cho outbound traffic
  3. Avoid waste: Release unused EIPs để tránh charges
  4. Monitor usage: Set up billing alerts cho EIP costs

Cost optimization:

EIP attached to running instance: Free
EIP attached to stopped instance: $0.005/hour
EIP not attached: $0.005/hour
Additional EIPs per instance: $0.005/hour

6.4. IPv6 Support

🆕 IPv6 Addresses:

  • Dual-stack support: EC2 instances có thể có cả IPv4 và IPv6
  • Global unicast: Tất cả IPv6 addresses là public
  • No additional cost: Không tính phí extra cho IPv6
  • 128-bit addressing: Giải quyết IPv4 exhaustion

Cấu hình IPv6:

VPC: Enable IPv6 CIDR block
Subnet: Associate IPv6 CIDR block
Route Table: Add IPv6 routes
Security Groups: Add IPv6 rules
Instance: Auto-assign IPv6 address

7. Quản lý EBS, AMI và Snapshots

EBS Architecture

7.1. EBS (Elastic Block Store) - Storage Foundation

💾 EBS (Elastic Block Store):

  • Là dịch vụ lưu trữ của AWS
  • Có thể dễ dàng gắn vào (attach) và gỡ ra (detach) các EC2 instance. Do đó, ta cũng có thể trao đổi EBS giữa các instance với nhau
  • Khi tạo một EBS, người dùng luôn thì ta có thể điều chỉnh được IOPS và throughput
  • Chỉ có thể tăng dung lượng, không thể giảm dung lượng
  • Khi tăng dung lượng EBS trên AWS console hoặc aws cli, ta phải thực hiện thao tác mở rộng phân vùng bên trong hệ điều hành. Nếu không hệ điều hành sẽ không ghi nhận mức dung lượng mới

EBS Volume Types:

TypeUse CaseSizeIOPSThroughput
gp3General purpose SSD1 GiB - 16 TiB3,000-16,000125-1,000 MiB/s
gp2General purpose SSD1 GiB - 16 TiB100-16,000128-250 MiB/s
io2High IOPS SSD4 GiB - 64 TiB100-256,000256-4,000 MiB/s
st1Throughput optimized HDD125 GiB - 16 TiB500 baseline40-500 MiB/s
sc1Cold HDD125 GiB - 16 TiB250 baseline12-250 MiB/s

Tính năng EBS:

Encryption: AES-256 encryption at rest and in transit
Multi-Attach: io1/io2 volumes có thể attach tới multiple instances
Snapshots: Point-in-time backups lưu trữ trên S3
Elastic Volumes: Modify size, type, IOPS without downtime

7.2. AMI (Amazon Machine Images) - Template cho EC2

AMI

🖼️ AMI (Amazon Machine Images):

  • Là một bản sao hình ảnh của một hệ điều hành và các ứng dụng hoặc cài đặt đi kèm, dùng để khởi tạo EC2 instance.

AMI Components:

Root Volume Template: OS và pre-installed software
Launch Permissions: Quyền truy cập (public, private, specific accounts)
Block Device Mapping: Các EBS volumes sẽ attach khi launch
Instance Configuration: Instance type recommendations

AMI bao gồm:

  • Một hoặc nhiều EBS volume được liên kết chứa hệ điều hành và các ứng dụng.
  • Cấu hình launch permissions để kiểm soát ai có thể sử dụng AMI để khởi tạo EC2 instance.
  • Các block device mapping để xác định các thiết bị lưu trữ khi khởi tạo instance.
  • AMI có thể được tạo từ một EC2 instance hiện tại, giúp tiết kiệm thời gian khi triển khai các instance tương tự.
  • AMI có thể được chia sẻ giữa các tài khoản AWS hoặc được bán trên AWS Marketplace.
  • Khi khởi tạo EC2 instance từ AMI, bạn có thể tùy chỉnh cấu hình như kích thước bộ nhớ, loại instance, và các thông số khác.

AMI Types:

  • 🏪 Public AMIs: AWS-provided hoặc community AMIs
  • 🏪 AWS Marketplace AMIs: Commercial software với licensing
  • 🔒 Private AMIs: Custom AMIs trong account của bạn
  • 🤝 Shared AMIs: AMIs shared từ other AWS accounts

AMI Creation Process:

1. Launch EC2 instance từ base AMI
2. Customize instance (install software, configure settings)
3. Create AMI từ instance:
aws ec2 create-image --instance-id i-1234567890abcdef0 --name "My Custom AMI"
4. AMI sẽ available để launch new instances

7.3. Snapshots - Backup và Disaster Recovery

📸 Snapshots:

  • Là bản sao lưu của EBS volume, được lưu trữ trên Amazon S3.
  • Snapshots có thể được sử dụng để khôi phục dữ liệu khi xảy ra sự cố hoặc sao chép dữ liệu sang một vùng (region) khác.
  • Khi tạo snapshot đầu tiên từ một EBS volume, toàn bộ dữ liệu sẽ được sao lưu. Các snapshot sau chỉ ghi nhận những thay đổi kể từ snapshot trước đó (incremental backup).
  • Snapshots có thể được sử dụng để tạo AMI mới hoặc tạo EBS volume mới, giúp triển khai nhanh chóng mà không cần cấu hình lại từ đầu.
  • Việc tạo snapshot không ảnh hưởng đến hoạt động của EC2 instance, nhưng tốt nhất nên tạo snapshot khi volume ở trạng thái nhất quán.

Tính năng Snapshot:

Sao lưu gia tăng: Chỉ sao lưu các block đã thay đổi sau snapshot đầu tiên
Sao chép liên vùng: Sao chép snapshots qua các AWS regions
Mã hóa: EBS volumes được mã hóa tạo ra encrypted snapshots
Khôi phục theo thời điểm: Khôi phục volume về thời điểm cụ thể
Tiết kiệm chi phí: Chỉ trả tiền cho dữ liệu được lưu trữ, tự động nén

Snapshot Lifecycle:

# Create snapshot
aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description "Daily backup"

# List snapshots
aws ec2 describe-snapshots --owner-ids self

# Create volume from snapshot
aws ec2 create-volume --snapshot-id snap-066877671789bd71b --availability-zone us-east-1a

# Copy snapshot to another region
aws ec2 copy-snapshot --source-region us-east-1 --source-snapshot-id snap-066877671789bd71b --destination-region us-west-2

Automated Backup with Data Lifecycle Manager:

{
"ResourceTypes": ["VOLUME"],
"TargetTags": [{"Key": "Environment", "Value": "Production"}],
"Schedules": [{
"Name": "DailyBackup",
"CreateRule": {"Interval": 24, "IntervalUnit": "HOURS", "Times": ["03:00"]},
"RetainRule": {"Count": 7}
}]
}

7.4. Tối ưu hóa EBS và điều chỉnh hiệu suất

📊 Thực hành tốt nhất cho hiệu suất EBS:

Tối ưu hóa IOPS:

gp3: Baseline 3,000 IOPS, burst to 16,000 IOPS
io2: Up to 256,000 IOPS với Multi-Attach support
Provision higher IOPS cho sustained high-performance workloads
Use EBS-optimized instances cho guaranteed bandwidth

Tối ưu hóa Throughput:

gp3: Configurable throughput up to 1,000 MiB/s
st1: Throughput-optimized HDD cho sequential access
Use RAID 0 configuration cho increased throughput (với risk tradeoff)
Pre-warm volumes bằng cách đọc all blocks sau restore từ snapshot

Tối ưu hóa chi phí:

Use gp3 thay vì gp2 cho cost savings (up to 20%)
Right-size volumes: Monitor CloudWatch metrics
Implement lifecycle policies cho automated snapshot cleanup
Use Cold HDD (sc1) cho infrequently accessed data

8. Một số lưu ý khi tạo EC2 Instance

8.1. Các tiêu chí để lựa chọn Region

🌍 Các tiêu chí để lựa chọn region:

📍 Độ trễ (Latency): Chọn region gần nhất với người dùng cuối để giảm độ trễ khi truy cập dịch vụ.

  • Asia Pacific (Singapore) - ap-southeast-1: Optimal cho Southeast Asia users
  • US East (N. Virginia) - us-east-1: Global services như CloudFront, Route 53
  • Europe (Ireland) - eu-west-1: Phù hợp cho European users
  • Latency testing tools: CloudPing, AWS Region latency checker

⚖️ Tuân thủ quy định pháp luật: Một số dữ liệu phải được lưu trữ trong những khu vực cụ thể theo yêu cầu của quy định pháp luật (ví dụ: GDPR yêu cầu dữ liệu người dùng châu Âu phải lưu trữ trong EU).

  • GDPR Compliance: EU regions cho European citizen data
  • Data residency: Government và financial sector requirements
  • SOC/PCI DSS: Specific regions với compliance certifications

💰 Chi phí: Giá dịch vụ EC2 và các dịch vụ AWS khác có thể khác nhau giữa các region, do đó cần cân nhắc chọn region có chi phí tối ưu nhất.

us-east-1 (N. Virginia): Usually lowest cost, reference pricing
us-west-2 (Oregon): Competitive pricing, good for US West Coast
ap-southeast-1 (Singapore): Higher cost but good for Asia Pacific
eu-west-1 (Ireland): Moderate cost for European operations

🔧 Dịch vụ sẵn có: Không phải tất cả các region đều có các loại instance và dịch vụ giống nhau. Cần kiểm tra xem loại instance và dịch vụ cần khởi tạo có sẵn ở region đó hay không.

  • Latest instance types: Usually launch in major regions first
  • Managed services: Some services chỉ available trong specific regions
  • AI/ML services: Advanced ML services có limited regional availability

8.2. Đặc tính của ứng dụng cần cài đặt

⚙️ Đặc tính của ứng dụng mà ta sẽ cài đặt:

🔄 Cần sử dụng tài nguyên nào nhiều (CPU, Memory, Disk I/O,...) để lựa chọn loại instance phù hợp:

CPU-intensive applications:

Web servers với high traffic: c5.large → c5.4xlarge
Video encoding/transcoding: c5n.xlarge với enhanced networking
Scientific computing: c6i.32xlarge với high memory bandwidth
Compile workloads: c5.24xlarge với high vCPU count

Memory-intensive applications:

In-memory databases (Redis): r6i.large → r6i.32xlarge
Real-time analytics (Elasticsearch): r5.2xlarge với high memory-to-vCPU ratio
Large Java applications: r5.xlarge với sufficient heap space
Caching layers: r6i instances với enhanced networking

Storage-intensive applications:

Database servers: io2 volumes với high IOPS
Log processing: st1 volumes với high throughput
File servers: EFS hoặc large gp3 volumes
Content repositories: S3 với CloudFront caching

🔄 Là ứng dụng stateless hay stateful, có thể áp dụng spot instance được hay không:

Stateless applications (Spot-friendly):

✅ Web servers với load balancer
✅ API servers với external state storage
✅ Batch processing jobs
✅ CI/CD workers
✅ Container workloads với orchestration

Stateful applications (On-Demand recommended):

❌ Database primary instances
❌ Session-aware applications
❌ Long-running transactions
❌ Real-time applications với SLA requirements

🔄 Cần bao nhiều resource cho ứng dụng, đảm bảo các tài nguyên tính toán và lưu trữ không vượt quá như cầu thực tế để tránh lãng phí chi phí:

Phương pháp lập kế hoạch tài nguyên:

1. Đo lường cơ sở: Đo lường việc sử dụng tài nguyên hiện tại
2. Phân tích đỉnh: Xác định các mẫu sử dụng cao nhất
3. Dự báo tăng trưởng: Lập kế hoạch cho tăng trưởng 6-12 tháng
4. Mô hình chi phí: So sánh các loại instance khác nhau và mô hình pricing
5. Thiết lập giám sát: CloudWatch alarms cho việc sử dụng tài nguyên

Khuyến nghị đúng kích thước:

CPU utilization: Target 70-80% average với headroom cho spikes
Memory utilization: Target 80-85% để avoid swapping
Network utilization: Monitor bandwidth patterns
Storage IOPS: Provision 20% above measured peak IOPS

8.3. Security và Compliance Checklist

🔐 Thực hành tốt nhất về bảo mật:

✅ Sử dụng AMI mới nhất với các bản vá bảo mật
✅ Cấu hình Security Groups theo nguyên tắc quyền tối thiểu
✅ Bật mã hóa EBS cho dữ liệu lưu trữ
✅ Sử dụng IAM roles thay vì access keys
✅ Bật VPC Flow Logs để giám sát mạng
✅ Cấu hình CloudTrail để ghi log kiểm toán
✅ Sử dụng AWS Systems Manager để quản lý bản vá
✅ Triển khai chiến lược sao lưu với snapshot tự động

🛡️ Bảo mật mạng:

Subnet riêng tư: Đặt instance trong private subnet khi có thể
Bastion hosts: Sử dụng SSM Session Manager thay vì SSH bastion
Load balancers: Sử dụng ALB/NLB cho các dịch vụ public-facing
Tích hợp WAF: Triển khai AWS WAF cho ứng dụng web

🔄 Sao lưu và khôi phục thảm họa:

Snapshot tự động: Snapshot hàng ngày với chính sách lưu giữ
Sao lưu liên vùng: Sao lưu dữ liệu quan trọng sang vùng phụ
Sao lưu AMI: Tạo AMI thường xuyên để triển khai nhất quán
Sao lưu cơ sở dữ liệu: RDS tự động sao lưu và snapshot thủ công
Kiểm thử: Kiểm thử DR thường xuyên và quy trình khôi phục

Kết luận

Trong bài viết thứ hai của series "DevOps On AWS", chúng ta đã khám phá toàn diện về Amazon EC2 - dịch vụ máy chủ ảo cốt lõi của AWS. Từ những khái niệm cơ bản về instance types và pricing models, đến các chiến lược tối ưu hóa hiệu suất và chi phí, EC2 chứng minh vị trí quan trọng của mình trong hệ sinh thái AWS.

📋 Những điểm chính cần nhớ:

  • EC2 Instance Types: Hiểu rõ cấu trúc đặt tên và chọn đúng instance family cho workload cụ thể (General Purpose, Compute Optimized, Memory Optimized, Accelerated Computing, Storage Optimized, HPC Optimized)
  • Mô hình thanh toán: Tối ưu chi phí với On-Demand (flexibility), Spot (cost savings up to 90%), Savings Plans (predictable workloads), và Reserved Instances
  • Security Groups: Implement defense-in-depth với stateful firewall rules, least privilege principles, và Security Group references
  • IP Management: Hiểu sự khác biệt giữa Private IP, Public IP, và Elastic IP để thiết kế network architecture hiệu quả
  • Storage Ecosystem: EBS volumes cho persistent storage, AMIs cho template deployment, và Snapshots cho backup/disaster recovery
  • Thực hành tốt nhất: Chọn đúng region, định kích thước instances phù hợp, triển khai monitoring/alerting, và duy trì tuân thủ bảo mật

🚀 Tác động của EC2 trong hạ tầng hiện đại:

EC2 không chỉ là "máy ảo trong cloud" mà là nền tảng cho:

  • Điều phối container với ECS/EKS clusters
  • Serverless computing với Lambda function warm pools
  • Big data processing với EMR và Spark clusters
  • AI/ML workloads với GPU instances và SageMaker
  • High-performance computing với HPC-optimized instances

💡 Các bước tiếp theo cho DevOps Engineers:

  1. Thực hành thực tế: Khởi chạy instances với different instance types và monitor performance
  2. Tối ưu hóa chi phí: Triển khai Savings Plans cho predictable workloads
  3. Củng cố bảo mật: Cấu hình Security Groups, bật mã hóa, triển khai giám sát
  4. Tự động hóa: Khám phá Auto Scaling Groups và Launch Templates
  5. Tích hợp: Kết nối EC2 với các dịch vụ AWS khác (RDS, S3, CloudWatch)

EC2 đã đặt nền móng vững chắc cho hành trình DevOps của chúng ta. Hãy tiếp tục theo dõi series để master AWS cloud infrastructure! 🌟

📚 Tài liệu tham khảo:

Xem nhiều hơn bài viết của tôi tại đây nhé: codeeasy.blog