Bỏ qua để đến nội dung

Amazon EC2 – Kiến thức nền

EC2 = Elastic Compute Cloud, và đây là một trong những dịch vụ nổi tiếng nhất của AWS. Về mô hình, nó là Infrastructure as a Service — AWS lo hạ tầng vật lý, bạn lo mọi thứ chạy bên trong máy.

EC2 thực chất là một “họ” bốn năng lực đi cùng nhau:

  • Thuê máy ảo (EC2) — mượn một máy tính chạy trên hạ tầng AWS.
  • Lưu dữ liệu trên ổ đĩa ảo (EBS) — xem EC2 – Instance Storage.
  • Phân phối tải ra nhiều máy (ELB) — xem High Availability & Scalability.
  • Scale dịch vụ bằng auto-scaling group (ASG) — cũng ở chương 6.

Lý do phải học EC2 trước tiên: hiểu EC2 là nền tảng để hiểu Cloud hoạt động thế nào. Rất nhiều dịch vụ “cao cấp” hơn của AWS thực chất chỉ là EC2 được đóng gói lại và quản lý hộ bạn.

Đặt một EC2 instance giống như đặt cấu hình một chiếc máy tính: bạn phải chọn từng thành phần. Các lựa chọn mà slide liệt kê:

  • Operating System (OS): Linux, Windows hoặc Mac OS.
  • Năng lực tính toán và số lõi (CPU).
  • Bộ nhớ RAM (random-access memory).
  • Dung lượng lưu trữ, và có hai kiểu khác nhau về bản chất:
    • Gắn qua mạng (network-attached): EBSEFS.
    • Gắn trực tiếp vào phần cứng (hardware): EC2 Instance Store.
  • Network card: tốc độ card mạng, và có địa chỉ Public IP hay không.
  • Quy tắc tường lửa (firewall rules): chính là security group.
  • Bootstrap script (cấu hình lúc khởi động lần đầu): chính là EC2 User Data.

Bảy dòng này là bộ xương của cả chương. Bốn mục sau đây mổ kỹ ba thứ quan trọng nhất trong danh sách: User Data, instance type và security group.

Bootstrapping nghĩa là chạy các câu lệnh ngay khi một cái máy khởi động. Với EC2, bạn làm việc đó bằng một EC2 User Data script — đoạn script bạn cung cấp lúc tạo instance.

Điều quan trọng nhất phải nhớ: script này chỉ chạy một lần, ở lần khởi động đầu tiên của instance. Nó không chạy lại ở các lần start sau.

EC2 User Data dùng để tự động hóa các việc khởi tạo:

  • Cài các bản cập nhật (installing updates).
  • Cài phần mềm (installing software).
  • Tải các file dùng chung từ Internet.
  • Bất cứ việc gì bạn nghĩ ra.

Một chi tiết về quyền hạn cũng hay ra đề: EC2 User Data Script chạy với quyền của user root — nghĩa là nó làm được mọi thay đổi trên hệ thống mà không cần sudo.

AWS có rất nhiều instance type khác nhau, mỗi loại được tối ưu cho một kiểu tải công việc. Tên instance tuân theo một quy ước rõ ràng, ví dụ m5.2xlarge:

  • minstance class (lớp instance).
  • 5generation (thế hệ; AWS cải tiến chúng theo thời gian).
  • 2xlargesize trong lớp đó.

Bốn họ instance chính:

Phù hợp cho nhiều loại tải công việc khác nhau, ví dụ web server hoặc code repository. Điểm mạnh là sự cân bằng giữa ba yếu tố: Compute, MemoryNetworking. Loại t2.micro mà các bài thực hành hay dùng chính là một General Purpose instance.

Dành cho các tác vụ nặng về tính toán, cần processor hiệu năng cao:

  • Batch processing workloads (xử lý theo lô).
  • Media transcoding (chuyển đổi định dạng media).
  • High performance web servers.
  • High performance computing (HPC).
  • Scientific modeling & machine learning.
  • Dedicated gaming servers.

Cho hiệu năng nhanh với các tải công việc xử lý tập dữ liệu lớn ngay trong bộ nhớ:

  • Cơ sở dữ liệu quan hệ / phi quan hệ hiệu năng cao.
  • Distributed web scale cache stores (hệ thống cache phân tán quy mô web).
  • In-memory database tối ưu cho BI (business intelligence).
  • Ứng dụng xử lý thời gian thực dữ liệu phi cấu trúc khối lượng lớn.

