可用性ゾーンとクロスリージョン
1)利用規約と目的
可用性ゾーン(AZ)-地域内の孤立したデータセンター(独自の容量/ネットワーク)。
地域-共通の地理と遅延を持つAZグループ。
- RTO (Recovery Time Objective)-サービスを提供できない時間。
- RPO (Recovery Point Objective)-データがどれだけ失われるか。
通常:地域内では、RTO ≤ 5-15分、RPO ~ 0-1分、地域間-RTO ≤ 1時間、RPO ≤ 5分(製品と予算に応じて)を目指しています。
2)建築モデル
2.1地域内(マルチAZ)
ステートレス層:AZに分散。バランスをとること-健康チェックとのL4/L7。
ステートフルレイヤー:AZ間の同期レプリケーション(またはクォーラム)を持つクラスタ。
キャッシュ/キュー:クラスタ化されており、AZシャーディングと自動フェイルオーバーが可能です。
2.2地域間(複数地域)
アクティブ-アクティブ:両方のリージョンがトラフィックを受信します。
最小限のユーザー待ち時間、迅速なリカバリ、−一貫性、競合の複雑さ
アクティブ-パッシブ(ホット/ウォーム):主な領域は、2番目の-ホット/ウォームの期待に役立ちます。
より簡単なデータ、より安い;より高いRTOを−して下さい。
パイロットライト:最小の「光」(データは同期され、事故の場合には計算が展開されます)。
DR-backup:バックアップとリカバリのシナリオのみ(最も安くて遅い)。
3)データと一貫性
3.1データベース
Synchronous quorum (RPO≈0): PostgreSQL with synchronous standbys with the region;ローカルクォーラム(Local Quorum)とAZバランシングを備えた分散データベース(CockroachDB/Cassandra)。
非同期間領域(RPO> 0):論理レプリケーションPostgres/MySQL;「グローバルテーブル」-KV/NoSQL;CDC→strim to another region。
競合するエントリ:アクティブな場合は、キー/テナントごとにCRDT/バージョン管理またはリーダー領域を使用します。
3.2イベントソーシングとキュー
キュー/ストリーム(Kafka/Pulsar/SQSのような):ミラートピックまたはクロスリージョナルレプリケータ;key-消費者のidempotencyとkey deadlock。
Webhookと外部パートナー:両方のゾーンに署名、リプレイ、オフセット/チェックポイントを保存します。
3.3現金
地域ごとのローカルキャッシュ(write-through/refresh-ahead);耐久性のあるKVのみのグローバル共有キャッシュ(別名split-brain)。イベント(pub/sub)による無効化、TTL-保守的。
4)グローバルトラフィックとネットワークループ
GSLB/DNS:地理/遅延ベースのルーティング、ヘルスチェック、カナリアおよび事故のトラフィックウェイト。
Anycast/Edge:入り口をユーザーに近づけ、次に最寄りの健康な地域に届けます。
フェイルオーバーポリシー:リージョナルアップストリームプール、クリティカルパスへの0-RTTの禁止、地域間依存性への低いタイムアウト。
リトレイポリシー:指数関数バックオフ+ジッタ、合計期限制約、idempotent PUT/POST、 'Idempotency-Key'。
5) Kubernetesおよびサービスメッシュ
5.1つのクラスタに1つのマルチAZ
トポロジーのスプレッド制約のトポロジー。kubernetes。io/zone'。
PodDisruptionBudget priorityクラス。
NodeAffinity/Anti-Affinity-レプリカの共同ロケーションを避けます。
ストレージ領域:AZレプリケーションまたは分散ボリューム・システムを備えたPV。
5.2マルチリージョン(マルチクラスタ)
宣言的同期のために、リージョンごとにクラスタ+GitOps (Argo CD/Flux)を分離します。
サービスメッシュ(Istio/Linkerd):地域ごとのロードバランシングとリージョン間のフェイルオーバー;mTLS、共有ID。
トラフィックシフト:徐々に1%→10%→50%新しい地域に;ハンドル「put 0%」即座に。
6) RTO/RPOの選択およびパターン結合
7)フォールトトレランス試験(DR)
GameDays:四半期ごとの「region/AZ out」シナリオ。
カオスインジェクション:ネットワーク遅延、パケット損失、ブローカー/ベース切断。
RTO/RPO実際:測定スイッチ時間とデータ損失、レポートを公開します。
Runbooks:ステップバイステップの指示とスイッチングのための「赤いボタン」(DNSの重み、フィーチャーフラグ、重い機能の無効化)。
8)観察と管理
地域/AZ/テナントによるメートルのスライス;p95/p99ルートレイテンシー。
地域ごと、グローバルプールごとのSLOとエラー予算。
アラート:1つのリージョンの劣化は、2つ目がトラフィックを正常に運ぶ場合に「ジャム」ページングを行うべきではありません。
手荷物'region'、 'az'、 'failover=true/false';「フェイルオーバーに行ったリクエスト数」を報告します。
9)安全性とコンプライアンス
データ常駐:PII/決済データを特定の地域(管轄)にリンクします。
秘密:クロスリージョナルキーと回転を備えたKMS/スマートHSM。地域ごとに主要な材料を分離します。
mTLSと地域間の相互信頼;ACLによるクロスリージョンの排出を制限します。
10)コストと節約
エッジキャッシュ+SWR-地域間の出力が減少します。
異なるストレージクラス(ホット/ウォーム/コールド)とダウンサンプリングのメトリック/ログ。
地域ごとの自動スケールプロファイル(夜間最低)。
Image identity+環境変数/ヘルム値による差別化された構成。
11) Antipatterns
システムごとの1つのStatefulのマスター;quorumのないsplit-brain。
単一のRDBMSへの地域間の同期書き込み(耐えられないレイテンシー)。
CRDT→混雑とファントムなしで強力な一貫性を持つグローバルキャッシュ。
idempotency→duplicate transactions/paymentなしで再送信します。
単一の「グローバル」SLO-1つの領域の障害を非表示にします。
通常のDR演習はありません-計画は戦闘では操作できません。
12) iGaming/Financeの詳細
決済プロバイダ/CCPは地域ごとに選択されます。ヘルスシグナルを使用してPSP上でスマートルーティングを行い、バックアップにフェイルオーバーします。
管轄:PIIおよび国内/地域の取引ログの保持;cross-region-集計/匿名のみ。
制限/責任あるプレイ:ローカルルールと時間-リージョン間で「ヘッドオン」を複製しないでください。イベントの一貫性を使用します。
ボーナス/バランス:テナント/地域ごとのidempotentキーと「真実の源」;DRR後の調整ジョブ。
13)ミニレシピ(擬似フィギュア)
13.1 Envoy locality対応+フェイルオーバー
yaml load_assignment:
endpoints:
- locality: { region: eu, zone: eu-a }
lb_endpoints: [{ endpoint: { address:... } }]
- locality: { region: eu, zone: eu-b }
lb_endpoints: [{ endpoint: { address:... } }]
- locality: { region: us, zone: us-a } # failover target lb_endpoints: [{ endpoint: { address:... } }]
common_lb_config:
zone_aware_lb_config: {}
locality_weighted_lb_config: {}
outlier_detection:
consecutive_5xx: 5 base_ejection_time: 30s
13.2 Kubernetesトポロジーの普及
yaml spec:
topologySpreadConstraints:
- maxSkew: 1 topologyKey: topology. kubernetes. io/zone whenUnsatisfiable: DoNotSchedule labelSelector: { matchLabels: { app: api } }
13.3 DNS重量Feilover(アイデア)
'weight (eu)=90'、 'weight (us)=10'→degraded 'eu' automatically shift to 'us'。健康チェックとTTLの低下(しかし、あまりにも積極的ではない、30-120秒)。
14) Prod Readinessチェックリスト
- サービスごとのRTO/RPOを定義し、ビジネスと合意しました。
- AZに分布するステートレス;statefulにはquorum/replicationと明確な整合性モデルがあります。
- クロスリージョナルレプリケーション(asynchron/CDC)、衝突/重複除外テスト。
- GSLB/Anycastが設定され、ヘルスチェックと重みが自動化されます。
- Kubernetes:トポロジースプレッド、PDB、アンチアフィニティ;マルチクラスタGitOps。
- ジッタ付きレトライ、書き込み時のidempotency;地域的に短いタイムアウトです。
- DR演習、測定実際のRTO/RPO;現在のrunbook。
- 領域/AZ、 SLO、およびセクションのバーンレートによる観測可能性、アラートは通常の動作を「ジャム」しません。
- データ常駐/秘密/キーは規制要件に準拠しています。
- 経済学:出力、ストレージ、制御下のオートスケールプロファイル。
15) TL;DR(ドクター)
ベースレイヤーとしてのマルチAZ、ビジネス保険としてのマルチリージョンを構築します。RTO/RPOのパターン(アクティブ/アクティブ/スタンバイ)とコストを選択し、意識的にデータを複製し(quorums/CDC/CRDT)、 GSLB/Anycastを通じてグローバルトラフィックを管理し、場所を意識したバランシングを行います。必須:idempotency、短いタイムアウト、通常のDR演習、地域/AZスライスのSLO/メトリック。iGaming/Financeでは、地域のPSP/KYC、データ要件、管轄区域による分割SLOを追加します。