翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IaC 原則を使用して Amazon Aurora Global Database のブルー/グリーンデプロイを自動化する
Amazon Web Services、Ishwar Chauthaiwale、ANKIT JAIN、Ramu Jagini
概要
Amazon Aurora Global Database
ブルー/グリーンデプロイ戦略は、ブルー (現在の環境) とグリーン (新しい環境) の 2 つの同一の環境を同時に実行できるようにすることで、この課題に対するソリューションを提供します。ブルー/グリーン戦略を使用することで、リスクとダウンタイムを最小限に抑えながら、変更の実装、テストの実行、環境間のトラフィックの切り替えを行うことができます。
このパターンは、Infrastructure as Code (IaC) の原則を使用して、Aurora Global Detabase のブルー/グリーンデプロイプロセスを自動化するのに役立ちます。AWS CloudFormation、AWS Lambda、および Amazon Route 53 を使用して、ブルー/グリーンデプロイを簡素化します。信頼性を向上させるために、レプリケーションにグローバルトランザクション識別子 (GTID) を使用します。GTID ベースのレプリケーションは、バイナリログ (binlog) レプリケーションと比較して、環境間のデータ整合性とフェイルオーバー機能が向上します。
注記
このパターンは、Aurora MySQL 互換エディションの Global Database クラスターを使用していることを前提としています。代わりに Aurora PostgreSQL 互換を使用している場合は、MySQL コマンドに相当する PostgreSQL を使用してください。
本パターンの手順に従うことで、以下の操作が可能です。
グリーン Aurora Global Database をプロビジョニングする: CloudFormation テンプレートを使用して、既存のブルー環境をミラーリングするグリーン環境を作成します。
GTID ベースのレプリケーションを設定する: ブルー環境とグリーン環境が同期された状態を維持するように GTID レプリケーションを設定します。
トラフィックをシームレスに切り替える: Route 53 と Lambda を使用して、完全同期後にブルー環境からグリーン環境にトラフィックを自動的に切り替えます。
デプロイを確定する: グリーン環境がプライマリデータベースとして完全に動作していることを検証してから、レプリケーションを停止して一時的なリソースをクリーンアップします。
このパターンのアプローチには、次の利点があります。
重要なデータベースの更新または移行中のダウンタイムが短縮される: 自動化により確実に、サービスの中断を最小限に抑えながら、環境間のスムーズな移行を行います。
迅速なロールバックが可能になる: トラフィックがグリーン環境に切り替わった後に問題が発生した場合は、ブルー環境にすばやく戻り、サービスの継続性を維持できます。
テストと検証が強化される: グリーン環境は、ライブのブルー環境に影響を与えずに完全にテストできるため、本番環境でエラーが発生する可能性が低くなります。
データ整合性が確保される: GTID ベースのレプリケーションがブルー環境とグリーン環境の同期を維持し、移行中のデータ損失や不整合を防ぎます。
ビジネス継続性が維持される: ブルー/グリーンデプロイを自動化すると、更新や移行中にサービスを使用できる状態が維持されることで、長時間の停止や財務上の損失を回避できます。
前提条件と制限
前提条件
アクティブ AWS アカウント。
ソース Aurora MySQL 互換 Global Database クラスター (ブルー環境)。Global Database は、高可用性とディザスタリカバリを実現するマルチリージョン設定を提供します。Global Database クラスターを設定する手順については、Aurora ドキュメントを参照してください。
ソースクラスターで有効な GTID ベースのレプリケーション。
制限事項
一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「AWS のサービス (リージョン別)
」を参照してください。特定のエンドポイントについては、「Service endpoints and quotas」ページから、サービスのリンクを選択してご確認ください。
製品バージョン
Aurora MySQL 互換 8.0 以降
アーキテクチャ

