Amazon EC2 – Mức Associate
1. Private IP so với Public IP
Phần tiêu đề “1. Private IP so với Public IP”Trước khi bàn tới kiến trúc mạng trên AWS, cần thống nhất lại nền tảng: mạng có hai loại địa chỉ IP, IPv4 và IPv6.
- IPv4: dạng
1.160.10.240— bốn nhóm số, mỗi nhóm nằm trong khoảng[0-255]. - IPv6: dạng
3ffe:1900:4545:3:200:f8ff:fe21:67cf.
Ở trình độ này ta chỉ làm việc với IPv4, vì nó vẫn là định dạng phổ biến nhất trên Internet. IPv6 mới hơn và giải quyết các bài toán của Internet of Things (IoT). IPv4 cho phép 3,7 tỷ địa chỉ khác nhau trong không gian public — con số này nghe lớn nhưng không đủ cho toàn thế giới, và đó chính là lý do khái niệm “private IP” tồn tại.
Khác biệt cơ bản
Phần tiêu đề “Khác biệt cơ bản”| Public IP | Private IP | |
|---|---|---|
| Phạm vi nhận dạng | Máy được nhận dạng trên Internet (WWW) | Máy chỉ được nhận dạng trong mạng nội bộ |
| Tính duy nhất | Phải duy nhất trên toàn bộ Internet — không có hai máy cùng một public IP | Phải duy nhất trong mạng nội bộ đó; nhưng hai mạng nội bộ khác nhau (hai công ty khác nhau) có thể dùng cùng dải IP |
| Định vị địa lý | Dễ dàng geo-locate | — |
| Ra Internet | Trực tiếp | Phải đi qua NAT + internet gateway (một dạng proxy) |
| Dải địa chỉ | — | Chỉ một dải IP xác định được dùng làm private IP |
Trong ví dụ của slide: Company A và Company B đều dùng cùng một mạng nội bộ 192.168.0.1/22 — hoàn toàn hợp lệ vì đó là private IP. Nhưng các Internet Gateway và các server hướng ra Internet của họ thì phải có public IP riêng biệt, không trùng nhau (149.140.72.10, 253.144.139.205, 79.216.59.75, 211.139.37.43).
Trên EC2 thì thế nào
Phần tiêu đề “Trên EC2 thì thế nào”Mặc định, một máy EC2 được cấp cả hai:
- Một private IP cho mạng nội bộ của AWS.
- Một public IP cho Internet.
Điều này dẫn tới hai hệ quả thực tế mà bạn sẽ gặp ngay khi làm thực hành:
- Khi SSH vào EC2 từ máy cá nhân, bạn không dùng được private IP (vì bạn không nằm trong cùng mạng đó) — chỉ dùng được public IP.
- Nếu máy bị stop rồi start lại, public IP có thể thay đổi.
2. Elastic IP
Phần tiêu đề “2. Elastic IP”Vấn đề vừa nêu là lý do Elastic IP tồn tại: nếu bạn cần một public IP cố định cho instance của mình, bạn cần một Elastic IP.
- Elastic IP là một public IPv4 mà bạn sở hữu, chừng nào bạn chưa xóa nó.
- Bạn gắn nó cho một instance tại một thời điểm.
- Nhờ Elastic IP, bạn có thể che lấp sự cố của một instance hoặc của phần mềm, bằng cách trỏ nhanh địa chỉ đó sang một instance khác trong account của mình.
- Bạn chỉ có 5 Elastic IP trong một account (có thể xin AWS tăng giới hạn).
Nhưng đây là điểm quan trọng nhất, và cũng là phần rất dễ ra đề: nhìn chung hãy cố tránh dùng Elastic IP, vì chúng thường phản ánh những quyết định kiến trúc kém. Hai lựa chọn tốt hơn:
- Dùng một public IP bất kỳ và đăng ký một tên DNS trỏ tới nó.
- Hoặc dùng một Load Balancer và không dùng public IP cho instance nào cả.
3. Placement Groups
Phần tiêu đề “3. Placement Groups”Đôi khi bạn cần kiểm soát chiến lược đặt EC2 instance — chúng nằm gần nhau hay xa nhau trên phần cứng vật lý. Chiến lược đó được khai báo bằng placement group, và khi tạo một placement group bạn phải chọn một trong ba strategy.
Cluster
Phần tiêu đề “Cluster”Cluster dồn các instance vào một nhóm có độ trễ thấp, trong cùng một Availability Zone.
- Ưu điểm: mạng rất tốt — băng thông 10 Gbps giữa các instance khi bật Enhanced Networking (được khuyến nghị).
- Nhược điểm: nếu AZ đó gặp sự cố, toàn bộ instance chết cùng lúc.
- Use case: công việc Big Data cần hoàn thành nhanh; ứng dụng cần độ trễ cực thấp và throughput mạng cao.
Spread
Phần tiêu đề “Spread”Spread rải các instance ra các phần cứng vật lý khác nhau — ngược hoàn toàn với Cluster.
- Ưu điểm: trải được ra nhiều Availability Zone; giảm rủi ro chết đồng thời; các EC2 instance nằm trên phần cứng vật lý khác nhau.
- Nhược điểm: giới hạn 7 instance mỗi AZ mỗi placement group.
- Use case: ứng dụng cần tối đa hóa tính sẵn sàng cao; ứng dụng trọng yếu mà mỗi instance phải được cách ly khỏi sự cố của các instance khác.
Sơ đồ của slide minh họa rõ: ở us-east-1a có hai instance nằm trên Hardware 1 và Hardware 2, ở us-east-1b nằm trên Hardware 3 và Hardware 4, ở us-east-1c nằm trên Hardware 5 và Hardware 6 — mỗi instance một phần cứng riêng.
Partition
Phần tiêu đề “Partition”Partition rải các instance ra nhiều partition khác nhau, và các partition này dựa trên các bộ rack khác nhau trong một AZ. Đây là lựa chọn dành cho các hệ thống phân tán quy mô lớn.
- Tối đa 7 partition mỗi AZ.
- Trải được ra nhiều AZ trong cùng một Region.
- Scale tới hàng trăm EC2 instance mỗi group.
- Các instance trong một partition không dùng chung rack với instance của các partition khác.
- Một partition gặp sự cố có thể ảnh hưởng nhiều EC2 nhưng không ảnh hưởng các partition khác.
- EC2 instance truy cập được thông tin partition của mình dưới dạng metadata — điều này cho phép ứng dụng tự biết mình đang nằm ở đâu để phân bổ dữ liệu cho hợp lý.
- Use case: HDFS, HBase, Cassandra, Kafka.
So sánh ba strategy
Phần tiêu đề “So sánh ba strategy”| Strategy | Cách đặt instance | Giới hạn | Use case tiêu biểu |
|---|---|---|---|
| Cluster | Dồn vào một nhóm độ trễ thấp, một AZ duy nhất | Cả nhóm chết nếu AZ chết | Big Data cần xong nhanh, ứng dụng độ trễ cực thấp |
| Spread | Rải trên các phần cứng khác nhau, nhiều AZ | Tối đa 7 instance / AZ / group | Tối đa hóa HA, ứng dụng trọng yếu cần cách ly |
| Partition | Rải theo partition dựa trên các bộ rack khác nhau, nhiều AZ trong cùng Region | Tối đa 7 partition / AZ, hàng trăm instance | HDFS, HBase, Cassandra, Kafka |
4. Elastic Network Interfaces (ENI)
Phần tiêu đề “4. Elastic Network Interfaces (ENI)”ENI là một thành phần logic trong một VPC, đại diện cho một card mạng ảo — hãy hình dung nó như một chiếc card mạng bạn có thể tháo ra cắm vào máy khác.
Một ENI có các thuộc tính sau:
- Một primary private IPv4, và một hoặc nhiều secondary IPv4.
- Một Elastic IP (IPv4) cho mỗi private IPv4.
- Một Public IPv4.
- Một hoặc nhiều security group.
- Một địa chỉ MAC.
Hai đặc điểm về vận hành là phần quan trọng nhất:
- Bạn có thể tạo ENI một cách độc lập và gắn chúng vào EC2 instance ngay lúc đang chạy (on the fly) — tức là di chuyển chúng — để làm failover.
- ENI bị ràng buộc vào một Availability Zone cụ thể.
Trong sơ đồ của slide: một EC2 có Eth0 là primary ENI (192.168.0.31) và Eth1 là secondary ENI (192.168.0.42); chiếc Eth0 primary ENI của một instance khác thì có thể được chuyển đi — nhưng chỉ trong phạm vi cùng một Availability Zone.
5. EC2 Hibernate
Phần tiêu đề “5. EC2 Hibernate”Bạn đã biết hai hành động stop và terminate, và sự khác nhau về dữ liệu giữa chúng:
- Stop — dữ liệu trên đĩa (EBS) được giữ nguyên cho lần start tiếp theo.
- Terminate — mọi EBS volume (root) được đặt cấu hình sẽ bị hủy thì mất.
Khi start một instance, chuyện sau đây xảy ra:
- Lần start đầu tiên: OS boot và EC2 User Data script được chạy.
- Các lần start sau: OS chỉ boot lên.
Và đây là vấn đề: sau khi OS boot, ứng dụng của bạn mới khởi động, cache mới được làm nóng (warmed up) — và việc đó có thể mất rất nhiều thời gian!
Hibernate giải quyết gì
Phần tiêu đề “Hibernate giải quyết gì”EC2 Hibernate giải quyết đúng chỗ đau đó:
- Trạng thái bộ nhớ (RAM) được bảo toàn.
- Instance boot nhanh hơn rất nhiều — vì OS không bị stop / restart.
- Bên dưới nắp máy: trạng thái RAM được ghi vào một file trong root EBS volume.
- Root EBS volume bắt buộc phải được mã hóa (encrypted).
Use case:
- Các tiến trình xử lý chạy dài (long-running processing).
- Cần lưu lại trạng thái RAM.
- Các dịch vụ mất nhiều thời gian để khởi tạo.
Vòng trạng thái theo sơ đồ của slide: từ Running, khi bạn ra lệnh Hibernate, máy chuyển qua Stopping rồi Stopped — nhưng khác với stop thường, phần RAM đã được ghi xuống root EBS volume đã mã hóa. Khi Start lại, RAM được nạp trở lại và máy về Running mà không phải khởi động lại OS.
Những điều cần biết
Phần tiêu đề “Những điều cần biết”Đây là danh sách điều kiện, và chính các con số ở đây là chỗ hay ra đề:
- Họ instance được hỗ trợ: C3, C4, C5, I3, M3, M4, R3, R4, T2, T3, …
- Dung lượng RAM của instance: phải nhỏ hơn 150 GB.
- Kích cỡ instance: không hỗ trợ cho bare metal instance.
- AMI: Amazon Linux 2, Linux AMI, Ubuntu, RHEL, CentOS & Windows…
- Root Volume: phải là EBS, phải được mã hóa, không phải instance store, và phải lớn.
- Khả dụng cho On-Demand, Reserved và Spot Instances.
- Một instance KHÔNG thể hibernate quá 60 ngày.
Tóm tắt nhanh
Phần tiêu đề “Tóm tắt nhanh”| Chủ đề | Cần nhớ |
|---|---|
| IPv4 | Định dạng đang dùng ở đây, cho 3,7 tỷ địa chỉ public; IPv6 mới hơn, giải quyết bài toán IoT |
| Public IP | Duy nhất trên toàn Internet, geo-locate được |
| Private IP | Chỉ duy nhất trong mạng nội bộ, hai mạng khác nhau dùng trùng dải được, ra Internet qua NAT + internet gateway |
| Địa chỉ trên EC2 | Mặc định có cả private IP lẫn public IP; SSH từ ngoài phải dùng public IP; stop/start có thể làm public IP thay đổi |
| Elastic IP | Public IPv4 bạn sở hữu, gắn cho một instance tại một thời điểm, giới hạn 5 cái mỗi account, remap được khi instance chết — nhưng nên tránh, hãy dùng DNS hoặc Load Balancer |
| Placement Group – Cluster | Một AZ, mạng 10 Gbps với Enhanced Networking; AZ chết là chết hết |
| Placement Group – Spread | Khác phần cứng, trải nhiều AZ, tối đa 7 instance / AZ / group, dùng cho HA tối đa |
| Placement Group – Partition | Tối đa 7 partition / AZ, hàng trăm instance, partition không dùng chung rack, instance đọc được partition qua metadata; HDFS, HBase, Cassandra, Kafka |
| ENI | Card mạng ảo trong VPC: primary + secondary IPv4, một Elastic IP cho mỗi private IPv4, public IPv4, security group, MAC address; gắn/tháo on the fly để failover; bị khóa vào một AZ |
| Stop vs Terminate | Stop giữ dữ liệu EBS; Terminate xóa các volume được đánh dấu xóa |
| EC2 Hibernate | Giữ nguyên trạng thái RAM vào root EBS volume đã mã hóa, boot nhanh vì OS không restart |
| Điều kiện Hibernate | RAM < 150 GB, không hỗ trợ bare metal, root volume là EBS đã mã hóa, dùng được với On-Demand / Reserved / Spot, không quá 60 ngày |