Ngân hàng đề — Google Cloud Associate Cloud Engineer

Tìm thấy 449 câu.

Câu 61 IAM
Your organization has created multiple folders, one for each department. In each folder, departments have one or more projects. What would you expect resources within the folder to share?
  1. A IAM roles
  2. B Permissions
  3. C IAM policies
  4. D Service accounts
Xem giải thích

Đáp án

C — IAM POLICIES.

Vì sao đúng

Trong Google Cloud, IAM policy được KẾ THỪA từ trên xuống trong phân cấp tài nguyên — nên mọi thứ trong một folder cùng chịu chính sách gắn ở folder đó.

⚠ Điểm mấu chốt — kế thừa và cộng dồn:

Organization
        ↓  (kế thừa)
Folder  ← gắn IAM policy ở đây
        ↓  (kế thừa)
Project
        ↓  (kế thừa)
Resource (VM, bucket…)
        ↓
    Quyền HIỆU LỰC tại một tài nguyên
      = HỢP của mọi policy từ trên xuống
        ↓
    → gắn một vai trò ở FOLDER
      → mọi project và tài nguyên bên dưới
        đều được hưởng

⚠ Và đây là lý do folder rất hữu ích:

Folder "Phòng Kỹ thuật"
        ↓
    Gán roles/compute.viewer cho
    nhóm ky-thuat@congty.com ở CẤP FOLDER
        ↓
    → mọi project của phòng đó,
      kể cả project TẠO MỚI SAU NÀY,
      đều tự động có quyền
        ↓
    → không phải cấu hình lại từng project

⚠ Vì sao ba phương án kia không đúng:

IAM ROLE (phương án A)
        ↓
    Là một TẬP HỢP QUYỀN — một định nghĩa
    → nó KHÔNG được kế thừa
    → thứ được kế thừa là POLICY (ai giữ vai trò gì)

PERMISSION (phương án B)
        ↓
    Là quyền đơn lẻ trong một role
    → cũng không phải thứ gắn vào tài nguyên

SERVICE ACCOUNT (phương án D)
        ↓
    Là một DANH TÍNH, nằm TRONG một project
    → không lan sang project khác

Vì sao các phương án khác sai

  • B (Permissions) — đây là phương án gần nhất về trực giác vì cuối cùng thì người dùng đúng là có thêm quyền, nhưng permission không phải đơn vị được gắn và kế thừa — nó nằm bên trong một role, và role được gắn thông qua policy.

  • A (IAM roles) — role là định nghĩa một tập quyền, tồn tại độc lập với tài nguyên. Thứ gắn vào tài nguyên và được kế thừa là policy binding (ai giữ role gì).

  • D (Service accounts) — service account là một danh tính thuộc về MỘT project cụ thể, không được chia sẻ tự động qua folder.

Ghi nhớ

⚠ Phân cấp tài nguyên và kế thừa — bảng phải thuộc: | Cấp | Nội dung | |---|---| | Organization | gốc — gắn với tên miền Cloud Identity | | Folder | nhóm project theo phòng ban hoặc môi trường | | Project | ranh giới chính của tài nguyên, quyền, hạn ngạch | | Resource | VM, bucket, bảng… | | IAM policy | KẾ THỪA từ trên xuống, CỘNG DỒN | | Organization Policy | cũng kế thừa, nhưng là ràng buộc cấu hình |

Từ khoá nhận diện:

"tài nguyên trong folder cùng chia sẻ gì" → IAM policy (kế thừa) "cấp quyền cho cả một phòng ban" → gán ở cấp FOLDER "ràng buộc cấu hình cho mọi project" → Organization Policy "từ chối tường minh" → IAM Deny policy "ranh giới tách bạch tuyệt đối" → PROJECT riêng

⚠ IAM policy ↔ Organization policy — đừng lẫn: | | IAM policy | Organization policy | |---|---|---| | Trả lời | "AI được làm GÌ" | "CẤU HÌNH nào được phép" | | Ví dụ | gán roles/compute.viewer cho một nhóm | cấm VM có IP công cộng | | Kế thừa | cộng dồn từ trên xuống | kế thừa, con có thể ghi đè nếu được phép | | Tương đương AWS | ≈ IAM policy | ≈ SCP |

Ba thành phần của một IAM policy binding Nội dung
Member ai — user, group, service account, domain
Role được làm gì — roles/...
Condition (tuỳ chọn) khi nào — thời gian, tiền tố tài nguyên, thuộc tính
Gắn vào một tài nguyên trong phân cấp
Xem gcloud <nhóm> get-iam-policy <tài-nguyên>
Thiết kế phân cấp folder điển hình Nội dung
Theo phòng ban Kỹ thuật, Marketing, Tài chính
Theo môi trường Production, Staging, Development
Kết hợp folder phòng ban → folder môi trường → project
Lợi ích gán quyền và policy MỘT LẦN cho cả nhánh
Giới hạn folder lồng nhau tối đa 10 cấp
Công cụ hiểu quyền hiệu lực Việc
Policy Analyzer ai có quyền gì trên tài nguyên nào
Policy Troubleshooter vì sao một người ĐƯỢC hoặc KHÔNG được làm việc gì
IAM Recommender gợi ý thu hẹp vai trò
Asset Inventory quét toàn bộ tài nguyên và chính sách
get-ancestors-iam-policy xem chính sách kế thừa từ mọi cấp trên

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Policy ở folder là gì | gcloud resource-manager folders get-iam-policy <id> | | Quyền hiệu lực của một người | Policy Troubleshooter trong console | | Project nằm ở folder nào | gcloud projects describe <id> → xem parent |

Và một hệ quả rất quan trọng của việc kế thừa cộng dồn: Google Cloud không có cơ chế "từ chối kế thừa" mặc định như SCP của AWS. Một vai trò gán ở cấp organization sẽ áp cho mọi thứ bên dưới mà project con không gỡ được — nên muốn chặn tường minh, bạn cần IAM Deny policy, một cơ chế riêng biệt và thắng mọi Allow.

Câu 62 Computing Options
The CFO of your company wants to improve an existing data warehouse by migrating it to Google Cloud. They want to minimize operational overhead while ensuring existing SQL tools can be used with the migrated data warehouse. What GCP service would you recommend?
  1. A Cloud Spanner
  2. B Cloud SQL
  3. C BigQuery
  4. D Bigtable
Xem giải thích

Đáp án

C — BigQuery.

Vì sao đúng

Ba từ khoá: kho dữ liệu, ít công vận hành, dùng được công cụ SQL sẵn có.

⚠ Điểm mấu chốt — BigQuery là kho dữ liệu serverless:

BigQuery
        ↓
    KHÔNG có máy chủ nào để quản lý
    → không dựng cụm, không chọn cỡ máy
    → không vá, không mở rộng thủ công
        ↓
    Dùng SQL CHUẨN (GoogleSQL)
        ↓
    → kết nối qua JDBC và ODBC
    → Tableau, Looker, Power BI, dbt đều dùng được

⚠ Kiến trúc tách tính toán khỏi lưu trữ:

Lưu trữ (định dạng cột)  → trả tiền theo GB
Tính toán (slot)         → trả tiền theo TB quét,
                           hoặc mua slot
        ↓
    → lưu petabyte mà chỉ trả tiền
      cho phần thực sự truy vấn

Xem thêm câu #12487 (lô 131): cùng một câu hỏi, cùng đáp án BigQuery. Chỉ khác chữ cái — ở đó là B, ở đây là C. Khoá nhất quán.

Vì sao các phương án khác sai

  • A (Cloud Spanner) — đây là phương án gần nhất về khả năng SQL, nhưng Spanner là CSDL GIAO DỊCH phân tán toàn cầu. Dùng làm kho phân tích là rất đắt và sai mục đích.

  • B (Cloud SQL) — CSDL giao dịch theo Region, không mở rộng cho khối lượng phân tích lớn.

  • D (Bigtable) — NoSQL, KHÔNG hỗ trợ SQL đầy đủ, không kết nối được công cụ BI truyền thống.

Ghi nhớ

⚠ Sáu dịch vụ dữ liệu của GCP — bảng phải thuộc: | Dịch vụ | Loại | Dùng khi | |---|---|---| | BigQuery | kho dữ liệu, OLAP, serverless | phân tích, báo cáo, SQL | | Cloud SQL | quan hệ, OLTP, Region | ứng dụng thông thường | | Cloud Spanner | quan hệ, OLTP, toàn cầu | giao dịch quy mô lớn | | Bigtable | NoSQL cột rộng | ghi lớn, chuỗi thời gian, IoT | | Firestore | NoSQL tài liệu | ứng dụng di động | | Memorystore | Redis / Memcached | cache |

Từ khoá nhận diện:

"data warehouse, phân tích, SQL" → BigQuery "ứng dụng giao dịch" → Cloud SQL "toàn cầu, nhất quán mạnh" → Cloud Spanner "HBase, IoT, chuỗi thời gian" → Bigtable "ứng dụng di động, offline" → Firestore

BigQuery — điểm hay ra thi Nội dung
Serverless không instance để quản
Tính giá on-demand theo TB QUÉT, hoặc capacity (slot)
Lưu trữ active và long-term (không sửa 90 ngày → rẻ hơn)
Partition và cluster giảm mạnh dữ liệu quét
Cache kết quả truy vấn giống hệt trong 24 giờ MIỄN PHÍ
BigQuery ML huấn luyện mô hình bằng SQL
BigQuery Omni truy vấn dữ liệu ở AWS và Azure
Tối ưu chi phí BigQuery Cách
Bỏ SELECT * hiệu quả nhất
Partition theo ngày lọc trong WHERE
Cluster theo cột hay lọc
--dry-run biết trước dữ liệu quét
--maximum_bytes_billed trần cứng mỗi truy vấn
Materialized view cho truy vấn tổng hợp lặp lại
Đưa dữ liệu vào BigQuery Cách
bq load từ Cloud Storage CSV, JSON, Parquet, Avro
Data Transfer Service từ SaaS, từ kho khác, theo lịch
Dataflow / Data Fusion ETL phức tạp
Datastream CDC từ CSDL quan hệ
Storage Write API thời gian thực
External table / BigLake truy vấn tại chỗ, không nạp

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Truy vấn quét bao nhiêu | bq query --dry-run | | Ai tốn nhiều nhất | INFORMATION_SCHEMA.JOBS | | Bảng có partition không | bq show <dataset>.<bang> |

Và một quyết định thiết kế nên làm ngay từ ngày đầu: phân vùng bảng theo ngày. Nó quyết định phần lớn chi phí truy vấn về sau, và thêm phân vùng cho một bảng đã có hàng terabyte là công việc tốn kém hơn nhiều so với khai đúng ngay lúc tạo bảng.

Câu 63 Storage management
The contents of the a Cloud Storage bucket called free-photos-gcp are currently stored in multiregional storage class. You want to change the storage class to nearline. What command would you use?
  1. A gsutil rewrite -s nearline gs://free-photos-gcp
  2. B gsutil migrate --from multiregional --to nearline gs://free-photos-gcp
  3. C gsutil migrate -s nearline gs://free-photos-gcp
  4. D gsutil rewrite -from multiregional --to nearline gs://free-photos-gcp
Xem giải thích

Đáp án

A — gsutil rewrite -s nearline gs://free-photos-gcp

Vì sao đúng

Đổi storage class thực chất là ghi lại (rewrite) đối tượng, và gsutil rewrite với cờ -s là lệnh làm đúng việc đó.

⚠ Điểm mấu chốt — cú pháp đúng của rewrite:

gsutil rewrite -s nearline gs://bucket/**
        ↓
    -s <class>  → khai storage class ĐÍCH
        ↓
    Không có cờ `-from` hay `--to`
        ↓
    → chỉ cần biết class ĐÍCH,
      không cần khai class nguồn

⚠ Đổi class là GHI LẠI đối tượng:

Storage class là thuộc tính của TỪNG ĐỐI TƯỢNG
        ↓
    Đổi class = REWRITE đối tượng đó
        ↓
    → tính phí thao tác ghi
    → với Nearline/Coldline/Archive còn có
      THỜI GIAN LƯU TỐI THIỂU
        ↓
    Xoá hoặc đổi class trước thời hạn tối thiểu
      → vẫn bị tính đủ tiền cho thời gian đó

⚠ Cách TỰ ĐỘNG tốt hơn — Object Lifecycle Management:

Đặt luật vòng đời trên bucket
        ↓
    "Quá 30 ngày  → Nearline"
    "Quá 90 ngày  → Coldline"
    "Quá 365 ngày → Archive"
        ↓
    → Google tự chuyển, KHÔNG tốn phí thao tác
    → không phải chạy lệnh thủ công
        ↓
    Hoặc: Autoclass — Google tự chọn class
    theo mẫu truy cập thật

Xem thêm câu #12463 (lô 131): cùng bài toán đổi storage class sang Nearline, nhưng bộ phương án khác nhau — ở đó đáp án là gcloud storage objects update --storage-class (công cụ mới), ở đây là gsutil rewrite -s (công cụ cũ). CẢ HAI LỆNH ĐỀU HỢP LỆ; mỗi đề chỉ đưa ra một trong hai. Khoá nhất quán, không mâu thuẫn.

Vì sao các phương án khác sai

  • D (gsutil rewrite -from multiregional --to nearline ...) — đây là phương án gần nhất và dùng đúng lệnh rewrite, nhưng cú pháp sai: không có cờ -from và --to. Cờ đúng là -s.

  • B và C (gsutil migrate ...) — không có lệnh gsutil migrate.

Ghi nhớ

⚠ Bốn storage class của Cloud Storage — bảng phải thuộc: | Class | Thời gian lưu tối thiểu | Dùng khi | |---|---|---| | Standard | không có | truy cập thường xuyên | | Nearline | 30 ngày | khoảng 1 lần/tháng | | Coldline | 90 ngày | khoảng 1 lần/quý | | Archive | 365 ngày | dưới 1 lần/năm — rẻ nhất | | Đánh đổi | càng lạnh: lưu càng rẻ, ĐỌC càng đắt | |

Từ khoá nhận diện:

"đổi storage class" → gsutil rewrite -s, hoặc gcloud storage objects update --storage-class "tự động chuyển theo tuổi" → Object Lifecycle Management "không đoán được mẫu truy cập" → Autoclass "gsutil migrate" → KHÔNG TỒN TẠI "lưu trữ dài hạn" → Archive

gsutil ↔ gcloud storage Nội dung
gsutil công cụ CŨ, vẫn dùng được
gcloud storage công cụ MỚI — nhanh hơn đáng kể với khối lượng lớn
Đổi class gsutil rewrite -s <class> ↔ gcloud storage objects update --storage-class=<CLASS>
Song song gsutil -m ↔ gcloud storage mặc định song song
Xu hướng Google khuyến nghị chuyển sang gcloud storage
Object Lifecycle Management Nội dung
Điều kiện age, createdBefore, numNewerVersions, matchesStorageClass
Hành động SetStorageClass hoặc Delete
Chi phí không tính phí thao tác chuyển class
Khai bằng tệp JSON, hoặc console
Kiểm tra gcloud storage buckets describe --format="value(lifecycle)"
Autoclass — lựa chọn hiện đại Nội dung
Việc Google tự chuyển class theo mẫu truy cập thật
Ưu điểm không cần đặt luật, không có phí truy xuất sớm
Phù hợp mẫu truy cập không đoán trước được
Chi phí có phí quản lý nhỏ theo số đối tượng
Bẫy chi phí với class lạnh Nội dung
Thời gian lưu tối thiểu xoá sớm vẫn bị tính đủ
Phí truy xuất Archive đắt nhất khi đọc
Nhiều tệp nhỏ phí thao tác cộng dồn — gộp trước khi lưu
Đổi class hàng loạt tính phí ghi cho từng đối tượng

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Class hiện tại | gcloud storage objects describe gs://bucket/tep | | Bucket có luật vòng đời không | gcloud storage buckets describe gs://bucket | | Chi phí thay đổi ra sao | Billing report, lọc SKU của Cloud Storage |

Và một lời khuyên nên áp dụng thay cho việc chạy lệnh đổi class bằng tay: đặt Object Lifecycle Management ngay từ khi tạo bucket. Nó không tốn phí thao tác chuyển class, chạy tự động mãi mãi, và tránh được tình huống ai đó đổi class hàng loạt cho hàng triệu đối tượng rồi nhận một hoá đơn thao tác ghi ngoài dự kiến.

Câu 64 Computing Options
Your department runs a legacy application on an on premises cluster. The nodes in the cluster are heterogeneous. You want to migrate this cluster to Google Cloud. What Compute Engine resource would you use?
  1. A Network load balancer
  2. B Managed instance groups (MIGs)
  3. C Unmanaged instance group
  4. D Autoscaler
Xem giải thích

Đáp án

C — UNMANAGED INSTANCE GROUP (nhóm instance không được quản lý).

Vì sao đúng

Từ khoá quyết định là "heterogeneous" — các node trong cụm KHÔNG giống nhau.

⚠ Điểm mấu chốt — MIG đòi mọi VM PHẢI GIỐNG HỆT NHAU:

Managed Instance Group (MIG)
        ↓
    Mọi VM tạo từ MỘT instance template
        ↓
    → cùng loại máy, cùng image,
      cùng cấu hình đĩa và mạng
        ↓
    Cụm cũ có node KHÔNG ĐỒNG NHẤT
        ↓
    → không thể mô tả bằng một template duy nhất
    → MIG không dùng được

Unmanaged Instance Group
        ↓
    Bạn TỰ THÊM từng VM vào nhóm
        ↓
    → VM có thể khác nhau hoàn toàn
    → đúng cho ứng dụng cũ đang chuyển lên

⚠ Đánh đổi khi dùng unmanaged group:

KHÔNG có:
    - autoscaling
    - autohealing
    - rolling update
    - regional (nhiều zone)
        ↓
CÓ:
    - dùng làm backend cho load balancer
    - nhóm các VM không đồng nhất lại
        ↓
    → chỉ là một "danh sách VM" để load balancer
      biết gửi lưu lượng tới đâu

⚠ Và đây nên là bước TRUNG GIAN, không phải đích đến:

Giai đoạn 1: LIFT AND SHIFT
        ↓
    Dựng VM giống cụm cũ
    Gom vào unmanaged instance group
    → chạy được ngay, ít rủi ro
        ↓
Giai đoạn 2: CHUẨN HOÁ
        ↓
    Làm cho các node giống nhau
    Dựng custom image hoặc startup script
        ↓
Giai đoạn 3: HIỆN ĐẠI HOÁ
        ↓
    Chuyển sang MIG với instance template
    → có autoscaling, autohealing, rolling update

Vì sao các phương án khác sai

  • B (Managed instance groups) — đây là phương án gần nhất và là lựa chọn tốt hơn về lâu dài, nhưng MIG đòi mọi VM phải giống hệt nhau (tạo từ một template). Cụm có node không đồng nhất không dùng được ngay.

  • A (Network load balancer) — phân phối lưu lượng, không phải cách để nhóm các VM lại. (Nó dùng instance group làm backend, nên đây là hai thứ khác cấp.)

  • D (Autoscaler) — chỉ hoạt động với MIG, và cụm không đồng nhất thì không co giãn tự động được.

Ghi nhớ

⚠ Managed ↔ Unmanaged instance group — bảng phải thuộc: | | Managed (MIG) | Unmanaged | |---|---|---| | VM | giống hệt nhau, từ một template | khác nhau, bạn tự thêm | | Autoscaling | CÓ | KHÔNG | | Autohealing | CÓ | KHÔNG | | Rolling update | CÓ | KHÔNG | | Regional (nhiều zone) | CÓ | không — chỉ một zone | | Làm backend cho LB | có | có | | Dùng khi | ứng dụng hiện đại, co giãn | hệ thống CŨ, máy không đồng nhất |

Từ khoá nhận diện:

"node không đồng nhất", "hệ thống cũ" → unmanaged instance group "tự co giãn, tự thay máy hỏng" → MIG "lift and shift từ tại chỗ" → unmanaged trước, MIG sau "cập nhật không gián đoạn" → MIG với rolling update "chịu được mất một zone" → regional MIG

Lộ trình chuyển cụm cũ lên GCP Giai đoạn
1 Lift and shift — dựng VM giống hệt, unmanaged group
2 Chuẩn hoá — custom image, startup script, cấu hình dạng mã
3 Chuyển sang MIG — có autoscaling và autohealing
4 Container hoá — GKE hoặc Cloud Run nếu phù hợp
Công cụ Migrate to Virtual Machines cho bước 1
Migrate to Virtual Machines — công cụ chuyển đổi Nội dung
Việc chuyển VM từ VMware, AWS, Azure sang Compute Engine
Cơ chế nhân bản đĩa liên tục, cắt chuyển khi sẵn sàng
Ưu điểm gián đoạn rất ngắn, thử nghiệm được trước
Sau khi chuyển vẫn nên chuẩn hoá rồi đưa vào MIG
Custom image — nền tảng của việc chuẩn hoá Nội dung
Tạo từ đĩa của một VM đã cấu hình xong, hoặc snapshot
Dùng cho instance template của MIG
Quản lý image family — luôn lấy bản mới nhất
Công cụ dựng Cloud Build với Packer, hoặc script
Lợi ích máy mới khởi động nhanh, không cài đặt lúc chạy
Load balancer với instance group Nội dung
Backend service nhận cả managed lẫn unmanaged instance group
Health check bắt buộc — quyết định backend nào khoẻ
Named port khai cổng của ứng dụng trên instance group
Dải IP health check 130.211.0.0/22, 35.191.0.0/16
Với unmanaged không có autohealing — máy hỏng phải tự xử lý

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Nhóm thuộc loại nào | gcloud compute instance-groups list — cột MANAGED | | Có những VM nào trong nhóm | gcloud compute instance-groups unmanaged list-instances <ten> | | Backend có khoẻ không | gcloud compute backend-services get-health <ten> |

Và một điều nên nói rõ khi chọn unmanaged instance group: đây là bước đệm, không phải đích đến. Nó cho phép chuyển hệ thống cũ lên cloud nhanh và ít rủi ro, nhưng bạn mất toàn bộ khả năng tự chữa và tự co giãn — nên lộ trình chuẩn hoá để tiến tới MIG nên được lên kế hoạch ngay từ đầu, thay vì để hệ thống dừng lại ở trạng thái tạm này nhiều năm.

Câu 65 Chọn nhiều đáp án IAM
A data warehouse administrator is trying to load data from Cloud Storage to BigQuery. What permissions will they need?
  1. A bigquery.tables.create
  2. B bigquery.tables.updateData
  3. C bigquery.jobs.list
  4. D bigquery.jobs.create
  5. E bigquery.tables.list
Xem giải thích

Đáp án

A, B và D — bigquery.tables.create, bigquery.tables.updateData và bigquery.jobs.create.

Vì sao đúng

Nạp dữ liệu vào BigQuery là chạy một JOB ghi vào một BẢNG — nên cần quyền ở cả hai phía.

⚠ Điểm mấu chốt — nạp dữ liệu cần ba quyền:

bigquery.jobs.create
        ↓
    Mọi thao tác của BigQuery (truy vấn, nạp,
    xuất, sao chép) đều chạy dưới dạng JOB
        ↓
    → không có quyền này thì không làm được gì

bigquery.tables.create
        ↓
    Tạo bảng đích nếu chưa tồn tại

bigquery.tables.updateData
        ↓
    GHI DỮ LIỆU vào bảng
        ↓
    → ba quyền này gộp lại là đủ để `bq load`

⚠ Và đừng quên quyền ở phía Cloud Storage:

Dữ liệu nguồn nằm trong Cloud Storage
        ↓
    Danh tính nạp dữ liệu còn cần:
      storage.objects.get
      storage.objects.list
        ↓
    → thường cấp bằng roles/storage.objectViewer
        ↓
    Thiếu vế này → job thất bại với
      lỗi "Access Denied" trên bucket,
      không phải trên BigQuery

⚠ Vai trò predefined tương ứng:

roles/bigquery.dataEditor
        ↓
    Tạo, sửa, xoá bảng và dữ liệu trong dataset
        ↓
roles/bigquery.jobUser
        ↓
    CHẠY JOB trong project
        ↓
    → cấp CẢ HAI là đủ cho việc nạp dữ liệu
    → đây là cách gán chuẩn, thay vì
      liệt kê từng permission

Vì sao các phương án khác sai

  • C (bigquery.jobs.list) — đây là phương án gần nhất vì cùng thuộc nhóm jobs, nhưng nó chỉ cho XEM DANH SÁCH job, không cho tạo job. Không cần cho việc nạp dữ liệu.

  • E (bigquery.tables.list) — chỉ cho liệt kê bảng trong dataset, không cho tạo hay ghi.

Ghi nhớ

⚠ Các vai trò BigQuery — bảng phải thuộc: | Vai trò | Việc | |---|---| | roles/bigquery.jobUser | CHẠY JOB — truy vấn, nạp, xuất | | roles/bigquery.dataViewer | đọc dữ liệu và siêu dữ liệu | | roles/bigquery.dataEditor | tạo, sửa, xoá bảng và DỮ LIỆU | | roles/bigquery.dataOwner | thêm quyền quản trị dataset | | roles/bigquery.user | jobUser + tạo dataset + xem siêu dữ liệu | | roles/bigquery.admin | toàn quyền | | Kết hợp phổ biến | dataEditor + jobUser để nạp dữ liệu |

Từ khoá nhận diện:

"nạp dữ liệu vào BigQuery" → jobs.create + tables.create + tables.updateData "chỉ chạy truy vấn" → jobUser + dataViewer "đọc dữ liệu" → dataViewer "job thất bại vì quyền trên bucket" → thiếu storage.objectViewer "phân quyền tới từng CỘT" → column-level security với policy tag

Hai vế quyền khi nạp dữ liệu từ Cloud Storage Vế
Phía BigQuery jobs.create, tables.create, tables.updateData
Phía Cloud Storage storage.objects.get, storage.objects.list
Vai trò gọn bigquery.dataEditor + bigquery.jobUser + storage.objectViewer
Bẫy quên vế Cloud Storage — lỗi hiện ra ở job BigQuery nhưng nguyên nhân ở bucket
Phân quyền BigQuery ở nhiều cấp Cấp
Project phổ biến nhất
Dataset hẹp hơn — nên dùng cho dữ liệu nhạy cảm
Table và view IAM ở mức bảng
Cột policy tag với Data Catalog
Dòng row-level security bằng chính sách lọc
Nguyên tắc gán ở mức hẹp nhất đủ dùng
Authorized view — mẫu rất hữu ích Nội dung
Việc cho người dùng đọc VIEW mà không cần quyền trên bảng gốc
Cách làm tạo view ở dataset khác, cấp quyền view truy cập bảng gốc
Lợi ích lọc cột hoặc dòng trước khi chia sẻ
Thay thế mới hơn authorized dataset và row/column-level security
Các cách nạp dữ liệu vào BigQuery Cách
bq load từ Cloud Storage — CSV, JSON, Parquet, Avro, ORC
LOAD DATA (SQL) nạp bằng câu lệnh SQL
Storage Write API thời gian thực, thông lượng cao
Data Transfer Service theo lịch, từ SaaS và kho khác
External table truy vấn tại chỗ, KHÔNG nạp
Chi phí nạp bq load từ Cloud Storage là MIỄN PHÍ (chỉ trả tiền lưu trữ)

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Ai có quyền gì trên dataset | bq show --format=prettyjson <dataset> | | Vì sao job thất bại | bq show -j <job_id> — đọc errorResult | | Vai trò gồm permission nào | gcloud iam roles describe roles/bigquery.dataEditor |

Và một nguyên nhân rất hay gây bối rối khi job nạp dữ liệu thất bại: thiếu quyền ở phía Cloud Storage chứ không phải phía BigQuery. Thông báo lỗi xuất hiện trong job BigQuery nên người gỡ lỗi thường soi đi soi lại quyền trên dataset — trong khi thứ còn thiếu là roles/storage.objectViewer trên bucket chứa tệp nguồn.

Câu 66 Storage management
Your company is migrating an on premises archive of files to Google Cloud. The archived files are infrequently used but on average about once every 30 days. You would like to minimize the cost of storage. What storage option would you recommend?
  1. A Nearline Storage
  2. B Persistent Disks
  3. C Multi-regional storage
  4. D Coldline Storage
Xem giải thích

Đáp án

A — NEARLINE Storage.

Vì sao đúng

Đề cho một con số rất cụ thể: truy cập trung bình khoảng một lần mỗi 30 ngày. Đó chính là ngưỡng thiết kế của Nearline.

⚠ Điểm mấu chốt — mỗi class có một tần suất truy cập mục tiêu:

Standard   → truy cập THƯỜNG XUYÊN
Nearline   → khoảng 1 lần mỗi THÁNG    ← đề này
Coldline   → khoảng 1 lần mỗi QUÝ
Archive    → dưới 1 lần mỗi NĂM
        ↓
    Đề nói "khoảng 30 ngày một lần"
        ↓
    → khớp chính xác với Nearline

⚠ Vì sao chọn class quá lạnh lại TỐN HƠN:

Class càng lạnh
        ↓
    Phí LƯU TRỮ càng rẻ
    Nhưng phí ĐỌC càng ĐẮT
    Và thời gian lưu tối thiểu càng dài
        ↓
Chọn Coldline cho dữ liệu đọc hằng tháng
        ↓
    → tiết kiệm một chút tiền lưu
    → nhưng trả nhiều hơn cho phí đọc
    → và bị ràng buộc 90 ngày tối thiểu
        ↓
    → tổng chi phí có thể CAO HƠN Nearline

⚠ Thời gian lưu tối thiểu — điểm rất hay bị bỏ qua:

Nearline  → 30 ngày
Coldline  → 90 ngày
Archive   → 365 ngày
        ↓
    Xoá hoặc đổi class TRƯỚC thời hạn
        ↓
    → VẪN BỊ TÍNH ĐỦ tiền cho khoảng đó
        ↓
    → dữ liệu thay đổi thường xuyên
      thì không hợp với class lạnh

Vì sao các phương án khác sai

  • D (Coldline Storage) — đây là phương án gần nhất và rẻ hơn về phí lưu trữ, nhưng nó thiết kế cho tần suất một lần mỗi quý. Với dữ liệu đọc hằng tháng, phí truy xuất cao hơn thường xoá sạch khoản tiết kiệm, và thời gian tối thiểu 90 ngày cũng chặt hơn.

  • C (Multi-regional storage) — đây là vị trí lưu trữ, không phải class dành cho dữ liệu ít truy cập. Nó đắt hơn Standard một Region, hoàn toàn sai hướng khi mục tiêu là giảm chi phí.

  • B (Persistent Disks) — đĩa gắn vào VM, đắt hơn nhiều so với Cloud Storage và không phải nơi để lưu trữ dữ liệu lưu trữ dài hạn.

Ghi nhớ

⚠ Bốn storage class — bảng phải thuộc: | Class | Tần suất truy cập | Thời gian lưu tối thiểu | |---|---|---| | Standard | thường xuyên | không có | | Nearline | ~1 lần/tháng | 30 ngày | | Coldline | ~1 lần/quý | 90 ngày | | Archive | <1 lần/năm | 365 ngày | | Đánh đổi | càng lạnh: lưu rẻ hơn, ĐỌC đắt hơn | | | Độ bền và độ trễ | giống nhau ở mọi class — đều truy cập tức thì | |

Từ khoá nhận diện:

"khoảng 1 lần/tháng" → Nearline "khoảng 1 lần/quý" → Coldline "lưu trữ, hầu như không đọc" → Archive "không đoán được mẫu truy cập" → Autoclass "tự chuyển theo tuổi" → Object Lifecycle Management

⚠ Class ↔ Vị trí — hai chiều KHÁC NHAU: | Chiều | Lựa chọn | |---|---| | Storage class | Standard / Nearline / Coldline / Archive | | Vị trí | Region / Dual-region / Multi-region | | Ví dụ | có thể là Nearline ở một Region, hoặc Standard đa Region | | Bẫy | "Multi-regional" KHÔNG phải một storage class — đó là vị trí | | Chọn vị trí theo | nơi người dùng và nơi tính toán, và yêu cầu tuân thủ |

Điểm giống nhau giữa các class — hay bị hiểu nhầm Nội dung
Độ bền giống nhau — 11 số 9
Độ trễ truy cập giống nhau — mili giây, KHÔNG phải chờ như Glacier của AWS
API hoàn toàn giống nhau
Khác nhau chỉ ở giá lưu, giá đọc, và thời gian tối thiểu
So với AWS Archive của GCP truy cập ngay, khác Glacier Deep Archive
Object Lifecycle Management — nên dùng Nội dung
Điều kiện age, createdBefore, numNewerVersions, matchesStorageClass
Hành động SetStorageClass hoặc Delete
Chi phí không tính phí thao tác chuyển class
Ví dụ chuỗi Standard 30 ngày → Nearline 90 ngày → Coldline 365 ngày → Archive
Kèm theo luật Delete sau N năm để dọn dẹp
Autoclass — khi không đoán được mẫu truy cập Nội dung
Việc Google tự chuyển class theo truy cập thật
Ưu điểm không có phí truy xuất sớm, không cần đặt luật
Bật lúc nào khi tạo bucket, hoặc bật sau
Chi phí có phí quản lý nhỏ theo số đối tượng
Phù hợp dữ liệu hỗn tạp, mẫu truy cập thay đổi

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Class hiện tại của bucket | gcloud storage buckets describe gs://<ten> | | Chi phí theo class | Billing report, lọc SKU của Cloud Storage | | Dữ liệu thực sự được đọc bao nhiêu | bật usage log, hoặc chỉ số request trong Cloud Monitoring |

Và một cách tiếp cận thực tế khi chưa chắc chắn về tần suất truy cập: bật Autoclass và để Google tự quyết. Nó tránh được rủi ro lớn nhất của việc chọn tay — đặt dữ liệu vào một class quá lạnh rồi phải trả phí truy xuất cao hơn cả khoản tiết kiệm được, một sai lầm rất khó phát hiện cho tới khi đọc kỹ hoá đơn.

Câu 67 Kubernetes
You will be creating a GKE cluster and want to use Cloud Operations for GKE instead of legacy monitoring and logging. If you create the cluster using a gcloud container clusters create command, what parameter would you specify to explicitly enable Cloud Operations for GKE?
  1. A --enable-cloud-operations
  2. B --enable-stackdriver-kubernetes
  3. C --disable-legacy-monitoring
  4. D --enable-gke-monitor
Xem giải thích

Đáp án

B — --enable-stackdriver-kubernetes

Vì sao đúng

Đây là cờ chính thức của gcloud container clusters create để bật bộ giám sát và ghi log tích hợp cho GKE.

⚠ Điểm mấu chốt — cờ này bật cả hai thứ cùng lúc:

--enable-stackdriver-kubernetes
        ↓
    Bật Cloud Monitoring cho GKE
    + Bật Cloud Logging cho GKE
        ↓
    → thay thế bộ giám sát và ghi log kiểu cũ
        ↓
    Cụm GKE mới ngày nay đã BẬT SẴN
    → cờ này dùng khi cần khai tường minh,
      hoặc bật lại cho cụm cũ

⚠ Ghi nhớ về chất lượng câu hỏi

Tên cờ chứa chữ "stackdriver" — đây là tên CŨ của bộ sản phẩm giám sát. Google đã đổi tên Stackdriver thành Google Cloud Operations suite từ năm 2020, với các thành phần là Cloud Monitoring, Cloud Logging, Cloud Trace, Cloud Profiler, Error Reporting.

Bản thân tên cờ vẫn giữ chữ stackdriver vì lý do tương thích ngược, nên khoá đáp án không đổi. Nhưng với cụm tạo mới hôm nay, cách khai hiện hành là dùng --logging và --monitoring để chọn chính xác thành phần nào được thu thập:

--logging=SYSTEM,WORKLOAD
--monitoring=SYSTEM

Khi gặp đề nhắc tới "Stackdriver", hãy hiểu đó là Cloud Operations dưới tên cũ.

⚠ Cách khai hiện hành — chi tiết hơn:

--logging=<danh sách>
        ↓
    NONE | SYSTEM | WORKLOAD | API_SERVER
    | SCHEDULER | CONTROLLER_MANAGER
        ↓
    → chọn đúng thứ cần, giảm chi phí log

--monitoring=<danh sách>
        ↓
    NONE | SYSTEM | và các thành phần control plane
        ↓
    → SYSTEM là mức tối thiểu nên có

Vì sao các phương án khác sai

  • C (--disable-legacy-monitoring) — đây là phương án gần nhất về ý nghĩa vì đề có nhắc tới "thay vì bộ giám sát kiểu cũ", nhưng cờ này không tồn tại. Việc chuyển đổi được thực hiện bằng cách BẬT bộ mới, không phải bằng một cờ tắt riêng.

  • A (--enable-cloud-operations) — nghe rất hợp lý theo tên sản phẩm hiện hành, nhưng không phải tên cờ thật.

  • D (--enable-gke-monitor) — hoàn toàn bịa.

Ghi nhớ

⚠ Bộ Cloud Operations (tên cũ: Stackdriver) — bảng phải thuộc: | Thành phần | Việc | |---|---| | Cloud Monitoring | chỉ số, dashboard, alert, uptime check | | Cloud Logging | thu thập, lưu trữ, truy vấn log | | Cloud Trace | vết truy tìm phân tán — chặng nào chậm | | Cloud Profiler | hồ sơ CPU và bộ nhớ của ứng dụng đang chạy | | Error Reporting | gom và phân loại lỗi | | Tên cũ | Stackdriver — vẫn xuất hiện trong một số tên cờ và API |

Từ khoá nhận diện:

"Stackdriver" → Cloud Operations dưới tên cũ "bật giám sát cho GKE" → --enable-stackdriver-kubernetes, hoặc --logging và --monitoring "chỉ số và alert" → Cloud Monitoring "log ứng dụng" → Cloud Logging "chặng nào trong microservice chậm" → Cloud Trace

Các thành phần log của GKE Nội dung
SYSTEM kubelet, container runtime, hệ điều hành node
WORKLOAD stdout/stderr của container ứng dụng
API_SERVER log của Kubernetes API server
SCHEDULER, CONTROLLER_MANAGER log control plane
Chi phí WORKLOAD thường chiếm phần lớn
Giảm chi phí exclusion filter, hoặc tắt thành phần không cần
GKE quan sát được những gì Nội dung
Chỉ số hệ thống CPU, bộ nhớ, đĩa của node và pod
Chỉ số Kubernetes trạng thái pod, deployment, node
Log container stdout/stderr — tự động
Managed Service for Prometheus thu chỉ số Prometheus mà không tự vận hành
GKE Dashboard có sẵn trong Cloud Monitoring
Đặt alert cho cụm GKE Chỉ số nên theo dõi
Pod restart count CrashLoopBackOff
Pod Pending kéo dài thiếu tài nguyên hoặc taint chặn
Node not ready node có vấn đề
CPU và bộ nhớ so với requests right-sizing
PersistentVolume gần đầy
Công cụ Cloud Monitoring alerting policy
Giảm chi phí quan sát Cách
Exclusion filter trong Cloud Logging loại log health check, log debug
Chọn thành phần log --logging=SYSTEM,WORKLOAD thay vì tất cả
Đặt thời gian giữ ngắn hơn
Sink sang Cloud Storage lưu trữ dài hạn rẻ hơn
Theo dõi Billing, mục Cloud Logging ingestion

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Cụm đã bật giám sát chưa | gcloud container clusters describe <ten> → loggingConfig, monitoringConfig | | Log có lên không | Logs Explorer, lọc resource.type="k8s_container" | | Chi phí bao nhiêu | Billing, mục Cloud Logging và Cloud Monitoring |

Và một cấu hình rất đáng cân nhắc cho cụm production: khai tường minh --logging=SYSTEM,WORKLOAD thay vì bật tất cả. Log của control plane rất hữu ích khi gỡ lỗi nhưng khối lượng lớn và ít khi được đọc tới — nên bật chúng theo nhu cầu thay vì mặc định sẽ giữ hoá đơn quan sát ở mức hợp lý mà không mất khả năng chẩn đoán ứng dụng.

Câu 68 Managing projects
Your organization has created multiple projects in several folders. You have been assigned to manage them and want to get descriptive information about each project. What command would you use to get metadata about a project?
  1. A gcloud projects describe <PROJECT_NAME>
  2. B gcloud describe projects <PROJECT_NAME>
  3. C gcloud describe projects <PROJECT_ID>
  4. D gcloud projects describe <PROJECT_ID>
Xem giải thích

Đáp án

D — gcloud projects describe <PROJECT_ID>

Vì sao đúng

Hai điều cần đúng: cấu trúc lệnh (nhóm trước, động từ sau), và định danh nên dùng (PROJECT_ID).

⚠ Điểm mấu chốt — thứ tự của lệnh gcloud:

gcloud  projects  describe  <PROJECT_ID>
           ↑          ↑
         nhóm     động từ
        ↓
    → NHÓM đứng TRƯỚC, ĐỘNG TỪ đứng SAU
    → "gcloud describe projects" là SAI thứ tự

⚠ Vì sao PROJECT_ID là định danh chuẩn:

PROJECT_ID
        ↓
    DUY NHẤT TOÀN CẦU
    KHÔNG đổi được sau khi tạo
        ↓
    → định danh ổn định, dùng trong
      hầu hết lệnh, API và tài liệu

PROJECT_NAME
        ↓
    Tên hiển thị, ĐỔI ĐƯỢC,
    KHÔNG cần duy nhất
        ↓
    → hai project có thể trùng tên
    → không dùng làm định danh đáng tin

⚠ Ba định danh của một project:

PROJECT_ID      → duy nhất toàn cầu, bất biến
PROJECT_NAME    → tên hiển thị, đổi được
PROJECT_NUMBER  → số do Google sinh, bất biến
                  (xuất hiện trong service account mặc định)

Xem thêm câu #12462 (lô 131): cùng cấu trúc lệnh gcloud projects describe. Ở đó bộ phương án nhấn vào việc lệnh nhận được cả PROJECT_ID lẫn PROJECT_NAME, còn ở đây bộ phương án chỉ có PROJECT_ID. Cùng một lệnh, cách diễn đạt đáp án khác nhau vì phương án khác nhau — không mâu thuẫn.

Vì sao các phương án khác sai

  • A (gcloud projects describe <PROJECT_NAME>) — đây là phương án gần nhất và cấu trúc lệnh hoàn toàn đúng, nhưng PROJECT_NAME không phải định danh đáng tin: nó đổi được và không cần duy nhất. PROJECT_ID mới là lựa chọn chuẩn.

  • B và C (gcloud describe projects ...) — sai thứ tự: gcloud luôn là nhóm trước, động từ sau. Không có nhóm nào tên describe.

Ghi nhớ

⚠ Cấu trúc lệnh gcloud — bảng phải thuộc: | Thành phần | Ví dụ | |---|---| | Cấu trúc | gcloud <nhóm> [<nhóm con>] <động từ> [tham số] | | Ví dụ | gcloud compute instances list | | Ví dụ | gcloud projects describe my-proj | | Động từ thường gặp | list, describe, create, delete, update | | Trợ giúp | gcloud <nhóm> --help |

Từ khoá nhận diện:

"thông tin chi tiết một tài nguyên" → describe "liệt kê nhiều" → list "gcloud describe ..." → SAI thứ tự, luôn luôn "đổi tên project" → PROJECT_NAME đổi được, PROJECT_ID KHÔNG "định danh dùng trong lệnh" → PROJECT_ID

Ba định danh của project — nhắc lại Nội dung
PROJECT_ID duy nhất toàn cầu, KHÔNG đổi được — dùng trong lệnh
PROJECT_NAME tên hiển thị, đổi được, không cần duy nhất
PROJECT_NUMBER số do Google sinh — xuất hiện trong service account mặc định
Xem cả ba gcloud projects describe <id>
Các lệnh quản lý project Việc
gcloud projects list liệt kê project truy cập được
gcloud projects describe <ID> xem metadata
gcloud projects create <ID> tạo mới
gcloud projects delete <ID> xoá — có 30 ngày để khôi phục
gcloud config set project <ID> đặt project mặc định
gcloud projects get-iam-policy <ID> xem chính sách IAM
gcloud projects move chuyển sang folder khác
Mẹo --format và --filter Ví dụ
--format=json toàn bộ dữ liệu
--format="value(projectNumber)" chỉ lấy một trường — tiện cho script
--format="table(projectId, name, lifecycleState)" chọn cột
--filter="labels.env=prod" lọc theo label
--sort-by=createTime sắp xếp
Sau khi tạo project nên làm gì Bước
1 Đặt vào đúng FOLDER
2 Chuyển owner sang một GROUP, không để cá nhân
3 Gán predefined role cho từng nhóm
4 Gắn label (team, env, cost-center)
5 Gắn billing account
6 Bật audit log cần thiết, đặt budget alert

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Project hiện tại là gì | gcloud config get-value project | | Có những project nào | gcloud projects list | | Project nằm ở folder nào | gcloud projects describe <id> → xem parent |

Và một thói quen nên có khi viết script: luôn dùng PROJECT_ID, không dùng PROJECT_NAME. Tên hiển thị có thể bị ai đó đổi trong lúc dọn dẹp và script sẽ hỏng lặng lẽ — trong khi PROJECT_ID là bất biến từ lúc tạo cho tới khi project bị xoá.

Câu 69 Load balancing
You are using HTTP(S) Load Balancing for a Web application that has several services. Depending on the URL specified by a user, requests are routed to different backend services. What would you use to specify how those request should be routed?
  1. A Traces
  2. B URL maps
  3. C Routes
  4. D Firewall rules
Xem giải thích

Đáp án

B — URL MAPS.

Vì sao đúng

Với HTTP(S) Load Balancing của Google Cloud, URL map là thành phần quyết định request đi tới backend service nào.

⚠ Điểm mấu chốt — URL map là bộ định tuyến tầng 7:

URL map chứa:
        ↓
    Host rule    → theo TÊN MIỀN
      api.example.com  → path matcher A
        ↓
    Path matcher → theo ĐƯỜNG DẪN
      /api/users/*   → backend-service-users
      /api/orders/*  → backend-service-orders
      /*             → backend-service-default
        ↓
    → đúng thứ đề mô tả

⚠ Các thành phần của HTTP(S) Load Balancer:

Forwarding rule       → IP + cổng
        ↓
Target HTTP(S) proxy  → kết thúc TLS
        ↓
URL MAP               → định tuyến      ← đề này
        ↓
Backend service       → health check, thuật toán
        ↓
Backend               → instance group hoặc NEG

Xem thêm câu #12464 (lô 131): cùng một câu hỏi, cùng đáp án URL maps. Chỉ khác chữ cái — ở đó là A, ở đây là B. Khoá nhất quán.

Vì sao các phương án khác sai

  • C (Routes) — đây là phương án gần nhất về tên gọi, nhưng route trong VPC là bảng định tuyến ở TẦNG 3: quyết định gói tin IP đi đâu, không đọc được URL.

  • D (Firewall rules) — cho phép hoặc chặn theo IP, cổng, giao thức. Là kiểm soát truy cập, không phải định tuyến ứng dụng.

  • A (Traces) — Cloud Trace theo dõi độ trễ phân tán, không định tuyến gì.

Ghi nhớ

⚠ Các loại load balancer của GCP — bảng phải thuộc: | Loại | Tầng | Đặc điểm | |---|---|---| | Global external HTTP(S) | 7 | URL map, anycast toàn cầu, Cloud CDN, Cloud Armor | | SSL Proxy / TCP Proxy | 4 | toàn cầu, có kết thúc kết nối | | External passthrough Network LB | 4 | giữ nguyên IP nguồn, theo Region | | Internal HTTP(S) | 7 | trong VPC, có URL map | | Internal passthrough Network LB | 4 | trong VPC |

Từ khoá nhận diện:

"định tuyến theo URL / đường dẫn" → URL map "cân bằng tải toàn cầu cho web" → Global external HTTP(S) LB "giữ IP nguồn client" → passthrough Network LB "chặn theo IP, cổng" → firewall rule "gói tin đi đâu trong VPC" → route

Advanced traffic management của URL map Tính năng
Traffic splitting theo trọng số canary, blue/green
URL rewrite đổi đường dẫn trước khi tới backend
Redirect HTTP → HTTPS, hoặc đổi tên miền
Header transformation thêm, sửa, xoá header
Traffic mirroring gửi bản sao sang backend thử nghiệm
Fault injection thêm độ trễ hoặc lỗi để kiểm thử
Dịch vụ đi kèm HTTP(S) LB Việc
Cloud CDN bật ở BACKEND SERVICE — cache tại edge
Cloud Armor WAF và chống DDoS
IAP xác thực người dùng trước khi vào ứng dụng
Google-managed SSL certificate tự cấp và tự gia hạn
Health check dải 130.211.0.0/22, 35.191.0.0/16
Backend của HTTP(S) LB Loại
Instance group managed hoặc unmanaged
NEG (Network Endpoint Group) zonal, serverless, internet, hybrid
Serverless NEG Cloud Run, App Engine, Cloud Functions
Internet NEG backend nằm NGOÀI Google Cloud
Trộn được nhiều loại backend trong một load balancer

Ba việc kiểm chứng: | Việc | Cách | |---|---| | URL map định tuyến ra sao | gcloud compute url-maps describe <ten> | | Backend có khoẻ không | gcloud compute backend-services get-health <ten> | | Request đi tới đâu | Cloud Logging với log của load balancer |

Và một công cụ hữu ích khi cấu hình URL map phức tạp: gcloud compute url-maps validate. Nó kiểm tra bộ quy tắc trước khi áp và chỉ ra những quy tắc bị che khuất bởi quy tắc rộng hơn đứng trước — đúng loại lỗi khiến một đường dẫn cụ thể im lặng đi nhầm backend mà không có thông báo nào.

Câu 70 Computing Options
You have deployed a sole tenant node in Compute Engine. How will this restrict what VMs run on that node.
  1. A Only VMs from the same organization will run on that node.
  2. B Only one VM will run on that node.
  3. C Only VMs from the same project will run on the node.
  4. D Only VMs using the same operating system will run on that node.
Xem giải thích

Đáp án

C — Chỉ VM thuộc CÙNG MỘT PROJECT mới chạy trên node đó.

Vì sao đúng

Sole-tenant node là máy chủ vật lý dành riêng cho MỘT project, không chia sẻ với bất kỳ khách hàng nào khác.

⚠ Điểm mấu chốt — cô lập ở tầng phần cứng vật lý:

Máy chủ Compute Engine thông thường
        ↓
    Chạy VM của NHIỀU khách hàng khác nhau
    (vẫn cô lập an toàn bởi hypervisor)
        ↓
SOLE-TENANT NODE
        ↓
    Một máy chủ VẬT LÝ dành riêng
        ↓
    → chỉ VM của CHÍNH PROJECT đó được chạy
    → không có VM của khách hàng khác
    → không có VM của project khác
        ↓
    (Chia sẻ được sang project khác nếu
     dùng node group với sharing policy)

⚠ Vì sao người ta cần sole-tenant node:

1. TUÂN THỦ và QUY ĐỊNH
        ↓
    Một số ngành đòi "phần cứng chuyên dụng"
    → tài chính, y tế, chính phủ

2. GIẤY PHÉP PHẦN MỀM theo lõi vật lý
        ↓
    Windows Server, SQL Server, Oracle
    → "bring your own license" tính theo
      số lõi vật lý
    → sole-tenant cho biết chính xác phần cứng

3. HIỆU NĂNG ỔN ĐỊNH
        ↓
    Không có "hàng xóm ồn ào"
    → độ trễ và thông lượng ít dao động

⚠ Nhưng vẫn KHÔNG phải "chỉ một VM":

Một sole-tenant node có nhiều lõi và nhiều RAM
        ↓
    → chạy được NHIỀU VM cùng lúc
    → miễn là tất cả thuộc project được phép
        ↓
    Điều khiển bằng NODE AFFINITY LABEL:
      VM khai affinity → được xếp lên node đó

Vì sao các phương án khác sai

  • B (chỉ một VM chạy trên node đó) — đây là phương án gần nhất về trực giác "dành riêng", nhưng sole-tenant node chạy được nhiều VM: nó dành riêng ở mức project, không phải ở mức từng máy ảo.

  • A (chỉ VM cùng tổ chức) — quá rộng: mặc định là theo project, không phải theo tổ chức. (Chia sẻ rộng hơn được, nhưng phải cấu hình tường minh.)

  • D (chỉ VM cùng hệ điều hành) — không có ràng buộc nào về hệ điều hành.

Ghi nhớ

⚠ Sole-tenant node — bảng phải thuộc: | Đặc điểm | Nội dung | |---|---| | Định nghĩa | máy chủ VẬT LÝ dành riêng cho một project | | Số VM | nhiều VM, miễn là cùng project | | Dùng khi | tuân thủ, giấy phép theo lõi vật lý, hiệu năng ổn định | | Node group | nhóm các node, có autoscaling | | Node affinity label | điều khiển VM nào lên node nào | | Chi phí | trả tiền cho CẢ NODE, không theo VM | | Bảo trì | chọn được chính sách khi Google bảo trì phần cứng |

Từ khoá nhận diện:

"phần cứng chuyên dụng, tuân thủ" → sole-tenant node "giấy phép theo lõi vật lý (BYOL)" → sole-tenant node "mã hoá bộ nhớ khi đang dùng" → Confidential VM "chống rootkit, toàn vẹn khởi động" → Shielded VM "VM rẻ, chịu được thu hồi" → Spot VM

Các tuỳ chọn VM đặc biệt của GCP Việc
Sole-tenant node máy chủ vật lý dành riêng
Shielded VM toàn vẹn khởi động — chống rootkit
Confidential VM mã hoá BỘ NHỚ khi đang dùng
Spot VM giảm tới 91%, có thể bị thu hồi
Preemptible VM thế hệ trước của Spot, tối đa 24 giờ
Custom machine type tự chọn số vCPU và RAM
Node affinity — điều khiển VM lên node nào Nội dung
Node group tập hợp sole-tenant node, có autoscaling
Affinity label VM khai nhãn → được xếp lên node có nhãn đó
--node-affinity-file khai bằng tệp JSON khi tạo VM
Anti-affinity tránh xếp một số VM lên cùng node
Không khai gì VM chạy trên máy chủ dùng chung bình thường
Chi phí sole-tenant Nội dung
Tính tiền theo NODE không theo VM chạy trên đó
Phí phụ trội (premium) so với VM thông thường
Tối ưu xếp đầy VM lên node để tận dụng
Giảm chi phí committed use discount áp cho sole-tenant node
Cân nhắc chỉ dùng khi có lý do rõ ràng — đắt hơn đáng kể
Bảo trì phần cứng của Google Chính sách
MIGRATE_WITHIN_NODE_GROUP chuyển VM sang node khác trong nhóm
RESTART_IN_PLACE khởi động lại VM tại chỗ
MIGRATE_WITHIN_NODE với node có nhiều socket
Ảnh hưởng giấy phép BYOL có thể ràng buộc lựa chọn này

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Có node group nào | gcloud compute sole-tenancy node-groups list | | VM chạy trên node nào | gcloud compute instances describe <ten> → scheduling.nodeAffinities | | Node còn chỗ không | gcloud compute sole-tenancy node-groups list-nodes <ten> |

Và một lý do rất thực tế khiến nhiều tổ chức chọn sole-tenant node dù đắt hơn: giấy phép phần mềm tính theo lõi vật lý. Với Windows Server hoặc Oracle mang giấy phép sẵn có, việc biết chính xác mình đang chạy trên bao nhiêu lõi vật lý là điều kiện bắt buộc để tuân thủ hợp đồng — và đó là thứ mà máy chủ dùng chung không cung cấp được.