Skip to main content

Command Palette

Search for a command to run...

Aws EC2 basic

Updated
6 min readView as Markdown

1. EC2 là gì?

EC2 (Elastic Compute Cloud) là dịch vụ cung cấp máy chủ ảo có thể tùy chỉnh linh hoạt để chạy ứng dụng trên nền tảng đám mây AWS.

EC2 ≈ “máy chủ vật lý nhưng ở cloud”, chúng ta toàn quyền điều khiển hệ điều hành, phần mềm, mạng, và bảo mật.

2. Những tính năng chính của EC2

Tính năngMô tả
Tùy chọn instance đa dạngCó thể khởi tạo các VM theo nhu cầu: CPU, RAM, disk, GPU, workload, storate, loại hệ điều hành phù hợp cho các mục đích sử dụng khác nhau, như web servers, databases
Auto ScalingTự động tăng/giảm số lượng máy theo tải
Elastic IPCung cấp IP cố định cho instance
Elastic Block Store (EBS)Ổ đĩa lưu trữ độc lập, có thể gắn/rút linh hoạt
Security GroupsFirewall cấp máy chủ, tích hợp nhiều tính năng bảo mật như Security Groups, Network ACLs, IAM Roles, và khả năng mã hóa dữ liệu
Key PairĐăng nhập an toàn qua SSH
Placement GroupsTối ưu hiệu suất trong môi trường phân tán
Load BalancerPhân tải giữa nhiều instance
Monitoring với CloudWatchTheo dõi hiệu suất, log và cảnh báo
AMIs (Amazon Machine Images)Lưu mẫu cấu hình máy để khởi tạo nhanh
Spot InstancesMáy ảo giá rẻ theo cơ chế đấu giá
Reserved InstancesGiảm giá nếu cam kết sử dụng lâu dài
Instance Metadata & User DataTruy xuất cấu hình hoặc chạy script khi khởi động

3. EC2 User data

3.1. EC2 User Data là gì?

User Data là một đoạn script hoặc tập lệnh shell, được truyền vào khi khởi tạo một EC2 instance, dùng để tự động cấu hình máy chủ trong lần boot đầu tiên.

Ví dụ:

  • Cài đặt Apache/Nginx

  • Cập nhật hệ thống

  • Clone source code

  • Tự động khởi chạy app

3.2. Cách hoạt động

  • Khi EC2 instance khởi động lần đầu:

    • EC2 Agent sẽ tìm script User Data nếu có

    • Script được chạy một lần duy nhất (trừ khi cấu hình chạy lại)

    • Script sẽ chạy dưới quyền root

3.3. Cấu trúc User Data

Linux (Amazon Linux / Ubuntu)

!/bin/bash
yum update -y
yum install -y httpd
systemctl enable httpd
systemctl start httpd
echo "Hello from Boss!" > /var/www/html/index.html

Ubuntu

#!/bin/bash
apt update -y
apt install apache2 -y
systemctl enable apache2
systemctl start apache2

PowerShell (Windows)

<powershell>
Install-WindowsFeature -Name Web-Server
Add-Content -Path "C:\inetpub\wwwroot\index.html" -Value "Hello from Boss!"
</powershell>

3.4. Cách thêm User Data

A. Dùng AWS Console

  1. Khi tạo EC2 → Mục “Advanced details

  2. Phần User Data → Dán script vào

  3. Khởi tạo EC2 → Script sẽ chạy

B. Dùng AWS CLI

aws ec2 run-instances \
  --image-id ami-xxxxxxxx \
  --instance-type t2.micro \
  --key-name my-key \
  --user-data file://setup.sh \
  --security-groups my-sg \
  --count 1

3.5. Một số ví dụ thực tế

Tự cài Apache + website

#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Xin chào Boss! EC2 đang chạy ngon lành 😎</h1>" > /var/www/html/index.html

Cài Node.js + app

#!/bin/bash
curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
yum install -y nodejs git
git clone https://github.com/boss/app.git /home/ec2-user/app
cd /home/ec2-user/app
npm install
node index.js &

3.6. Những điều cần lưu ý

MụcGhi chú
🔁 Script chỉ chạy 1 lần duy nhấtTrừ khi tạo AMI hoặc sửa file metadata
📄 Script phải bắt đầu bằng #!Ví dụ: #!/bin/bash
🔍 Kiểm tra log tại/var/log/cloud-init-output.log hoặc /var/log/user-data.log
🔐 Chạy với quyền rootKhông cần sudo
🐌 Nếu script có lỗi → instance vẫn khởi tạo bình thườngCần kiểm tra log để debug

3.7. Trường hợp nâng cao

  • User Data kết hợp CloudInit (Ubuntu, Amazon Linux 2)

  • Gọi script từ S3:

      #!/bin/bash
      aws s3 cp s3://boss-bucket/scripts/init.sh /tmp/init.sh
      chmod +x /tmp/init.sh
      /tmp/init.sh
    
  • Khởi tạo container (ngay từ EC2):

      #!/bin/bash
      yum update -y
      yum install docker -y
      service docker start
      docker run -d -p 80:80 nginx
    

4. Phân loại Instance Types (Loại máy)

NhómMục đíchVí dụ
General PurposeCân bằng CPU-RAM. Thường được sử dụng cho các yêu cầu công việc workload như web server, code repository, cân bằng giữa compute, memory, networking.t4g, t3, m5, m6g
Compute OptimizedTối ưu CPU. Phù hợp với các công việc tính toán chuyên sâu (compute-intensive tasks), yêu cầu hiệu năng xử lý cao. Ví dụ như batch processing, high performance web server, high performance computing (HPC), scientific modeling, mechine learning, game server.c6g, c5
Memory OptimizedRAM lớn. Sử dụng cho công việc xử lý dữ liệu lớn trên memory (process large data set in memory), high performance relational/non-relational database, distributed cache, in-memory database, real-time processing,r5, x1, z1d
Storage OptimizedDisk IO cao. Tối ưu hóa các tác vụ yêu cầu nhiều dung lượng lưu trữ, tác vụ đọc ghi trên các tệp dữ liệu lớn (storage intensive tasks, require high and sequential read and write access to large data on local storage). Ví dụ: OLTP, relational & NoSQL database, data warehouse application, distributed file systemi3, d2, h1
Accelerated ComputingGPU, ML. Tối ưu cho các tác vụ xử lý như traning AI, đồ họa nặng.p4, g4, inf1

5. Những điều cần lưu ý khi sử dụng EC2

Bảo mật

  • Luôn giới hạn SSH port (22) chỉ cho IP tin cậy

  • Dùng key pair để đăng nhập (không dùng mật khẩu)

  • Sử dụng Security Group và Network ACL để kiểm soát traffic

  • Không để EBS hay snapshot ở chế độ public

Chi phí

  • Dùng đúng loại instance phù hợp, tránh lãng phí

  • Ưu tiên dùng Spot Instance cho workload ngắt quãng (giá rẻ)

  • Dùng Auto Scaling để tối ưu tài nguyên

  • Xem xét dùng Savings Plans hoặc Reserved Instances cho dịch vụ dài hạn

Quản lý

  • Luôn dùng CloudWatch để theo dõi CPU, RAM, disk I/O

  • Bật Termination Protection nếu không muốn ai đó xóa nhầm

  • Dùng Lifecycle Hooks nếu dùng Auto Scaling

Tính khả dụng

  • Chạy multi-AZ deployment để đảm bảo hệ thống không bị gián đoạn

  • Kết hợp với ELB (Load Balancer) để phân tải

6. Tạo và truy cập EC2 Instance

  1. Vào AWS Console → EC2 → “Launch Instance”

  2. Chọn Amazon Machine Image (AMI) → Ubuntu, Amazon Linux,...

  3. Chọn loại máy (instance type): t3.micro, t2.small...

  4. Tạo hoặc chọn Key Pair (để SSH vào máy)

  5. Cấu hình Network (VPC, subnet, security group)

  6. Gán EBS (tùy dung lượng)

  7. Gắn IAM Role nếu cần

  8. Review → Launch

Sau đó SSH vào instance:

ssh -i my-key.pem ec2-user@<Public-IP>

More from this blog

Engineer log

62 posts