Amazon Aurora Global Database で実現するマルチリージョン構成 - DR とグローバル読み取りの設計
Aurora Global Database によるクロスリージョンレプリケーション、1 秒未満の RPO での DR 設計、グローバル読み取りの活用法を解説します。
Global Database の仕組み
Aurora Global Database はプライマリリージョンのデータを最大 5 つのセカンダリリージョンにレプリケーションする機能です。通常のクロスリージョンリードレプリカが binlog ベースの論理レプリケーションを使用するのに対し、Global Database はストレージレイヤーの物理レプリケーションを使用します。これにより、レプリケーションラグが通常 1 秒未満に抑えられ、プライマリのパフォーマンスへの影響も最小限です。MySQL 互換と PostgreSQL 互換の両方で利用可能で、db.r6g.large 以上のインスタンスクラスが必要です。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
DR 設計とフェイルオーバー
計画的フェイルオーバー (Planned Failover) はメンテナンスやリージョン移行時に使用し、RPO ゼロでセカンダリリージョンをプライマリに昇格します。プライマリの書き込みを停止し、レプリケーションの完了を待ってから切り替えるため、データ損失はありません。非計画的フェイルオーバー (Unplanned Failover) はプライマリリージョンの障害時に使用し、通常 1 分以内に完了します。レプリケーションラグ分のデータ損失が発生する可能性がありますが、RPO は通常 1 秒未満です。フェイルオーバー後、アプリケーションの接続先を新しいプライマリに切り替える必要があります。Route 53 のヘルスチェックとフェイルオーバールーティングを組み合わせることで、DNS レベルでの自動切り替えを実現できます。
グローバル読み取りの活用
セカンダリリージョンのリードレプリカは読み取りクエリを処理でき、グローバルに分散したユーザーに低レイテンシの読み取りを提供します。東京リージョンをプライマリ、バージニアリージョンをセカンダリに設定すると、米国のユーザーはバージニアのリードレプリカから読み取り、日本のユーザーは東京のプライマリから読み取ります。書き込みは常にプライマリリージョンで処理されるため、書き込みが多いワークロードではプライマリリージョンに近いユーザーが有利です。Write Forwarding 機能を有効にすると、セカンダリリージョンへの書き込みリクエストが自動的にプライマリに転送されるため、アプリケーション側でのリージョン振り分けロジックが不要になります。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
Aurora Global Database は 1 秒未満の RPO でマルチリージョン DR を実現し、グローバルな読み取りワークロードのレイテンシを削減するサービスです。計画的フェイルオーバーで RPO ゼロのリージョン切り替え、非計画的フェイルオーバーで 1 分以内の障害復旧を提供します。グローバルアプリケーションのデータ層として最適な選択肢です。
AWS の優位点
- 専用のレプリケーションインフラで 1 秒未満のレプリケーションラグを実現し、RPO 1 秒未満の DR 構成を構築できる
- セカンダリリージョンのリードレプリカでローカルの読み取りを処理し、グローバルアプリケーションの読み取りレイテンシを削減できる
- 計画的フェイルオーバーでセカンダリリージョンをプライマリに昇格し、RPO ゼロのリージョン切り替えが可能
- 非計画的フェイルオーバーは通常 1 分以内に完了し、プライマリリージョンの障害から迅速に復旧できる
- 最大 5 つのセカンダリリージョンをサポートし、グローバルに分散した読み取りワークロードに対応できる