1. Tổng quan về Instance Group
Instance Group là một tài nguyên cơ bản trong Google Cloud Compute Engine, cho phép bạn quản lý một tập hợp các Virtual Machine (VM) instances như một đơn vị duy nhất. Mục đích chính của Instance Group là:
- Tăng khả năng mở rộng (Scalability): Tự động thêm hoặc xóa VM dựa trên tải công việc.
- Tăng khả năng chịu lỗi (Fault Tolerance): Tự động thay thế các VM bị lỗi hoặc không phản hồi.
- Cân bằng tải (Load Balancing): Phân phối lưu lượng truy cập qua nhiều VM trong nhóm.
- Triển khai ứng dụng (Application Deployment): Quản lý việc triển khai và cập nhật ứng dụng trên quy mô lớn.
2. Các loại Instance Group
Google Cloud cung cấp ba loại Instance Group chính, mỗi loại phục vụ một mục đích khác nhau:
2.1. Managed Instance Group (MIG) - Nhóm phiên bản được quản lý
MIG là loại được sử dụng phổ biến nhất vì nó cung cấp khả năng tự động hóa cao. MIG tự động quản lý các VM trong nhóm, bao gồm tạo, xóa, cập nhật và sửa chữa VM. MIG có hai biến thể chính:
a) New managed instance group (stateless)
Mục đích: Được thiết kế cho các ứng dụng không trạng thái (stateless serving) và xử lý hàng loạt (batch processing). Điều này có nghĩa là các ứng dụng này không lưu trữ dữ liệu cần được duy trì trên từng VM cụ thể. Nếu một VM bị xóa hoặc thay thế, ứng dụng vẫn có thể hoạt động bình thường trên một VM mới mà không mất dữ liệu hay trạng thái.
Ưu điểm:
- Tự động quản lý: Bao gồm cập nhật (updates), triển khai theo khu vực (regional deployments), cân bằng tải (load balancing), tự động mở rộng (autoscaling), và tự động sửa chữa (autohealing).
- Khả năng mở rộng linh hoạt: Dễ dàng điều chỉnh số lượng VM để đáp ứng nhu cầu.
- Khả năng chịu lỗi cao: Tự động thay thế các VM bị lỗi, đảm bảo ứng dụng luôn sẵn sàng.
Trường hợp sử dụng: Web servers, API gateways, microservices, batch processing workers (ví dụ: một hàng đợi tin nhắn và các worker xử lý tin nhắn đó).
b) New managed instance group (stateful)
Mục đích: Dành cho các ứng dụng có dữ liệu hoặc cấu hình cần được duy trì (persistent data or configurations) trên từng VM cụ thể, chẳng hạn như cơ sở dữ liệu (databases) hoặc các ứng dụng kế thừa (legacy applications) không được thiết kế cho kiến trúc không trạng thái.
Đặc điểm: MIG stateful cho phép bạn duy trì tên VM, đĩa khởi động (boot disks), và đĩa dữ liệu (data disks) của từng VM ngay cả khi VM đó bị khởi động lại, sửa chữa, hoặc cập nhật. Bạn có thể cấu hình các "per-instance configuration" để chỉ định các thuộc tính riêng biệt cho từng VM trong nhóm.
Ưu điểm:
- Duy trì trạng thái: Bảo toàn dữ liệu và cấu hình quan trọng.
- Tính linh hoạt: Vẫn tận dụng được một số tính năng tự động của MIG như cân bằng tải, nhưng với sự kiểm soát chặt chẽ hơn về trạng thái của từng VM.
Trường hợp sử dụng: Cơ sở dữ liệu phân tán (ví dụ: Cassandra, MongoDB), các ứng dụng kế thừa yêu cầu trạng thái trên máy chủ, các dịch vụ cần địa chỉ IP hoặc tên máy cụ thể.
2.2. New unmanaged instance group - Nhóm phiên bản không được quản lý
Mục đích: Đây là một tập hợp các VM mà bạn tự thêm vào và quản lý thủ công. Google Cloud không tự động tạo, xóa, hoặc sửa chữa các VM trong nhóm này.
Đặc điểm: Chủ yếu được sử dụng để cân bằng tải cho một nhóm các VM hiện có mà bạn muốn quản lý riêng lẻ hoặc đã có cơ chế quản lý riêng.
Ưu điểm:
- Kiểm soát hoàn toàn: Bạn có toàn quyền kiểm soát từng VM trong nhóm.
- Tương thích: Hữu ích khi bạn muốn đưa các VM hiện có hoặc VM được tạo thủ công vào một bộ cân bằng tải.
Hạn chế: Không có tính năng tự động mở rộng, tự sửa chữa hay cập nhật tự động. Bạn phải tự tay thực hiện các tác vụ này.
Trường hợp sử dụng: Khi bạn có các VM hiện có và muốn đặt chúng sau một bộ cân bằng tải mà không cần các tính năng tự động của MIG, hoặc khi bạn cần kiểm soát rất cụ thể về vòng đời của từng VM.
3. Cấu hình chi tiết Instance Group
Bây giờ chúng ta sẽ đi sâu vào các tùy chọn cấu hình được hiển thị trong giao diện:
3.1. General Information (Thông tin chung)
- Name (Tên): Tên của Instance Group. Lưu ý quan trọng: Tên này là vĩnh viễn (permanent) và không thể thay đổi sau khi tạo.
- Description (Mô tả): Mô tả tùy chọn để bạn dễ dàng nhận diện mục đích của Instance Group.
3.2. Instance Template (Mẫu phiên bản)
Instance template (us-east1-template): Đây là một bản blueprint cho các VM trong nhóm. Nó định nghĩa các thuộc tính của VM như:
- Machine type (Loại máy): (ví dụ: e2-micro) - định nghĩa số lượng vCPU và bộ nhớ.
- Boot disk image (Hình ảnh đĩa khởi động): (ví dụ: debian-12-bookworm-v20250513) - hệ điều hành và các phần mềm cơ bản.
- Network configuration (Cấu hình mạng): Virtual Private Cloud (VPC), subnet, firewall rules.
- Access scopes (Phạm vi truy cập): Quyền của VM đối với các dịch vụ GCP khác (ví dụ: Cloud Storage, Cloud SQL).
- Metadata: Các cặp khóa-giá trị có thể được sử dụng để truyền dữ liệu cấu hình hoặc script khởi động vào VM.
Global instance template warning: "You've selected a global instance template. To lower impact of outages outside your region, use a regional instance template instead."
- Giải thích: Global instance template có thể được sử dụng để tạo VM ở bất kỳ khu vực (region) nào. Tuy nhiên, nếu bạn chỉ định một template ở cấp độ toàn cầu, nó có thể gây ra vấn đề nếu có sự cố toàn cầu ảnh hưởng đến khả năng truy cập template.
- Lời khuyên: Để tăng tính khả dụng và giảm thiểu tác động của sự cố ngoài khu vực của bạn, tốt nhất nên sử dụng regional instance template. Regional template được tạo trong một khu vực cụ thể và có thể được sử dụng để tạo VM trong bất kỳ zone nào thuộc khu vực đó, giúp giảm rủi ro phụ thuộc vào một tài nguyên toàn cầu duy nhất.
- Link Learn More: Creating instance templates
3.3. Number of Instances (Số lượng phiên bản)
Number of instances: Số lượng VM ban đầu bạn muốn có trong Instance Group. (Nếu Autoscaling được bật, đây sẽ là số lượng tối thiểu ban đầu).
Use resize request to create VMs all at once:
- Giải thích: Tính năng này cho phép bạn yêu cầu tạo tất cả các VM cần thiết cùng một lúc, thay vì từng VM một. Điều này đặc biệt hữu ích khi bạn cần một số lượng lớn VM xuất hiện đồng thời, ví dụ cho các tác vụ xử lý song song hoặc khởi động một cụm dịch vụ lớn. Nó giúp cải thiện khả năng thu được tài nguyên, đặc biệt là các loại máy có nhu cầu cao.
- Cách hoạt động: Nếu bạn yêu cầu một lượng lớn tài nguyên và Compute Engine không thể cung cấp tất cả ngay lập tức, nó sẽ đợi cho đến khi có đủ tài nguyên để phân bổ tất cả cùng một lúc.
- Link Learn More: Resize requests for managed instance groups
Instance flexibility / Instance selections:
Giải thích: Tính năng này cho phép bạn chỉ định nhiều loại máy (machine types) hoặc thậm chí nhiều instance templates khác nhau cho MIG của bạn. Khi bật tính năng này, MIG sẽ cố gắng tạo VM bằng cách sử dụng các tùy chọn bạn đã chọn, ưu tiên những loại được xếp hạng cao hơn hoặc những loại có sẵn và tiết kiệm chi phí hơn (ví dụ: Spot VMs).
Lợi ích:
- Cải thiện khả năng thu được tài nguyên: Nếu loại máy ưa thích không có sẵn, MIG có thể thử các loại máy khác.
- Tối ưu hóa chi phí: Có thể sử dụng kết hợp các loại máy tiêu chuẩn và Spot VMs để giảm chi phí tổng thể.
Instance selections: Cho phép bạn tạo các nhóm máy (ví dụ: nhóm loại máy E2, nhóm loại máy N2) và xếp hạng chúng theo thứ tự ưu tiên. MIG sẽ cố gắng sử dụng các lựa chọn ưu tiên cao hơn trước.
Link Learn More: Instance flexibility
3.4. Location (Vị trí)
Single zone / Multiple zones:
- Single zone: Tất cả các VM trong Instance Group sẽ được triển khai trong một zone cụ thể (ví dụ: us-east1-b). Điều này đơn giản hơn để quản lý nhưng có điểm lỗi duy nhất (single point of failure) nếu zone đó gặp sự cố.
- Multiple zones (Regional MIGs): VM sẽ được phân phối trên nhiều zone trong một khu vực (region). Đây là phương pháp được khuyến nghị để tăng cường tính sẵn sàng cao (High Availability) và khả năng chịu lỗi. Nếu một zone gặp sự cố, các VM ở các zone khác vẫn tiếp tục hoạt động.
- Link Learn More: Regional Managed Instance Groups
Region (Khu vực): (ví dụ: us-east1 (South Carolina)) - Khu vực địa lý nơi Instance Group sẽ được tạo.
Zones (Vùng): (ví dụ: us-east1-b, us-east1-c, and us-east1-d) - Các zone cụ thể trong khu vực đã chọn mà VM sẽ được phân phối.
Target distribution shape (Hình dạng phân phối mục tiêu):
- Even (Đồng đều): Tùy chọn mặc định và được khuyến nghị. MIG sẽ cố gắng phân phối số lượng VM bằng nhau trên các zone đã chọn. Điều này tối đa hóa tính sẵn sàng và khả năng chịu lỗi.
- Balanced: Phân phối VM dựa trên khả năng có sẵn của tài nguyên và quotas.
- Any (Bất kỳ): Không đảm bảo phân phối đều, MIG sẽ tạo VM ở bất kỳ zone nào có sẵn tài nguyên.
Instance redistribution (Phân phối lại phiên bản):
- Allow instance redistribution: Khi được bật, Compute Engine có thể tự động di chuyển VM từ một zone này sang zone khác trong cùng một khu vực (hoặc thậm chí từ một khu vực sang khu vực khác nếu bạn đã cấu hình), ví dụ để tối ưu hóa việc sử dụng tài nguyên hoặc để thay thế một VM trong một zone bị ảnh hưởng bởi sự cố. Điều này giúp duy trì hình dạng phân phối mong muốn của bạn.
- Link Learn More: Instance redistribution
3.5. Autoscaling (Tự động mở rộng)
Autoscaling là một tính năng cốt lõi của Managed Instance Group, cho phép nhóm tự động thêm (scale out) hoặc xóa (scale in) các VM để đáp ứng nhu cầu tải công việc.
Autoscaling mode (Chế độ tự động mở rộng):
- Off: Không tự động mở rộng. Số lượng VM sẽ được giữ nguyên theo số lượng bạn đã cấu hình hoặc điều chỉnh thủ công.
- On: add and remove instances to the group: Tự động mở rộng dựa trên các tín hiệu (signals) bạn định nghĩa.
- On: add instances only: Chỉ tự động mở rộng (scale out) khi tải tăng lên, nhưng không tự động giảm (scale in). Hữu ích cho các trường hợp bạn muốn duy trì số lượng VM tối thiểu ngay cả khi tải thấp.
Minimum number of instances (Số lượng phiên bản tối thiểu): Số lượng VM ít nhất mà Instance Group sẽ luôn duy trì, ngay cả khi tải rất thấp.
- Lời khuyên: "To maximize availability, the minimum number of instances should be at least equal to the number of zones. Additional instances will be placed in different zones." Nếu bạn sử dụng Regional MIG với 3 zone, bạn nên đặt tối thiểu 3 VM để đảm bảo mỗi zone có ít nhất một VM, tăng cường tính sẵn sàng.
Maximum number of instances (Số lượng phiên bản tối đa): Số lượng VM nhiều nhất mà Instance Group có thể mở rộng tới. Đây là giới hạn để kiểm soát chi phí và tài nguyên sử dụng.
Autoscaling signals (Tín hiệu tự động mở rộng): Các tiêu chí mà autoscaler sử dụng để quyết định khi nào cần mở rộng hoặc thu hẹp.
Signal type (Loại tín hiệu):
- CPU utilization (Mức sử dụng CPU): (ví dụ: Target CPU utilization 60%) - Phổ biến nhất. Khi mức sử dụng CPU trung bình của nhóm vượt quá ngưỡng mục tiêu, MIG sẽ thêm VM. Khi xuống dưới ngưỡng, nó sẽ xóa VM.
- HTTP Load Balancing utilization: Dựa trên lưu lượng truy cập HTTP/S đến qua Load Balancer.
- Stackdriver Monitoring metrics: Sử dụng bất kỳ số liệu tùy chỉnh nào từ Cloud Monitoring.
- Queue-based metrics (ví dụ: Pub/Sub backlog): Mở rộng dựa trên độ dài hàng đợi tin nhắn.
Link Learn More: Autoscaling MIGs
Predictive autoscaling (Tự động mở rộng dự đoán):
- Mục đích: Tính năng này sử dụng dữ liệu lịch sử về tải công việc của bạn (trong ít nhất 3 ngày) để dự đoán nhu cầu tài nguyên trong tương lai. Thay vì chỉ phản ứng với tải hiện tại, nó sẽ chủ động mở rộng trước khi tải tăng lên, giúp đảm bảo ứng dụng luôn có đủ tài nguyên và tránh tình trạng chậm trễ.
- Optimize for availability: Khi chọn tùy chọn này, Predictive Autoscaling sẽ ưu tiên tính sẵn sàng, mở rộng trước để tránh thiếu hụt tài nguyên.
- Lưu ý: Cần thời gian thu thập dữ liệu lịch sử để hoạt động chính xác.
- Link Learn More: Predictive autoscaling
Autoscaling schedules (Lịch trình tự động mở rộng): Cho phép bạn định cấu hình các khoảng thời gian cụ thể (ví dụ: giờ cao điểm hàng ngày, cuối tuần) mà autoscaler nên duy trì một số lượng VM tối thiểu hoặc tối đa khác nhau, bất kể tải hiện tại. Hữu ích cho các sự kiện đã biết trước.
Initialization period (Thời gian khởi tạo):
- Mục đích: Khoảng thời gian (tính bằng giây) sau khi một VM mới khởi động, trong đó autoscaler sẽ không xem xét mức sử dụng CPU hoặc các tín hiệu khác của VM đó khi đưa ra quyết định mở rộng. Điều này là để tránh việc autoscaler phản ứng quá sớm với việc VM mới chưa sẵn sàng xử lý tải và do đó CPU có thể thấp, hoặc ngược lại, CPU cao do các tác vụ khởi động.
- Lợi ích: Đảm bảo autoscaler chỉ dựa vào các VM đã ổn định và sẵn sàng phục vụ khi đánh giá tải của nhóm.
- Link Learn More: Setting the initialization period for a managed instance group
Scale-in controls (Kiểm soát thu hẹp):
- Mục đích: Cấu hình cách MIG thu hẹp (scale in) để tránh tình trạng giảm số lượng VM quá nhanh, gây ra gián đoạn dịch vụ. Bạn có thể định nghĩa khoảng thời gian bảo vệ (warmup period) để đảm bảo các VM không bị xóa quá sớm sau khi được tạo hoặc đang xử lý tải.
- Link Learn More: Configure scale-in controls
3.6. VM Instance Lifecycle (Vòng đời phiên bản VM)
Phần này định nghĩa hành vi của MIG khi các VM bị lỗi, cần sửa chữa hoặc cập nhật.
Action on failure (Hành động khi thất bại):
- Default action on failure: Repair instance (Sửa chữa phiên bản): Khi một VM trong nhóm được phát hiện là không khỏe mạnh (ví dụ: không phản hồi kiểm tra sức khỏe), MIG sẽ cố gắng sửa chữa nó. Đối với MIG stateful, "sửa chữa" có thể liên quan đến việc khởi động lại VM hoặc tạo lại nó với các đĩa đã được duy trì. Đối với MIG stateless, nó thường là tạo lại VM mới.
- Link Learn More: Autohealing MIGs
Autohealing (Tự sửa chữa):
- Health check (Kiểm tra sức khỏe): Đây là một yếu tố quan trọng của autohealing. Một health check định nghĩa các tiêu chí để xác định xem một VM có "khỏe mạnh" hay không (ví dụ: phản hồi trên một cổng cụ thể, trạng thái HTTP 200 OK). Nếu một VM không vượt qua health check trong một khoảng thời gian nhất định, nó sẽ được coi là không khỏe mạnh và hành động "Action on failure" sẽ được thực hiện.
- "Compute Engine will recreate VM instances only when they're not running.": Điều này hơi khác biệt. Thông thường, autohealing kích hoạt khi health check thất bại, ngay cả khi VM đang chạy nhưng ứng dụng không phản hồi. Câu nói này có thể ám chỉ một cài đặt cơ bản hoặc một điều kiện cụ thể liên quan đến trạng thái của VM (ví dụ: VM bị sập nguồn).
- On failed health check: Default action: Hành động mặc định khi health check thất bại là sửa chữa hoặc tạo lại VM.
- Link Learn More: Setting up health checks
Updates during VM instance repair (Cập nhật trong quá trình sửa chữa phiên bản VM):
- Keep the same instance configuration: Khi một VM bị sửa chữa, nó sẽ được tạo lại với cùng một instance template và cấu hình riêng cho từng phiên bản (per-instance configuration) đã được sử dụng để tạo nó ban đầu. Điều này đảm bảo tính nhất quán.
- Update the instance configuration: Khi một VM bị sửa chữa, nó sẽ áp dụng instance template và cấu hình riêng cho từng phiên bản mới nhất (nếu có). Điều này hữu ích khi bạn muốn cập nhật dần dần nhóm của mình mỗi khi có sự cố. Đây cũng là cách để "cuộn" (roll out) các thay đổi cấu hình mới cho các VM bị lỗi.
- Link Learn More: Applying new configurations to existing VMs
3.7. Port Mapping (Ánh xạ cổng)
- Port mapping: Cho phép bạn ánh xạ một "tên cổng" (named port) với một số cổng cụ thể trên các VM trong Instance Group. Điều này rất quan trọng khi bạn sử dụng Load Balancer (Cân bằng tải) với Instance Group.
- Cách sử dụng: Khi bạn tạo một Load Balancer, bạn sẽ trỏ nó đến Instance Group và chỉ định "tên cổng" đã được ánh xạ. Load Balancer sau đó sẽ biết cách gửi lưu lượng truy cập đến các cổng dịch vụ thích hợp trên các VM trong nhóm.
- Ví dụ: Bạn có thể định nghĩa một named port http-service ánh xạ tới cổng 80 trên các VM. Khi Load Balancer gửi traffic đến http-service, nó sẽ gửi đến cổng 80 của các VM.
4. Equivalent Code (Mã tương đương)
Mặc dù giao diện người dùng cung cấp một cách trực quan để cấu hình Instance Group, tất cả các cấu hình này đều có thể được thực hiện thông qua gcloud CLI (Command-Line Interface) hoặc thông qua Google Cloud APIs (ví dụ: với Python, Java, Node.js, Go client libraries).
Ví dụ cơ bản về gcloud CLI để tạo một Managed Instance Group:
# Tạo một instance template
gcloud compute instance-templates create my-web-template \
--machine-type=e2-medium \
--image-family=debian-12 \
--image-project=debian-cloud \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--metadata=startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install -y apache2
echo \"Hello World from instance \$(hostname)\" | sudo tee /var/www/html/index.html"
# Tạo một regional managed instance group
gcloud compute instance-groups managed create my-web-mig \
--base-instance-name=my-web-instance \
--template=my-web-template \
--size=2 \
--zones=us-east1-b,us-east1-c,us-east1-d \
--region=us-east1
# Cấu hình autoscaling
gcloud compute instance-groups managed set-autoscaling my-web-mig \
--region=us-east1 \
--cool-down-period=60 \
--max-num-replicas=10 \
--min-num-replicas=2 \
--target-cpu-utilization=0.6
# Cấu hình autohealing với health check (cần tạo health check trước)
# gcloud compute health-checks create http my-web-health-check --request-path=/ --port=80
# gcloud compute instance-groups managed update my-web-mig --health-check my-web-health-check --initial-delay 300Bạn có thể tìm thấy các lệnh chi tiết hơn trong tài liệu chính thức của Google Cloud.
5. Tài liệu tham khảo hữu ích và Lời khuyên học tập
Official Google Cloud Documentation: Luôn là nguồn thông tin đáng tin cậy nhất.
Qwiklabs/Google Cloud Skills Boost: Thực hành tạo và cấu hình các loại Instance Group, đặc biệt là Managed Instance Group với autoscaling và autohealing. Thực hành sẽ giúp bạn hiểu sâu hơn về cách chúng hoạt động.
Scenario-based questions: Hãy tự hỏi mình: "Nếu tôi có một ứng dụng X, tôi sẽ sử dụng loại Instance Group nào và cấu hình ra sao?" Ví dụ:
- Một ứng dụng web stateless (API RESTful): MIG stateless, autoscaling theo CPU/HTTP load, regional MIG.
- Một cụm database (ví dụ: MongoDB replica set): MIG stateful, autoscaling thận trọng hoặc không, cấu hình per-instance.
- Một cụm Hadoop đã có sẵn VM: Unmanaged instance group để đặt sau Load Balancer.