Skip to content

Regional Persistent Disk & High Availability

Tại sao HA cho storage phức tạp hơn HA cho compute

HA cho compute tương đối đơn giản: launch VM thay thế ở zone khác, redirect traffic. HA cho storage phức tạp hơn vì phải trả lời câu hỏi: khi một zone fail, data ở đó nằm đâu, và replica ở zone còn lại có đủ up-to-date không?

Persistent Disk zonal thông thường chỉ có một replica trong một zone. Nếu zone đó fail, bạn phải restore từ snapshot (RPO = thời gian từ lần snapshot cuối đến failure). Regional Persistent Disk giải quyết bằng cách duy trì hai replicas đồng bộ ở hai zones.


Cơ chế synchronous replication

Theo Google Cloud documentation, Regional PD implement synchronous cross-zone replication:

"When you write data to your disk, Compute Engine synchronously replicates that data to the disk replicas in both zones to ensure HA."

"Synchronous" ở đây có nghĩa rõ ràng: write operation không được acknowledge cho application cho đến khi cả hai replicas ở cả hai zones xác nhận đã nhận data. Không phải async với eventual consistency, không phải "ghi zone A trước rồi propagate sang zone B sau".

Đây là khác biệt thiết kế quan trọng so với nhiều HA storage solutions khác (như asynchronous replication thường dùng cho cross-region DR). Với synchronous replication:

RPO = 0 trong trường hợp zone failure đơn lẻ. Bất kỳ write nào đã được acknowledged bởi Regional PD đều đã được ghi vào cả hai zones. Không có data loss window.

Tradeoff: Write latency cao hơn Zonal PD cùng type vì mỗi write phải round-trip đến cả hai zones. Trong cùng một region, cross-zone latency thường 1–2ms, nên overhead khoảng 2–4ms per write (cho round-trip đến zone thứ hai và acknowledgment). Với workloads latency-sensitive, đây là overhead đáng kể.


Ba trạng thái replica và implications

Regional PD replicas có ba trạng thái:

Synced (Fully Replicated): Replica nhận tất cả writes và up-to-date. Đây là trạng thái bình thường. Trong Cloud Console, disk hiển thị là "Fully replicated".

Catching up: Replica available nhưng đang sync lại — thường sau khi zone có sự cố ngắn hoặc sau khi tạo mới Regional PD. Trong trạng thái này, write vẫn hoạt động bình thường (primary zone xử lý), nhưng secondary đang catch up. Disk hiển thị "Catching up".

Out of sync (Degraded): Replica không available tạm thời — zone đang có vấn đề. Disk hoạt động trong "degraded mode" chỉ dùng primary replica. Đây là trạng thái "amber alert" — data vẫn accessible nhưng không còn HA. Nếu zone còn lại fail trong lúc này, data có thể mất.

Monitoring recommendation: alert khi disk status = "Degraded" để biết khi nào HA bị mất.


Failover: force-attach mechanism

Khi zone fail, Regional PD cần được reattach vào VM ở zone còn lại. Tuy nhiên, VM ở zone lỗi đang "chết" nhưng hệ thống GCP chưa detect là zone fail (network partition). Cơ chế attach bình thường yêu cầu detach từ VM cũ trước, nhưng VM cũ không thể response.

Force-attach giải quyết bằng cách bypass detach requirement:

bash
gcloud compute instances attach-disk standby-vm-in-zone-b \
    --disk=my-regional-disk \
    --disk-scope=regional \
    --force-attach

Với --force-attach, GCP gắn disk vào VM mới mà không cần xác nhận từ VM cũ. Quá trình này mất dưới một phút cho storage-layer failover.

Lưu ý quan trọng: Force-attach chỉ giải quyết storage layer. Total RTO còn bao gồm:

  • Instance startup time (nếu standby VM không running)
  • Application startup time
  • Filesystem mount và journal replay (nếu disk không được unmount cleanly)
  • Application health check và traffic redirect

Trong production, kịch bản lý tưởng là có pre-launched standby VM đang chạy ở zone B nhưng chưa mount disk — khi failover, chỉ cần force-attach và start application. RTO có thể xuống dưới 5 phút.


Initial sync time sau khi tạo Regional PD

Khi tạo mới Regional PD, replica thứ hai được tạo nhưng cần thời gian để đạt "Fully Replicated" state. Theo documentation:

"After creation, you can use the regional disk clone within 3 minutes, on average. However, you might need to wait for tens of minutes before the disk reaches a fully replicated state."

Điều này có implication cho automation: nếu script tạo Regional PD và ngay lập tức deploy application lên đó, application chạy trong degraded mode (không có full HA) trong giai đoạn initial sync. Cần health check để verify "Fully Replicated" trước khi marking deployment as complete.


Machine type constraints

Regional PD không hỗ trợ tất cả machine families. Chỉ các machine types sau được hỗ trợ:

  • E2 — General-purpose
  • N1 — General-purpose (older generation)
  • N2 — Balanced compute
  • N2D — AMD-based balanced compute

Các machine families không hỗ trợ Regional PD:

  • C2, C2D (compute-optimized)
  • M2, M3 (memory-optimized)
  • A2, A3 (accelerator-optimized)

Nếu workload cần HA storage trên machine types này, phải dùng Hyperdisk Balanced HA thay vì Regional PD.


Regional PD vs Hyperdisk Balanced HA

Google Cloud đang dần định hướng workloads mới dùng Hyperdisk Balanced HA thay cho Regional PD. So sánh:

Tiêu chíRegional PDHyperdisk Balanced HA
Max IOPS80,000 (balanced) / 100,000 (ssd)100,000
Max throughput1,200 MiB/s2,400 MiB/s
Machine typesE2, N1, N2, N2DC3, C3D, N4, Z3, và nhiều loại mới
Dynamic IOPSKhông
Durability>99.9999% (regional balanced/ssd)>99.9999%
Min size200 GiB (standard)4 GiB
Multi-writerCó (max 10 read-only)Có (max 8 read-write)

Kết luận: Với workloads mới trên machine types hỗ trợ Hyperdisk, Hyperdisk Balanced HA là lựa chọn tốt hơn về performance và flexibility. Regional PD vẫn phù hợp cho workloads đang chạy trên E2/N2 không muốn migrate machine type.


Kết hợp Regional PD với Managed Instance Group (MIG)

Pattern phổ biến cho stateful HA workloads:

yaml
# Regional MIG với failover policy
resource "google_compute_region_instance_group_manager" "stateful_mig" {
  name               = "stateful-db-mig"
  base_instance_name = "db"
  region             = "us-central1"

  stateful_disk {
    device_name = "data-disk"
    delete_rule = "NEVER"  # Không xóa disk khi replace instance
  }

  auto_healing_policies {
    health_check      = google_compute_health_check.default.id
    initial_delay_sec = 300
  }
}

MIG với stateful disk sẽ tự động recreate instance trong zone khác nếu zone fail, và reattach Regional PD vào instance mới. Đây là cơ chế tự động hóa failover cho stateful workloads.


Trường hợp Regional PD không đủ

Regional PD bảo vệ khỏi single zone failure. Nó không bảo vệ khỏi:

  • Toàn region fail: Cả hai zones trong region đều down — hiếm nhưng có xảy ra
  • Application-level corruption: Nếu application write data sai, replication sẽ replicate data sai sang cả hai zones
  • Accidental deletion: Nếu xóa disk hoặc xóa data, cả hai replicas đều bị xóa

Cho cross-region DR (bảo vệ region-level failure), cần kết hợp Regional PD với asynchronous replication sang region khác hoặc snapshot-based backup sang region khác.


Tài liệu tham khảo