この図表は、以下を示すものです:
グローバルデータベースのセットアップ: Aurora グローバルデータベースクラスターは、2 つのクラスターに戦略的にデプロイされます AWS リージョン。この設定により、地理的分散とリージョンの冗長性が実現し、ディザスタリカバリ機能が強化されます。
プライマリリージョンからセカンダリリージョンへのレプリケーション: 論理レプリケーションメカニズムにより、プライマリリージョンからセカンダリリージョンへのシームレスなデータ同期が保証されます。このレプリケーションは、地理的距離全体で最小限のレイテンシーでデータ整合性を維持します。
クラスター間の GTID ベースのレプリケーション: GTID ベースのレプリケーションは、ブループライマリクラスターとグリーンプライマリクラスター間のトランザクションの整合性と順序付けられたデータフローを維持し、信頼性の高いデータ同期を保証します。
ブループライマリからセカンダリへのレプリケーション: 論理レプリケーションは、ブループライマリクラスターとそのセカンダリクラスター間に堅牢なデータパイプラインを確立します。このレプリケーションにより、継続的なデータ同期と高可用性が実現します。
Route 53 DNS 設定: Route 53 ホストゾーンレコードは、すべてのブルーおよびグリーンクラスターデータベースエンドポイントの DNS 解決を管理します。この設定は、シームレスなエンドポイントマッピングを提供し、フェイルオーバーシナリオ中の効率的なトラフィックルーティングを可能にします。
ツール
AWS サービス
「Amazon Aurora」はクラウド用に構築されたフルマネージド型のリレーショナルデータベースエンジンで、MySQL および PostgreSQL と互換性があります。
CloudFormation を使用すると、 AWS リソースをモデル化してセットアップできるため、リソースの管理に費やす時間が減り、 が実行されるアプリケーションに集中する時間が増えます AWS。必要なすべての AWS リソースを記述するテンプレートを作成すると、CloudFormation がそれらのリソースのプロビジョニングと設定を処理します。
AWS Lambda はサーバーのプロビジョニングや管理を行わずにコードの実行を支援できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。
Amazon Route 53 は、高可用性でスケーラブルな DNS Web サービスです。
ベストプラクティス
Route 53 のブルー/グリーンデプロイ戦略、GTID ベースのレプリケーション、加重ルーティングポリシーの理解を深められるように、 AWS ドキュメントを徹底的に確認することをお勧めします。この知識は、データベース移行の効果的な実装と管理、データ整合性の確保、トラフィックルーティングの最適化に不可欠です。これらの AWS 機能とベストプラクティスを包括的に理解することで、将来の更新を処理し、ダウンタイムを最小限に抑え、回復力のある安全なデータベース環境を維持する準備が整います。
このパターン AWS のサービス に を使用するためのガイドラインについては、次の AWS ドキュメントを参照してください。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
ブルークラスターからスナップショットバックアップを作成します。 | ブルー/グリーンデプロイでは、グリーン環境は現在の (ブルー) データベース環境と同一の新バージョンを表します。グリーン環境を使用して、更新を安全にテストし、変更を検証し、安定性を確保してから、本番環境のトラフィックを切り替えます。これは、ライブ環境の中断を最小限に抑えながらデータベースの変更を実装するためのステージング基盤として機能します。 グリーン環境を作成するには、まず Aurora MySQL 互換 Global Database にプライマリ (ブルー) クラスターのスナップショットを作成します。このスナップショットは、グリーン環境を作成するための基盤として機能します。 スナップショットを作成するために以下を実行します:
または、 AWS Command Line Interface (AWS CLI) を使用してスナップショットを作成することもできます。
スナップショットが正常に完了したことを確認してから、次のステップに進みます。 | DBA |
グローバルデータベースとそのリソースの CloudFormation テンプレートを生成します。 | CloudFormation IaC ジェネレーターは、既存の AWS リソースから CloudFormation テンプレートを生成するのに役立ちます。この機能を使用して、既存の Aurora MySQL 互換グローバルデータベースとその関連リソースの CloudFormation テンプレートを作成します。このテンプレートは、サブネットグループ、セキュリティグループ、パラメータグループ、およびその他の設定を構成します。
| DBA |
グリーン環境の CloudFormation テンプレートを変更します。 | グリーン環境の設定を反映するように CloudFormation テンプレートをカスタマイズします。これには、グリーン環境がブルークラスターとは独立して動作するようにリソース名と識別子を更新することが含まれます。
注記
| DBA |
CloudFormation スタックをデプロイして、グリーン環境のリソースを作成します。 | このステップでは、カスタマイズされた CloudFormation テンプレートをデプロイして、グリーン環境のリソースを作成します。 CloudFormation スタックをデプロイするために以下を実行します:
CloudFormation で、グリーン環境リソースを作成するプロセスが開始されます。このプロセスは完了までに数分かかることがあります。 | DBA |
CloudFormation のスタックとリソースを検証します。 | CloudFormation スタックのデプロイが完了したら、グリーン環境が正常に作成されたことを確認する必要があります。
検証後、ブルー環境からのレプリケーションなど、グリーン環境の設定を進める準備が整います。 | DBA |
| タスク | 説明 | 必要なスキル |
|---|---|---|
ブルークラスターの GTID 設定を確認します。 | GTID は、ブルー環境とグリーン環境間でデータをレプリケートするための信頼性の高い方法を提供します。GTID ベースのレプリケーションは、ブルー環境内のすべてのトランザクションに一意の識別子を割り当てることで、回復力の高い簡素化されたアプローチを提供します。この方法により、環境間のデータ同期がシームレスで一貫性があり、従来のバイナリログレプリケーションよりも容易に管理できるものになります。 レプリケーションを設定する前に、ブルークラスターで確実に GTID ベースのレプリケーションが適切に有効になっているようにする必要があります。このステップにより、ブルー環境の各トランザクションが一意に追跡され、グリーン環境でレプリケートできることが保証されます。 GTID が有効であることを確認するため以下を実行します。
これらの設定により、ブルー環境での今後のすべてのトランザクションの GTID 追跡が有効になります。これらの設定の確認後に、レプリケーションの設定を開始できます。 | DBA |
レプリケーションユーザーを作成します。 | ブルー環境からグリーン環境にデータをレプリケートするには、ブルークラスターに専用のレプリケーションユーザーを作成する必要があります。このユーザーは、レプリケーションプロセスの管理を担当します。 レプリケーションユーザーを設定するため以下を実行します:
このユーザーは、2 つの環境間でデータをレプリケートするために必要なアクセス許可を持つようになりました。 | DBA |
グリーンクラスターで GTID ベースのレプリケーションを設定します。 | 次のステップでは、GTID ベースのレプリケーション用にグリーンクラスターを設定します。この設定により、グリーン環境は確実に、ブルー環境で発生するすべてのトランザクションを継続的にミラーリングするようになります。 グリーンクラスターを設定するため以下を実行します。
| DBA |
グリーンクラスターでレプリケーションを開始します。 | これで、レプリケーションプロセスを開始できます。グリーンクラスターで、次のコマンドを実行します。
これで、グリーン環境はデータの同期と、ブルー環境からのトランザクションの受信と適用を開始できるようになります。 | DBA |
レプリケーションプロセスを検証します。 | グリーン環境がブルークラスターからデータを正確にレプリケートしていることを検証するため以下を実行します。
すべてのインジケータが正しい場合、GTID ベースのレプリケーションはスムーズに機能し、グリーン環境はブルー環境と完全に同期されています。 | DBA |
| タスク | 説明 | 必要なスキル |
|---|---|---|
Route 53 加重ルーティングポリシーを設定します。 | ブルー環境とグリーン環境間のデータ整合性を検証したら、ブルークラスターからグリーンクラスターへトラフィックを切り替えることができます。この移行はスムーズである必要があります。また、ダウンタイムを最小限に抑え、アプリケーションのデータベースの整合性を確保する必要もあります。これらの要件を満たすため、DNS ルーティングに Route 53 を使用し、Lambda を使用してトラフィックの切り替えを自動化します。さらに、明確に定義されたロールバックプランにより、問題が発生した場合にブルークラスターに戻すことができるようにします。 最初のステップは、Route 53 で加重ルーティングを設定することです。加重ルーティングを使用すると、ブルークラスターとグリーンクラスター間のトラフィックの分散を制御し、ある環境から別の環境にトラフィックを徐々に移行できます。 加重ルーティングを設定するために以下を実行します。
加重ルーティングポリシーの詳細については、Route 53 ドキュメントを参照してください。 | AWS DevOps |
Lambda 関数をデプロイして、レプリケーションラグをモニタリングします。 | グリーン環境がブルー環境と完全に同期されるようにするため、クラスター間のレプリケーションラグをモニタリングする Lambda 関数をデプロイします。この関数で、レプリケーションステータス、特に Seconds_Behind_Master メトリクスをチェックして、グリーンクラスターがすべてのトラフィックを処理する準備ができているかどうかを判断できます。 使用できる Lambda 関数の例を次に示します。
この関数はレプリケーションのラグをチェックし、値を返します。ラグがゼロの場合、グリーンクラスターはブルークラスターと完全に同期しています。 | AWS DevOps |
Lambda を使用して DNS の重み調整を自動化します。 | レプリケーションのラグがゼロになったら、いよいよすべてのトラフィックをグリーンクラスターに切り替えます。この移行を自動化するには、トラフィックの 100% をグリーンクラスターに送信するように Route 53 の DNS 重みを調整する別の Lambda 関数を使用します。 トラフィックの切り替えを自動化する Lambda 関数の例を次に示します。
この関数はレプリケーションラグをチェックし、ラグがゼロのときに Route 53 DNS の重みを更新して、トラフィックを完全にグリーンクラスターに切り替えます。 注記カットオーバープロセス中にブルークラスターで大量の書き込みトラフィックが発生した場合は、カットオーバー中の書き込みオペレーションを一時的に停止することを検討してください。これにより、レプリケーションが追いつき、ブルークラスターとグリーンクラスター間のデータの不整合を防ぐことができるようになります。 | AWS DevOps |
トラフィックの切り替えを検証します。 | Lambda 関数が DNS の重みを調整した後、すべてのトラフィックがグリーンクラスターに転送され、切り替えが成功したことを確認する必要があります。 検証するために以下を実行します。
すべてが期待どおりに動作していたら、トラフィックの切り替えは完了です。 | AWS DevOps |
問題が発生した場合は、変更をロールバックします。 | トラフィックの切り替え後に問題が発生した場合に備えて、ロールバック計画を立てることが不可欠です。必要に応じてブルークラスターにすばやく戻る方法は、次のとおりです。
このロールバック計画を実装することで、予期しない問題が発生した場合にユーザーの中断を最小限に抑えることができます。 | AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
グリーンクラスターで GTID ベースのレプリケーションを停止します。 | ブルー環境からグリーン環境にトラフィックを切り替えたら、移行の成功を検証し、グリーンクラスターが期待どおりに機能していることを確認する必要があります。さらに、グリーン環境がプライマリデータベースとして機能するようになったため、ブルークラスターとグリーンクラスター間の GTID ベースのレプリケーションを停止する必要もあります。これらのタスクを完了することで、環境が安全で、合理化された、継続的な運用向けに最適化されたものになります。 レプリケーションを停止するには、以下を実行します。
レプリケーションを停止すると、グリーンクラスターは完全に独立した状態になり、ワークロードのプライマリデータベース環境として機能します。 | DBA |
リソースをクリーンアップします。 | ブルークラスターからグリーンクラスターへの移行中に作成された一時的または未使用のリソースをクリーンアップすることで、環境は最適化された、安全な、コスト効率の高い状態を維持できます。クリーンアップには、セキュリティ設定の調整、最終バックアップの取得、不要なリソースの廃止などが含まれます。 リソースをクリーンアップするには、以下を実行します。
リソースをクリーンアップすることで、安全で合理化された環境を維持し、コストを削減し、必要なインフラストラクチャだけが残るようにします。 | AWS DevOps |
関連リソース
CloudFormation:
Amazon Aurora:
ブルー/グリーンデプロイ戦略:
GTID ベースのレプリケーション:
GTID ベースレプリケーションを使用する (Amazon RDS ドキュメント)
AWS Lambda:
Amazon Route 53:
MySQL クライアントツール: