可用性設計を障害単位で整理する: GCPを例にした冗長化パターン一覧

可用性設計を学ぶときに混乱しやすいのは、regionalmulti-regionglobalHA VPNCloud SQL HADR などの用語が同じ「止めないための設計」に見えてしまうことです。

本記事は、可用性という一般的な設計テーマを、GCPのサービスや用語を例にして整理します。GCP固有の機能名だけを覚えるのではなく、障害単位ごとに「何を複数持つのか」を見るための記事です。

整理の起点はサービス名ではなく、何が壊れる想定なのかです。VMが1台落ちるのか、zoneが落ちるのか、regionが落ちるのか、オンプレ接続が切れるのか、災害から復旧したいのかで、採るべき構成は変わります。

本記事では、可用性パターンを障害単位で整理し、それをGCPの構成例に落とし込みます。個別サービスの詳細は、関連記事へ委譲します。

可用性は「何が壊れるか」から考える

可用性設計は、雑に言うと以下の問いです。

  • 何が壊れても動かしたいのか
  • その障害単位に対して何を複数持つのか

主要な障害単位は以下です。

障害・要件覚える構成対応レイヤー
VM / Podが落ちる複数VM、複数Pod、MIGCompute
zoneが落ちるRegional MIG、GKE regional cluster、Cloud SQL HACompute / DB
regionが落ちるGlobal LB + 複数region backend、cross-region replica、dual-region storageトラフィック分散 / Compute / Data
正常なbackendへ通信を逃がしたいRegional LB、Global external LB、Cross-region internal LBトラフィック分散
データを失いたくないCloud SQL HA、read replica、backup、multi-region data serviceData
オンプレ接続を止めたくないHA VPN、multi-region Cloud VPN、Interconnect 99.9 / 99.99、VPN backupNetwork
大規模災害から復旧したいbackup/restore、pilot light、warm standby、active-passive、active-activeSystem DR

この表が、可用性設計を障害単位で見るときの大枠です。構成例ではGCPのサービス名を使っています。

Computeの可用性

Computeの可用性では、VMやPodをどこに複数配置するかを考えます。

  • VM単体障害: 複数VM / MIG
  • zone障害: Regional MIG / GKE regional cluster
  • region障害: 複数region backend + Global Load Balancer

1つのregion内の複数zoneに分散すればzone障害に強くなります。region障害まで見るなら、regionそのものを複数持つ必要があります。

Compute側の詳細は『Compute可用性設計: GCPのRegional MIG・GKE regional cluster・複数region backendで考える』で扱います。

トラフィック分散の可用性

トラフィック分散の可用性では、Load Balancer自体の故障対応ではなく、通信をどのスコープで受け、どの範囲の正常なbackendへ逃がせるようにするかを考えます。

  • 1 region内で分散: Regional Load Balancer
  • 外部ユーザーを複数region backendへ分散: Global external Load Balancer
  • VPC内部で複数region backendへ分散: Cross-region internal Load Balancer

重要なのは、Global Load Balancerを置いただけではregion冗長にはならないことです。backendが1 regionだけなら、アプリ本体は単一region依存です。

トラフィック分散の詳細は『トラフィック分散設計: GCPのRegional LB・Global external LB・Cross-region internal LBで考える』で扱います。

Dataの可用性

Dataの可用性は、DBやStorageがどこまで壊れてもデータを守れるかです。

  • DBのzone障害: Cloud SQL HA
  • DBのregion障害に備えたデータコピー: Cloud SQL cross-region read replica
  • オブジェクトのregion冗長: Cloud Storage dual-region / multi-region
  • マネージドサービス側でmulti-region化: Firestore / Spanner multi-region

Cloud SQL HAは同一region内のzone冗長です。cross-region replicaは別regionにデータを逃がす構成です。両者は似ていますが、想定障害が違います。

Cloud SQLの詳細は『Cloud SQL HAとcross-region replicaの違い』、FirestoreやSpannerなどのmulti-regionデータサービスは『GCPのmulti-regionデータサービス: Firestore・Spanner・Cloud Storage・BigQueryの違い』で扱います。

Networkの可用性

Networkの可用性では、オンプレミスや他クラウドとGCP VPCをつなぐ経路を冗長化します。

  • VPN tunnel / interface障害: HA VPN
  • VPN接続を1つのGCP regionに依存させたくない: 各region Cloud VPN gateway
  • 専用線接続を冗長化したい: Interconnect 99.9 / 99.99 topology
  • 専用線そのものの障害に備えたい: Interconnect + Cloud VPN backup

VPNとInterconnectは「オンプレとGCP VPCをつなぐ」という役割は近いですが、冗長化の考え方は分けて理解したほうがよいです。

VPNは『Cloud VPNの可用性』、Interconnectは『Cloud Interconnectの可用性』で扱います。

HAとDRの違い

HA(High Availability)は、普段起きうる故障でもなるべく止めない設計です。一方、DR(Disaster Recovery)は、大規模障害や災害で本番環境が使えなくなったときに復旧する設計です。

  • HA: VM、zone、DBインスタンス、VPN tunnelなどの障害に耐える
  • DR: region障害や大規模災害から復旧する

DRには以下のような段階があります。

パターン状態コスト復旧速度
Backup / Restoreバックアップだけある遅い
Pilot Light最小部品だけ待機低〜中中〜遅い
Warm Standby縮小環境を常時起動中〜速い
Active-Passive待機系をほぼ準備済み中〜高速い
Active-Active複数regionで常時稼働最速

DRパターンの詳細は『HAとDRの違い』で扱います。

まとめ

可用性設計は、サービス名から覚えるよりも、障害単位で整理したほうが理解しやすいです。GCPでもAWSでもオンプレでも、最初に見るべき問いは「何が壊れても動かしたいのか」です。

  • VM/Pod障害にはComputeの複数化で備える
  • zone障害にはregional構成で備える
  • region障害には複数region構成で備える
  • データ保護にはreplica、backup、multi-region serviceを使う
  • オンプレ接続にはVPNやInterconnectの経路冗長を使う
  • 大規模障害にはDRパターンで備える

参考

タグ: GCP, クラウド設計, 可用性