Dành cho các tác vụ nặng về lưu trữ, cần đọc/ghi tuần tự với tốc độ cao trên tập dữ liệu lớn nằm ở local storage:

  • Hệ thống OLTP (online transaction processing) tần suất cao.
  • Cơ sở dữ liệu quan hệ và NoSQL.
  • Cache cho in-memory database (ví dụ Redis).
  • Data warehousing applications.
  • Distributed file systems.
Instance vCPU Mem (GiB) Storage Network Performance EBS Bandwidth (Mbps)
t2.micro 1 1 EBS-Only Low to Moderate
t2.xlarge 4 16 EBS-Only Moderate
c5d.4xlarge 16 32 1 × 400 NVMe SSD Up to 10 Gbps 4750
r5.16xlarge 64 512 EBS-Only 20 Gbps 13600
m5.8xlarge 32 128 EBS-Only 10 Gbps 6800

Danh sách instance type thay đổi theo thời gian nên hãy tra trang AWS để có thông tin mới nhất; ngoài ra có một trang web cộng đồng rất tiện để so sánh là instances.vantage.sh.

Security Group là nền tảng của bảo mật mạng trên AWS. Nó kiểm soát traffic nào được vào và ra khỏi EC2 instance của bạn, và hoạt động như một “firewall” gắn trên instance.

Hai đặc điểm về bản chất mà bạn phải nắm ngay:

  • Security group chỉ chứa rule cho phép (allow rules) — không có rule “deny”.
  • Rule có thể tham chiếu theo IP, hoặc theo security group khác.

Security Group điều tiết bốn thứ:

  • Quyền truy cập vào các port.
  • Các dải IP được phép — IPv4 và IPv6.
  • Kiểm soát network inbound (từ bên ngoài vào instance).
  • Kiểm soát network outbound (từ instance ra bên ngoài).

Đọc sơ đồ của slide: một EC2 instance được gắn Security Group 1. Ở chiều inbound, rule lọc theo IP và port — máy tính của bạn (đã được cho phép port 22) thì vào được, còn một máy khác không được cho phép port 22 thì bị chặn. Ở chiều outbound, rule cho phép mọi IP, mọi port — nên instance ra Internet được bình thường.

  • Một security group có thể gắn cho nhiều instance.
  • Security group bị khóa vào một cặp Region + VPC — không dùng chung giữa hai Region hay hai VPC.
  • “sống” bên ngoài EC2 — nếu traffic bị chặn thì EC2 instance hoàn toàn không thấy traffic đó.
  • Nên duy trì một security group riêng chỉ cho SSH.
  • Mặc định toàn bộ traffic inbound bị chặn.
  • Mặc định toàn bộ traffic outbound được cho phép.

Đây là tính năng khiến security group mạnh hơn một firewall theo IP thuần. Một rule inbound có thể ghi nguồn là một security group khác thay vì một dải IP.

Đọc sơ đồ của slide: Security Group 1 có rule inbound mở port 123, và nguồn được phép là Security Group 1Security Group 2. Kết quả: instance gắn Security Group 1 và instance gắn Security Group 2 đều kết nối được vào port 123; instance gắn Security Group 3 thì bị chặn — dù nó cũng nằm trong cùng hệ thống.

Cấu hình security group nào cũng cần biết ứng dụng dùng port gì. Sáu port trong slide là những cái phải học thuộc:

Port Giao thức / Mục đích
21 FTP (File Transfer Protocol) – upload file vào một file share
22 SSH (Secure Shell) – đăng nhập vào một Linux instance
22 SFTP (Secure File Transfer Protocol) – upload file, đi qua SSH
80 HTTP – truy cập website không được bảo mật
443 HTTPS – truy cập website được bảo mật
3389 RDP (Remote Desktop Protocol) – đăng nhập vào một Windows instance

Sau khi có instance, bạn cần một cách “vào” bên trong nó. SSH là một trong những chức năng quan trọng nhất — nó cho bạn điều khiển một máy ở xa hoàn toàn bằng dòng lệnh, qua port 22.

Cách kết nối phụ thuộc hệ điều hành bạn đang dùng:

Hệ điều hành của bạn Công cụ
Mac SSH
Linux SSH
Windows < 10 Putty
Windows ≥ 10 SSH
Tất cả EC2 Instance Connect

Trên Mac/Linux, bạn có thể cấu hình OpenSSH ~/.ssh/config để việc SSH vào các instance trở nên thuận tiện hơn. Trên Windows cũ, bạn dùng công cụ miễn phí Putty và cấu hình các tham số cần thiết.

