Skip to content

Multi-Cluster Use Cases & Deployment Models

Tại sao Multi-Cluster Quan Trọng Trong Production

Single cluster GKE, cho dù được thiết kế tốt, có những giới hạn không thể vượt qua:

  • Failure domain: một cluster outage = toàn bộ application down (khi không có multi-region setup)
  • Regional constraints: GDPR/CCPA/data residency yêu cầu dữ liệu lưu ở region cụ thể
  • Scale limits: control plane của cluster có ceiling (~15,000 pods per cluster)
  • Blast radius: sai lầm cấu hình hoặc update sai version vẫn có thể vỡ tất cả

Multi-cluster architecture giải quyết các vấn đề này bằng cách phân tán workloads, giới hạn blast radius, và tạo flexibility cho deployment strategy.

Phân Loại Use Cases

1. High Availability & Disaster Recovery (HA/DR)

Định nghĩa: Nhân bản application toàn bộ qua nhiều clusters, mỗi cluster ở region hoặc zone khác nhau.

Kiến trúc:

┌─────────────────────────┐
│    Multi-Region GCP     │
├─────────────────────────┤
│                         │
│ us-central1:            │ us-west1:
│ ┌──────────────┐        │ ┌──────────────┐
│ │ GKE Cluster  │        │ │ GKE Cluster  │
│ │ (Primary)    │        │ │ (Secondary)  │
│ └──────────────┘        │ └──────────────┘
│       ▲                 │       ▲
│       │ Global LB       │       │
│       │ (MCI)           │       │
│       └────────┬────────┘       │
│              │ Failover: active→passive
│         Global Ingress         │
└─────────────────────────┘

Lợi ích:

  • RPO (Recovery Point Objective): Gần như zero nếu dữ liệu được replicate real-time
  • RTO (Recovery Time Objective): Vài phút (automatic failover via global LB)
  • Blast radius: một region hoặc cluster outage = traffic tự động failover

Chi phí:

  • Cluster chạy "warm" ở region thứ hai (luôn consume resources)
  • Global load balancer + cross-region networking bandwidth
  • Data replication cost (đặc biệt nếu dữ liệu lớn)

Khi sử dụng: Các ứng dụng business-critical mà không chịu được downtime: banking, healthcare, SaaS production.

Mental model: "Active-Active" hoặc "Active-Passive" replicated setup — hệ thống luôn sẵn sàng failover instant.


2. Geographic Distribution & Data Residency

Định nghĩa: Phân bố clusters ở các region khác nhau để tuân thủ data residency requirements hoặc giảm latency cho end-users.

Kiến trúc:

┌────────────────────────────────────────┐
│        Global Multi-Region GKE         │
├────────────────────────────────────────┤
│                                        │
│ eu-west1:          us-central1:        │
│ ┌───────────┐     ┌───────────┐       │
│ │ Cluster   │     │ Cluster   │ asean │
│ │ (GDPR)    │     │ (CCPA)    │◄─────┤
│ └───────────┘     └───────────┘       │
│        ▲                 ▲            │
│        │ EU Users        │ US Users  │
│        └────────┬────────┘           │
│           Global DNS                  │
│           (Geo-routing)              │
│                                        │
└────────────────────────────────────────┘

Lợi ích:

  • Compliance: Data stays in region required by regulation
  • Latency: End-user traffic goes to nearest cluster (typical: 20–100ms improvement)
  • Throughput: Avoid inter-region bandwidth saturation

Chi phí:

  • Multiple cluster operations (toil, upgrades, monitoring multiply)
  • Cluster-specific resource allocation
  • Cross-region data replication bandwidth (nếu dữ liệu cần shared)

Khi sử dụng: GDPR/HIPAA/PCI deployments, global user base, streaming/real-time applications nhạy cảm với latency.

Mental model: "Distributed by geography" — mỗi region có cluster "local", clients route tới cluster gần nhất.


3. Scale Beyond Single Cluster Limits

Định nghĩa: Khi một single cluster GKE đạt ceiling (15,000 pods, 5,000 nodes), phân tán workloads qua nhiều clusters để scale horizontally.

Kiến trúc:

┌────────────────────────────────────┐
│      Horizontal Scaling             │
├────────────────────────────────────┤
│                                    │
│ Cluster-1: 5000 pods              │
│ Cluster-2: 5000 pods  ─┐          │
│ Cluster-3: 5000 pods  ┌┘          │
│                       │ Service    │
│ Total: 15,000+ pods ◄─┤ discovery │
│                       │ (MCS)     │
│ Single control plane │           │
│ can't handle this    │           │
└────────────────────────────────────┘

Lợi ích:

  • Scale horizontally: Pod capacity = cluster1 + cluster2 + cluster3
  • Reliability: cluster1 outage không ảnh hưởng cluster2 workloads
  • Blast radius: sai lầm trong một cluster không propagate

Chi phí:

  • Toil tăng lên: upgrades, debugging, monitoring 3 clusters
  • Cross-cluster networking overhead (latency + bandwidth)
  • Complexity operational runbooks

