Chương ngắn nhưng đậm đặc · Gần như câu nào cũng ra thi

EC2 — SAA Level

Chỉ bốn chủ đề, không có bài nào thừa. Placement Groups và Hibernate là hai nội dung xuất hiện gần như chắc chắn trong đề, thường dưới dạng scenario ngắn có từ khóa rất rõ.

{ "Section": "06 — EC2 Solutions Architect Associate Level", "BonChuDe": [ "Private / Public / Elastic IP", "Placement Groups: Cluster · Spread · Partition", "Elastic Network Interfaces (ENI)", "EC2 Hibernate" ], "CauHoiKinhDien": "Chọn placement group nào cho tình huống X?" }
6.1Ra thi

Private vs Public vs Elastic IP

Khóa học tập trung vào IPv4 — vẫn là chuẩn phổ biến nhất trên internet (khoảng 3,7 tỷ địa chỉ công khai). IPv6 sinh ra để giải bài toán cạn địa chỉ, hay gặp trong IoT, nhưng đề SAA hỏi rất ít.

Public IP vs Private IP

Public IPPrivate IP
Phạm vi duy nhấtDuy nhất trên toàn internetChỉ duy nhất trong mạng riêng (VPC)
Truy cập từ internetĐượcKhông — phải đi qua NAT + Internet Gateway
Định vị địa lýCó thể tra ra vị tríKhông
Dải địa chỉDo AWS/ISP cấpChỉ dùng dải riêng: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

Hai máy trong cùng một mạng riêng nói chuyện với nhau bằng private IP. Máy trong hai mạng riêng khác nhau có thể trùng private IP mà không xung đột — vì chúng không nhìn thấy nhau.

Elastic IP

Vấn đề: khi bạn stop rồi start lại một EC2 instance, public IP của nó thay đổi. Private IP thì giữ nguyên. Nếu có thứ gì đó đang trỏ vào public IP cũ, nó gãy.

Elastic IP là địa chỉ IPv4 công khai cố định, bạn sở hữu chừng nào chưa xóa nó đi.

  • Mỗi lúc chỉ gắn được vào một instance.
  • Có thể chuyển nhanh sang instance khác để che giấu sự cố — instance hỏng thì trỏ IP sang máy dự phòng.
  • Mặc định mỗi tài khoản được 5 Elastic IP (xin AWS tăng thêm được).
Lời khuyên ngược đời nhưng ra thi

AWS và bài giảng đều khuyên hạn chế dùng Elastic IP — nó thường phản ánh thiết kế kém. Hai cách thay thế tốt hơn: dùng public IP ngẫu nhiên rồi gắn tên miền DNS, hoặc tốt nhất là đặt instance sau một Load Balancer và không cần public IP nào cả.

Nối với Section 5

Elastic IP không dùng vẫn bị tính tiền (~$0.005/giờ). Đây là lý do phổ biến khiến hóa đơn phát sinh dù đã stop hết instance.

Chi tiết dễ bị hỏi

Bản thân instance không biết public IP của mình. Chạy ifconfig hay ip addr bên trong máy chỉ thấy private IP; public IP được Internet Gateway ánh xạ ở bên ngoài. Muốn biết public IP thì hỏi instance metadata.

Ví dụ thực tế

Hệ thống của bạn gọi API của một ngân hàng, và phía ngân hàng chỉ chấp nhận request từ danh sách IP đã đăng ký. Nếu dùng public IP tự động thì mỗi lần stop/start là kết nối gãy và phải làm thủ tục xin whitelist lại. Đây là một trong số ít trường hợp Elastic IP thực sự hợp lý — hoặc tốt hơn, cho toàn bộ instance đi ra qua một NAT Gateway và chỉ đăng ký IP của NAT Gateway đó.

6.2Ra thi nặng

Placement Groups

Placement Group cho bạn quyền tác động vào vị trí vật lý của instance trên hạ tầng AWS. Có ba chiến lược, và đề thi ra dưới dạng "tình huống này chọn cái nào".