Nếu SSH không chạy, thứ tự xử lý được slide gợi ý là: xem lại hướng dẫn xem có bỏ sót bước nào, đọc troubleshooting guide, rồi thử EC2 Instance Connect. Chỉ cần một trong ba cách (SSH, Putty, EC2 Instance Connect) hoạt động là đủ.

EC2 Instance Connect cho bạn kết nối vào EC2 instance ngay trong trình duyệt, và không cần dùng tới file key đã tải về.

  • Cách hoạt động: AWS upload một key tạm thời lên EC2 để xác thực cho phiên kết nối đó.
  • chỉ hoạt động sẵn (out-of-the-box) với Amazon Linux 2.
  • Vẫn phải đảm bảo port 22 đang mở! — vì bên dưới nó vẫn là SSH.

Cùng một cấu hình máy, AWS cho bạn nhiều cách trả tiền khác nhau tùy theo bạn dùng bao lâu, ổn định hay không, và có chịu được gián đoạn hay không. Đây là chủ đề ra đề rất dày.

  • On-Demand Instances — tải ngắn, giá dự đoán được, trả theo giây.
  • Reserved (1 và 3 năm), gồm hai kiểu:
    • Reserved Instances — tải dài hạn.
    • Convertible Reserved Instances — tải dài hạn nhưng cần linh hoạt về instance.
  • Savings Plans (1 và 3 năm) — cam kết một lượng usage, dùng cho tải dài hạn.
  • Spot Instances — tải ngắn, rẻ, có thể bị mất instance (ít tin cậy hơn).
  • Dedicated Hosts — thuê nguyên một máy chủ vật lý, kiểm soát được instance placement.
  • Dedicated Instanceskhông có khách hàng nào khác dùng chung phần cứng với bạn.
  • Capacity Reservations — giữ chỗ capacity ở một AZ cụ thể, trong khoảng thời gian bất kỳ.

Trả tiền cho đúng những gì bạn dùng: Linux hoặc Windows tính tiền theo giây, sau phút đầu tiên; mọi hệ điều hành khác tính theo giờ. On-Demand có chi phí cao nhất nhưng không phải trả trướckhông có cam kết dài hạn. Được khuyến nghị cho tải công việc ngắn hạn, không bị gián đoạn, và bạn không thể dự đoán được ứng dụng sẽ hành xử thế nào.

Giảm giá tới 72% so với On-Demand. Cơ chế: bạn reserve một bộ thuộc tính instance cụ thểInstance Type, Region, Tenancy, OS.

  • Thời hạn: 1 năm (giảm giá) hoặc 3 năm (giảm giá nhiều hơn).
  • Cách trả tiền: No Upfront (giảm ít nhất) → Partial UpfrontAll Upfront (giảm nhiều nhất).
  • Phạm vi (scope): Regional hoặc Zonal — bản Zonal giữ luôn capacity trong một AZ.
  • Được khuyến nghị cho ứng dụng có mức dùng ổn định (steady-state) — cứ nghĩ tới database.
  • Bạn mua và bán được trên Reserved Instance Marketplace.

Convertible Reserved Instance là biến thể linh hoạt hơn: bạn được đổi EC2 instance type, instance family, OS, scope và tenancy, đánh đổi là mức giảm giá thấp hơn — tới 66%.

Cũng giảm tới 72%, bằng với Reserved Instances, nhưng cơ chế cam kết khác hẳn: bạn cam kết một mức usage tính bằng tiền (ví dụ 10 USD/giờ trong 1 hoặc 3 năm) thay vì cam kết một loại instance.

  • Phần dùng vượt quá Savings Plan sẽ bị tính theo giá On-Demand.
  • Bị khóa vào một instance family và một Region cụ thể (ví dụ M5 tại us-east-1).
  • Nhưng linh hoạt về: Instance Size (m5.xlarge, m5.2xlarge…), OS (Linux, Windows), Tenancy (Host, Dedicated, Default).

Giảm tới 90% so với On-Demand — loại instance tiết kiệm nhất trên AWS. Cái giá phải trả: đây là những instance bạn có thể “mất” bất cứ lúc nào, nếu mức giá tối đa (max price) bạn đặt thấp hơn spot price hiện tại.

Phù hợp với các tải công việc chịu được lỗi (resilient to failure):

  • Batch jobs.
  • Data analysis.
  • Image processing.
  • Mọi tải công việc phân tán.
  • Tải công việc linh hoạt về thời điểm bắt đầu và kết thúc.

không phù hợp cho các công việc quan trọng (critical jobs) hoặc database.

Đây là một máy chủ vật lý mà toàn bộ capacity EC2 của nó dành riêng cho bạn. Nó giải quyết hai nhóm yêu cầu: compliance, và việc dùng lại các license phần mềm ràng buộc với server (license theo per-socket, per-core, per-VM).

  • Cách mua: On-demand (trả theo giây khi host đang hoạt động) hoặc Reserved 1/3 năm (No Upfront, Partial Upfront, All Upfront).
  • Đây là phương án đắt nhất.
  • Hữu dụng cho phần mềm có mô hình license phức tạp (BYOL – Bring Your Own License), hoặc cho công ty có yêu cầu chặt về quy định / compliance.

Instance chạy trên phần cứng dành riêng cho bạn, nhưng lưu ý hai điểm khác biệt so với Dedicated Hosts:

  • có thể dùng chung phần cứng với các instance khác trong cùng account của bạn.
  • Bạn không kiểm soát được instance placement — vị trí phần cứng chỉ có thể thay đổi sau khi Stop / Start instance.

Giữ chỗ capacity On-Demand tại một AZ cụ thể, trong khoảng thời gian bất kỳ. Lợi ích: bạn luôn có capacity EC2 khi cần.

  • Không có cam kết thời gian (tạo/hủy bất cứ lúc nào), và không có giảm giá.
  • Bị tính tiền theo giá On-Demand dù bạn có chạy instance hay không.
  • Có thể kết hợp với Regional Reserved Instances và Savings Plans để được hưởng giảm giá.
  • Phù hợp cho tải công việc ngắn hạn, không bị gián đoạn, và cần nằm ở một AZ cụ thể.
Phương án Bạn lấy capacity bằng cách nào
On-Demand Bật lúc nào cũng được, giữ bao lâu cũng được, trả đủ giá cho thời gian đã dùng
Reserved Cam kết 1 hoặc 3 năm cho một cấu hình instance cụ thể để đổi lấy đơn giá thấp hơn
Savings Plans Cam kết một mức chi cố định theo giờ trong 1 hoặc 3 năm, dùng được cho mọi size, OS và tenancy trong cùng instance family
Spot Instances Đặt một mức giá tối đa cho capacity dư — rẻ nhất, nhưng AWS lấy lại instance bất cứ lúc nào
Dedicated Hosts Giữ nguyên một máy chủ vật lý cho account của bạn, và kiểm soát được instance nằm ở đâu
Capacity Reservations Giữ chỗ capacity trong một AZ để luôn có khi cần, trả theo giá On-Demand dù chạy hay không

Ví dụ trong slide, cho instance m4.large tại us-east-1:

Price Type Price (per hour)
On-Demand $0.10
Spot Instance (Spot Price) $0.038 – $0.039 (giảm tới 61%)
Reserved Instance (1 năm) $0.062 (No Upfront) – $0.058 (All Upfront)
Reserved Instance (3 năm) $0.043 (No Upfront) – $0.037 (All Upfront)
EC2 Savings Plan (1 năm) $0.062 (No Upfront) – $0.058 (All Upfront)
Reserved Convertible Instance (1 năm) $0.071 (No Upfront) – $0.066 (All Upfront)
Dedicated Host Giá On-Demand
Dedicated Host Reservation Giảm tới 70%
Capacity Reservations Giá On-Demand

Đọc bảng này theo xu hướng thì rõ ràng: Spot rẻ nhất, Reserved 3 năm All Upfront rẻ gần bằng Spot nhưng đòi cam kết ba năm, Convertible RI đắt hơn RI thường vì được đổi instance, còn Capacity Reservation không rẻ hơn On-Demand một xu nào — nó bán cho bạn sự chắc chắn, không phải sự tiết kiệm.

Spot xứng đáng được nói riêng vì cơ chế vận hành của nó khác hẳn các phương án còn lại.

  • Giảm giá tới 90% so với On-Demand.
  • Bạn định nghĩa một max spot price và giữ được instance trong khi spot price hiện tại còn nhỏ hơn max price của bạn.
  • Spot price theo giờ biến động theo cung và capacity.
  • Nếu spot price hiện tại vượt max price của bạn, bạn có thể chọn stop hoặc terminate instance, với thời gian ân hạn 2 phút.
  • Một chiến lược khác là Spot Block: “chặn” một spot instance trong một khung thời gian xác định (1 đến 6 giờ) mà không bị gián đoạn — dù trong các tình huống hiếm, instance vẫn có thể bị thu hồi.
  • Dùng cho batch jobs, data analysis, hoặc tải công việc chịu được lỗi; không tốt cho critical jobs hoặc database.

Đây là một trình tự dễ làm sai trong thực tế và dễ ra đề:

  • Bạn chỉ hủy được Spot Instance request đang ở trạng thái open, active hoặc disabled.
  • Hủy một Spot Request KHÔNG terminate các instance.
  • Đúng thứ tự phải là: hủy Spot Request trước, rồi mới terminate các Spot Instance liên quan.

Spot Fleet = một tập các Spot Instances + (tùy chọn) các On-Demand Instances. Spot Fleet sẽ cố đạt tới target capacity trong giới hạn về giá mà bạn đặt ra.

  • Bạn định nghĩa các launch pool khả dụng: instance type (ví dụ m5.large), OS, Availability Zone.
  • Có thể khai báo nhiều launch pool để fleet tự chọn.
  • Spot Fleet dừng khởi tạo instance khi đạt tới capacity hoặc tới max cost.

Bốn chiến lược phân bổ (allocation strategy) Spot Instances:

Chiến lược Cách chọn pool Phù hợp với
lowestPrice Pool có giá thấp nhất Tối ưu chi phí, tải ngắn
diversified Phân bổ đều trên tất cả các pool Tốt cho tính sẵn sàng, tải dài
capacityOptimized Pool có capacity tối ưu cho số instance cần Khi ưu tiên lấy đủ capacity
priceCapacityOptimized (được khuyến nghị) Chọn các pool có capacity khả dụng cao nhất, rồi trong đó chọn pool có giá thấp nhất Lựa chọn tốt nhất cho phần lớn tải công việc

Nói gọn: Spot Fleet cho phép bạn tự động yêu cầu Spot Instances với giá thấp nhất.

Chủ đề Cần nhớ
EC2 Elastic Compute Cloud, mô hình IaaS; đi kèm EBS (ổ đĩa), ELB (phân phối tải), ASG (auto scaling)
Cấu hình instance OS + CPU + RAM + storage (EBS/EFS qua mạng, Instance Store theo phần cứng) + network card + security group + User Data
EC2 User Data Chỉ chạy một lần ở lần start đầu tiên, chạy với quyền root
Quy ước tên m5.2xlarge = instance class + generation + size
Bốn họ instance General Purpose (cân bằng), Compute Optimized (CPU), Memory Optimized (RAM), Storage Optimized (đĩa local, đọc/ghi tuần tự)
Security Group Chỉ có allow rule, khóa theo Region + VPC, gắn được cho nhiều instance, mặc định chặn hết inbound / cho phép hết outbound, tham chiếu được security group khác làm nguồn
Chẩn đoán time out → lỗi security group; connection refused → lỗi ứng dụng hoặc ứng dụng chưa chạy
Port 21 FTP · 22 SSH/SFTP · 80 HTTP · 443 HTTPS · 3389 RDP
EC2 Instance Connect Vào qua browser, không cần key file, AWS upload key tạm — nhưng port 22 vẫn phải mở, và chỉ chạy sẵn với Amazon Linux 2
On-Demand Đắt nhất nhưng không cam kết; Linux/Windows tính theo giây sau phút đầu, OS khác tính theo giờ
Reserved Giảm tới 72%; reserve instance type / Region / tenancy / OS trong 1 hoặc 3 năm; Regional hoặc Zonal; bán lại được trên Marketplace; Convertible tới 66%
Savings Plans Giảm tới 72%; cam kết mức chi theo giờ; khóa instance family + Region, linh hoạt về size, OS, tenancy
Spot Giảm tới 90%; mất instance khi spot price vượt max price, có 2 phút ân hạn; không dùng cho critical job hay database
Dedicated Hosts Nguyên một máy chủ vật lý, BYOL và compliance, đắt nhất, mua On-Demand hoặc Reserved 1/3 năm
Dedicated Instances Phần cứng dành riêng nhưng dùng chung được với instance khác trong cùng account, không kiểm soát placement
Capacity Reservations Giữ chỗ trong một AZ, không cam kết, không giảm giá, trả giá On-Demand dù chạy hay không
Spot Request Hủy Spot Request trước, terminate instance sau; Spot Block 1–6 giờ không bị gián đoạn
Spot Fleet Target capacity trong giới hạn giá, nhiều launch pool; bốn chiến lược lowestPrice, diversified, capacityOptimized, priceCapacityOptimized (được khuyến nghị)