Khi sử dùng: Large-scale deployments (thousands of pods), batch processing, multi-tenant platforms.

Mental model: "Sharding by deployment" — workloads phân rải động qua clusters, mỗi cluster độc lập quản lý.


4. Canary & Blue-Green Deployments Across Clusters

Định nghĩa: Sử dụng cluster thứ hai để test deployment bằng cách routing phần nhỏ traffic, sau đó tăng dần hoặc rollback.

Kiến trúc:

┌─────────────────────────────────┐
│    Canary Deployment            │
├─────────────────────────────────┤
│                                 │
│ Cluster A (stable v1.0):        │
│ 95% traffic ─────┐              │
│                  │              │
│                  ├──► Global LB  │
│                  │              │
│ Cluster B (canary v1.1):        │
│ 5% traffic  ─────┘              │
│                                 │
│ Metrics/errors check ──►        │
│ If OK: promote v1.1 to 100%    │
│ If FAIL: rollback, drain v1.1  │
└─────────────────────────────────┘

Lợi ích:

  • Risk mitigation: Sai lầm trong v1.1 chỉ ảnh hưởng 5% traffic
  • Observability: So sánh metrics v1.0 vs v1.1 trực tiếp
  • Instant rollback: Giảm traffic từ v1.1 về 0% trong vài giây

Chi phí:

  • Yêu cầu cluster thứ hai chạy đến khi canary được promote hoặc rollback
  • Operational complexity: traffic splitting logic, monitoring, decision automation

Khi sử dụng: Critical deployments, risky version upgrades, database migrations.

Mental model: "Experiment in parallel" — mỗi cluster là một "version candidate".


Deployment Models

Model 1: Active-Active

Định nghĩa: Cả hai clusters chạy application, đều xử lý live traffic cùng lúc.

┌──────────────┐       ┌──────────────┐
│ Cluster A    │       │ Cluster B    │
│ 50% traffic  │◄────►│ 50% traffic  │
└──────────────┘       └──────────────┘
        ▲                     ▲
        │ DNS Round-Robin    │
        │ (or Global LB)     │
        └────────┬───────────┘
             Clients

Ưu điểm:

  • Maximize resource utilization (không có "standby" cluster nhàn rỗi)
  • Tự động load balancing
  • Failure in A: traffic automatically goes to B (khi health check detect failure)

Nhược điểm:

  • Phức tạp: eventual consistency khi services thay đổi
  • Khó debug: request có thể route bất kỳ cluster nào
  • State management: nếu workload stateful → cần replication

Khi sử dụng: Stateless services, cost-sensitive deployments, global user distribution.

Điều kiện tiên quyết: Application phải stateless hoặc dùng managed database (Cloud SQL, Firestore).


Model 2: Active-Passive (Standby)

Định nghĩa: Primary cluster chạy live traffic, Secondary cluster chờ sẵn sàng nhưng không xử lý traffic.

┌──────────────┐       ┌──────────────┐
│ Cluster A    │       │ Cluster B    │
│ 100% traffic │       │ 0% traffic   │
│ (PRIMARY)    │       │ (STANDBY)    │
└──────────────┘       └──────────────┘
        ▲                     ▲
        │ Primary            │
        │ Failover: A down ──►
        │                    │
        └────────┬───────────┘
             Clients

Ưu điểm:

  • Đơn giản: chỉ xử lý một cluster → dễ debug, dễ maintain
  • Predictable: secondary luôn ở trạng thái "ready to take over"
  • Cost control: secondary có thể scale down (minimal node pool)

Nhược điểm:

  • Resource waste: secondary cluster chạy nhưng không dùng
  • Failover lag: chậm do health check delay + traffic propagation
  • RTO không tốt: dù sẵn sàng, vẫn mất vài phút để DNS propagate + traffic shift

Khi sử dùng: Disaster recovery setups, stateful workloads (database replicas), mission-critical systems.


Model 3: Hub-and-Spoke (Distributed Hub)

Định nghĩa: Một cluster trung tâm (hub) làm config/control center, nhiều clusters phía ngoài (spokes) chạy workloads.

┌──────────────────────────────────┐
│        Hub Cluster               │
│ (Config Sync, Policy Controller) │
└───────────┬──────────────────────┘
            │ Configuration push
    ┌───────┼───────┐
    │       │       │
┌────────┐ ┌────────┐ ┌────────┐
│Spoke 1 │ │Spoke 2 │ │Spoke 3 │
│workload│ │workload│ │workload│
└────────┘ └────────┘ └────────┘

Ưu điểm:

  • Centralized control: tất cả config từ hub → consistent across spokes
  • Scale management: add/remove spokes dễ dàng
  • Config Sync GitOps: single source of truth

Nhược điểm:

  • Hub là single point of failure cho config (nhưng không ảnh hưởng running workloads)
  • Network hub congestion: all cross-spoke traffic qua hub
  • Latency: hub→spoke control loop (eventual consistency)

Khi sử dụng: Multi-tenant platforms, managed services (SaaS), environments cần centralized policy.


Model 4: Mesh Topology

Định nghĩa: Tất cả clusters kết nối mạng tương tự, không có hub riêng (hoặc hub là shared control plane).

         Cluster A
           ▲   ▲
          / \ / \
         /   X   \
        /   / \   \
       ▼   ▼   ▼   ▼
    Cluster B ─ Cluster C
        ▲             ▲
         \___________/
         Cluster D

Ưu điểm:

  • Resilient: không single point of failure
  • Load balancing: traffic có thể flow bất kỳ hướng
  • Symmetric: tất cả clusters bình đẳng

Nhược điểm:

  • Phức tạp: n×(n-1)/2 peering relationships (Mesh của 10 clusters = 45 peering)
  • Difficult troubleshooting: nhiều path options
  • Non-transitive peering: A↔B, B↔C không suy ra A↔C

Khi sử dụng: Large federations (5+ clusters), high redundancy requirements, peer-to-peer architectures.


Decision Matrix: Chọn Deployment Model Nào?

RequirementActive-ActiveActive-PassiveHub-SpokeMesh
Cost efficiency⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Simplicity⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Resilience⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Failover speed⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Operational toil⭐⭐⭐⭐⭐⭐⭐⭐⭐
<2 clusters--
2-5 clusters
5+ clusters
Stateless apps
Stateful apps⚠️ Complex⚠️⚠️

Production Patterns & Anti-Patterns

✅ Pattern: Active-Active + Global LB

yaml
# Multi-Cluster Ingress (MCI) setup
apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeBackendService
metadata:
  name: global-backend
spec:
  loadBalancingScheme: EXTERNAL
  protocol: HTTP2
  backends:
    - group: "projects/PROJECT/zones/us-central1-a/networkEndpointGroups/cluster-a-neg"
      balancingMode: RATE
      maxRatePerEndpoint: 100
    - group: "projects/PROJECT/zones/us-west1-b/networkEndpointGroups/cluster-b-neg"
      balancingMode: RATE
      maxRatePerEndpoint: 100
  healthChecks:
    - "projects/PROJECT/global/healthChecks/multi-cluster-health"

Lý do: Traffic tự động route tới healthy clusters, zero-downtime failover.


❌ Anti-Pattern: Mesh Topology Với Vài Clusters

# KHÔNG làm cái này nếu chỉ có 2-3 clusters
Cluster A ◄──────────► Cluster B
   ▲                        ▲
   └────── (unnecessary) ────┘
   
VPC Peering A↔B + B↔C + C↔A = complexity, nhưng không lợi ích rõ rệ

Tại sao: Hub-and-Spoke hoặc Active-Passive đơn giản hơn, dễ troubleshoot hơn.


✅ Pattern: Active-Passive for Stateful Workloads

Cluster A: Primary
├── Pod replicas (stateless)
├── Database replica (write)
└── State: actively used

Cluster B: Standby
├── Pod replicas (cold start ready)
├── Database replica (read-only)
└── State: prepared but idle

Failover: B takes over when A down
  → DNS changes
  → Database failover (read-only replica becomes write)
  → B scales up

Lý do: Stateful apps cần consistency → Active-Active quá phức tạp.


❌ Anti-Pattern: Ignoring RTO/RPO Trade-Offs

# WRONG: Thinking Active-Active = zero RTO/RPO
# Reality:
  RTO = health check detection (15–30s) + traffic propagation (10s)
  RPO = replication lag (application-dependent, could be seconds or minutes)
  
# Instead: Define realistic SLO tiers
  Tier 1: RTO <1min, RPO <5min  ─► Active-Active required
  Tier 2: RTO <5min, RPO <30min ─► Active-Passive OK
  Tier 3: RTO <1hour, RPO <1hour ─► single cluster + manual recovery

Constraints & Giới Hạn

Network Constraints

  • VPC Peering non-transitivity: Nếu setup mesh, phải peer A↔B, A↔C, B↔C riêng lẻ
  • Inter-region bandwidth: Premium Tier LB có sẵn đo. Standard tier: dùng internet (high latency)
  • DNS propagation: 300s TTL → failover có latency

Operational Constraints

  • Fleet size: Hiệu quả tới ~10-20 clusters. Với 100+ clusters → separate fleet hubs
  • Config Sync propagation: 2-5 phút từ Git commit đến applied trên tất cả spokes
  • Policy Controller lag: Audit mode có delay; enforcement mode realtime

Cost Constraints

  • Standby cluster: ~$100-300/month (minimal node pool)
  • Global LB: ~$20/month + traffic cost
  • Cross-region peering: Không tính phí (VPC Peering free), nhưng inter-region bandwidth $0.02/GB

Summary

ModelBest ForRTOCostComplexity
Active-ActiveGlobal services, cost efficiency, stateless<10sHigh usageMedium
Active-PassiveHA + DR, stateful, safety-first<5minMediumLow
Hub-SpokeMulti-tenant, config management, SaaS<1minMediumMedium
MeshLarge federation, peer-to-peer<30sHighHigh

Next steps: Chọn model dựa trên yêu cầu RTO/RPO/cost, sau đó implement networking stack (VPC Peering, DNS Peering, MCS, MCI).

Tài liệu tham khảo