Cluster — dồn sát nhau

Tất cả instance nằm trong cùng một AZ, trên cùng cụm rack, sát nhau nhất có thể.

ƯuNhược
Mạng cực nhanh, độ trễ cực thấp, băng thông tới 10 Gbps giữa các instanceRack hỏng là chết cả cụm — rủi ro cao nhất trong ba loại

Dùng khi: job big data cần chạy xong thật nhanh, ứng dụng HPC cần độ trễ mạng cực thấp và thông lượng cực cao.

Spread — trải ra xa nhau

Mỗi instance nằm trên một phần cứng vật lý khác nhau, và nhóm này trải được qua nhiều AZ.

ƯuNhược
Rủi ro hỏng đồng thời thấp nhất — mỗi máy một phần cứng riêngGiới hạn 7 instance mỗi AZ cho mỗi placement group

Dùng khi: ứng dụng cần tính sẵn sàng tối đa, hoặc các instance quan trọng phải được cô lập hoàn toàn khỏi lỗi của nhau.

Partition — chia theo cụm

Instance được chia vào các partition, mỗi partition nằm trên một tập rack riêng. Tối đa 7 partition mỗi AZ, trải được qua nhiều AZ trong cùng region, và chứa được hàng trăm instance.

Một partition hỏng có thể ảnh hưởng nhiều instance trong partition đó, nhưng không lan sang partition khác. Instance đọc được thông tin partition của mình qua metadata — nhờ vậy phần mềm phân tán tự biết cách đặt bản sao dữ liệu cho an toàn.

Dùng khi: hệ thống phân tán lớn hiểu khái niệm partition — HDFS, HBase, Cassandra, Kafka.

Bảng so sánh — học thuộc bảng này là đủ

ClusterSpreadPartition
Mục tiêuHiệu năng mạngTính sẵn sàngCô lập theo nhóm, quy mô lớn
Phạm vi AZMột AZ duy nhấtNhiều AZNhiều AZ
Giới hạnKhông giới hạn cứng, nhưng cùng một cụm rack7 instance / AZ7 partition / AZ, hàng trăm instance
Rủi roCao — hỏng cùng lúcThấp nhấtTrung bình — hỏng theo partition
Từ khóa đề"low latency", "high throughput", "HPC", "10 Gbps""maximize availability", "critical instances", "isolate failures""Hadoop", "Cassandra", "Kafka", "large distributed workload"
Bổ sung ngoài bài giảng

Instance đang chạy không đổi placement group được — phải stop instance rồi mới chuyển vào hoặc ra khỏi nhóm (qua CLI/SDK). Với Cluster, nếu gặp lỗi thiếu capacity khi thêm máy, cách xử lý là stop rồi start lại toàn bộ instance trong nhóm để AWS xếp lại chỗ.

Ví dụ thực tế

Cluster: cụm 20 node Spark chạy job ETL 2 tiếng mỗi đêm, giai đoạn shuffle dữ liệu giữa các node là nút cổ chai → dồn sát nhau giúp rút ngắn thời gian chạy rõ rệt.

Spread: 5 node ZooKeeper giữ quorum cho cụm. Hai node cùng chết một lúc là mất quorum, cả hệ thống dừng — nên mỗi node phải nằm trên phần cứng riêng.

Partition: cụm Kafka 30 broker. Mỗi partition đặt trên tập rack riêng nên mất một rack chỉ mất một phần bản sao, các bản sao còn lại vẫn phục vụ được.

6.3Ra thi

Elastic Network Interfaces (ENI)

ENI là card mạng ảo trong VPC. Mọi EC2 instance đều có ít nhất một ENI (card chính), và bạn gắn thêm được card phụ.

Một ENI mang theo những gì

  • Một private IPv4 chính + một hoặc nhiều private IPv4 phụ
  • Một Elastic IP cho mỗi private IPv4
  • Một public IPv4
  • Một hoặc nhiều Security Group
  • Một địa chỉ MAC
Điểm mấu chốt ra thi

ENI tồn tại độc lập với instance. Bạn tạo ENI riêng, gắn vào máy A; khi máy A hỏng thì tháo ra gắn sang máy B. Toàn bộ IP, Elastic IP, security group và MAC address đi theo card — đây là cách làm failover nhanh mà không cần đổi cấu hình mạng.

Giới hạn phải nhớ

ENI bị khóa trong một Availability Zone. Không thể tháo ENI ở AZ này gắn sang instance ở AZ khác. Nếu đề nói "chuyển sang AZ khác" thì ENI không phải đáp án.

Ứng dụng thực tế khác: tách riêng card mạng quản trị và card mạng ứng dụng, hoặc giữ một địa chỉ IP cố định "trôi" giữa các máy trong cùng AZ (floating IP).

Ví dụ thực tế

Cặp firewall ảo chạy active/standby trong cùng một AZ: địa chỉ IP mà mọi client gọi tới nằm trên một ENI riêng, không thuộc về máy nào cố định. Khi máy active chết, script tháo ENI và gắn sang máy standby trong vài giây — client vẫn gọi đúng IP cũ, không phải đổi DNS rồi ngồi chờ TTL hết hạn. Đây là mô hình các thiết bị mạng ảo trên AWS Marketplace hay dùng.

6.4Ra thi nặng

EC2 Hibernate

Trước hết, ôn lại ba trạng thái quen thuộc:

Hành độngĐiều gì xảy ra
StopDữ liệu trên EBS root volume được giữ nguyên. RAM mất. Khởi động lại phải boot OS từ đầu.
TerminateEBS root volume bị xóa (theo mặc định). Mất sạch.
HibernateGiữ nguyên cả nội dung RAM. Khởi động lại nhanh hơn hẳn vì OS không phải boot lại.

Hibernate hoạt động thế nào

Toàn bộ nội dung RAM được ghi thành file trong EBS root volume. Khi start lại, RAM được nạp ngược trở lại, tiến trình chạy tiếp đúng chỗ đang dở — hệ điều hành không hề bị tắt và bật lại.

Dùng khi: tiến trình xử lý dài cần giữ nguyên trạng thái, dịch vụ mất nhiều thời gian khởi tạo (nạp cache, dựng index), muốn máy sẵn sàng phục vụ ngay khi bật.

Điều kiện — phần đề thi thích hỏi

Yêu cầuChi tiết
Root volumePhải là EBS, phải được mã hóa, và đủ lớn để chứa toàn bộ RAM. Không dùng được Instance Store.
Dung lượng RAMPhải nhỏ hơn 150 GB
Instance familyCác dòng C, M, R, T (nhiều thế hệ). Không hỗ trợ bare metal.
Purchasing optionDùng được với On-Demand, Reserved và Spot
Thời gian tối đaKhông hibernate quá 60 ngày liên tục
Hệ điều hànhAmazon Linux, Ubuntu, RHEL, CentOS, Windows…
Ba con số cần nhớ

RAM < 150 GB · tối đa 60 ngày · root volume EBS đã mã hóa. Đề hay ra câu "tại sao không bật được hibernate" và đáp án nằm ở một trong ba điều kiện này.

Về chi phí

Máy đang hibernate không tính tiền compute, nhưng vẫn tính tiền EBS — và volume phải lớn hơn bình thường để chứa file RAM. Hibernate tiết kiệm thời gian khởi động, không phải tiết kiệm tiền lưu trữ.

Ví dụ thực tế

Máy phân tích dữ liệu của team data mất 12 phút mỗi lần khởi động vì phải nạp 40 GB dataset vào RAM và dựng index. Hibernate lúc 18h, sáng hôm sau bật lên là làm việc được ngay. Trường hợp tương tự: server Java có heap lớn cần thời gian warm-up JIT, hoặc dịch vụ phải nạp một cache khổng lồ trước khi phục vụ request đầu tiên.

6.5Tổng hợp

Vòng đời instance — nhìn một lượt

StopHibernateTerminate
RAMMấtGiữMất
EBS root volumeGiữGiữ (chứa thêm file RAM)Xóa theo mặc định
Private IPGiữGiữMất
Public IP (không Elastic)Đổi khi start lạiĐổi khi start lạiMất
Phí computeKhôngKhôngKhông
Phí EBSKhông
Thời gian khởi động lạiBoot đầy đủNhanh — nạp lại RAM
Lưu ý

Instance Store (ổ gắn cứng vào máy vật lý) mất dữ liệu khi stop hoặc hibernate, không chỉ khi terminate. Đây là lý do hibernate không dùng được với root volume kiểu Instance Store. Chi tiết ở Section 7.

6.6Chốt bài

Map từ khóa & cheat sheet

Đề nhắc đến…Nghĩ ngay tới
"lowest network latency, high throughput, HPC"Cluster placement group
"maximize high availability, critical instances"Spread placement group (7 instance/AZ)
"Hadoop, Cassandra, Kafka, HDFS"Partition placement group
"giữ nguyên trạng thái RAM, khởi động lại nhanh"EC2 Hibernate
"dịch vụ mất nhiều thời gian khởi tạo"EC2 Hibernate
"không bật được hibernate"Kiểm tra RAM < 150 GB, root EBS đã mã hóa, không quá 60 ngày
"public IP đổi sau khi stop/start"Elastic IP — nhưng ưu tiên DNS hoặc Load Balancer
"chuyển card mạng sang instance khác để failover"ENI (chỉ trong cùng AZ)
"hóa đơn có phí IP dù đã stop instance"Elastic IP chưa giải phóng

Cheat sheet 45 giây

  • Stop/start → public IP đổi, private IP giữ nguyên. Elastic IP để cố định, nhưng nên tránh.
  • Elastic IP: 1 instance tại một thời điểm, mặc định 5 cái/tài khoản, không dùng vẫn mất tiền.
  • Cluster = nhanh (1 AZ, 10 Gbps, rủi ro cao). Spread = an toàn (7 máy/AZ). Partition = quy mô lớn (7 partition/AZ, Kafka/Cassandra).
  • ENI = card mạng ảo, mang theo IP + SG + MAC, khóa trong một AZ, tháo lắp được để failover.
  • Hibernate giữ RAM, boot nhanh; cần root EBS mã hóa, RAM < 150 GB, tối đa 60 ngày.
  • Hibernate không tính phí compute nhưng vẫn tính phí EBS.
Năm câu tự kiểm tra trước khi qua file quiz

1. Cụm 12 máy chạy job Spark cần băng thông mạng tối đa giữa các node. Placement group nào?

2. Cần 10 instance quan trọng, mỗi cái phải nằm trên phần cứng riêng, trong cùng một AZ. Có làm được bằng Spread không?

3. Instance có 256 GB RAM, bật hibernate được không?

4. Máy A hỏng, muốn giữ nguyên IP và security group để chuyển sang máy B ở AZ khác. Dùng ENI được không?

5. Sau khi stop rồi start một instance, thứ gì thay đổi?


Đáp án: (1) Cluster — ưu tiên độ trễ thấp và thông lượng cao trong một AZ. (2) Không — Spread giới hạn 7 instance mỗi AZ cho mỗi placement group; muốn 10 máy thì phải trải qua ít nhất 2 AZ. (3) Không — hibernate yêu cầu RAM dưới 150 GB. (4) Không — ENI bị khóa trong một AZ; sang AZ khác phải dùng cách khác (Elastic IP hoặc load balancer). (5) Public IP đổi; private IP, dữ liệu EBS giữ nguyên; RAM mất.