すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ブルーグリーンデプロイメント

最終更新日:Aug 02, 2025

ブルーグリーンデプロイメントは、2 つの同一環境、つまり現在のバージョン用の本番環境(ブルー環境)と新しいバージョン用のテスト環境(グリーン環境)を使用してダウンタイムを最小限に抑えるリリース戦略です。新しいバージョンは、最初にグリーン環境にデプロイされてテストされます。この段階では、ブルー環境とグリーン環境の間でデータが同期された状態に維持されます。新しいバージョンが検証されると、トラフィックはグリーン環境に切り替えられます。仮想 IP アドレス(VIP)と実際のサーバー(RS)間のマッピングを調整することで、アプリケーションコードを変更することなく、即時ロールバックパスを使用して即時スイッチオーバーを実装できるため、アップグレード中のサービスのダウンタイムとリスクを最小限に抑えることができます。

重要

ブルーグリーンデプロイメント機能は、特定のユーザーのみが使用できます。この機能を使用するには、チケットを送信してください。

概要

ブルーグリーンデプロイメントとは

ブルーグリーンデプロイメントでは、同一の仕様を持つ 2 つの異なる環境を使用します。

  • ブルー環境:本番トラフィックを処理し、読み取り操作と書き込み操作の両方をサポートする本番環境。

  • グリーン環境:新しいバージョンが検証されるテスト環境。この環境は読み取り専用です。

データ整合性を確保するために、Data Transmission Service (DTS) インスタンスが作成され、ブルー環境とグリーン環境の間で継続的にデータを同期します。

ブルーグリーンデプロイメントでは、本番(ブルー)環境からテスト(グリーン)環境にトラフィックをリダイレクトすることで、実際の環境で新しいバージョンの機能とパフォーマンスを検証できます。このアプローチは、潜在的な欠陥を迅速に特定し、データベースのパフォーマンスを最適化し、最小限の制御可能なダウンタイムで更新されたデータベース機能を導入するのに役立ちます。

さらに、ブルーグリーンデプロイメントでは、問題が発生した場合に元のバージョンに迅速にロールバックできます。これにより、システムアップグレードの信頼性と柔軟性が向上し、データベースバージョンのアップグレードに伴うリスクが大幅に軽減され、ビジネスへの影響が最小限に抑えられます。

シナリオ

ブルーグリーンデプロイメントの典型的なシナリオは、データベースのメジャーまたはマイナーエンジンバージョンのアップグレードです。プロセスは次のとおりです。

  1. 新しいバージョンのデプロイ:

    • グリーン環境を作成し、新しいデータベースバージョンを選択します。グリーン環境はテスト環境として機能し、本番トラフィックは処理しません。

    • グリーン環境で包括的な機能テストとパフォーマンステストを実行して、新しいバージョンの安定性を確保できます。

  2. ブルー環境とグリーン環境の切り替え:

    • 新しいバージョンが検証されたら、ブルー環境からグリーン環境にトラフィックを切り替えます。

    • 切り替えは、VIP を新しい RS に再マッピングすることで実装されます。切り替え中、ブルー環境のインスタンス ID と IP アドレスは変更されないため、プロセスは簡単かつ迅速です。

  3. 必要に応じて監視とロールバック:

    • アップグレード後に重大な問題が発生した場合、元のバージョンにすぐにロールバックしてビジネスを復旧できます。

    • ロールバックプロセスは高速であるため、障害復旧に必要な時間が大幅に短縮されます。

  4. 問題の修正と再デプロイ:

    • 新しいバージョンの問題を修正したら、グリーン環境に再デプロイして別の検証ラウンドを実行できます。

    • 新しいバージョンが検証されたら、ブルー環境からグリーン環境にトラフィックを再度切り替えます。

メリット

  • ゼロダウンタイムアップグレード:バージョンのアップグレードはトラフィックの切り替えによって実装されます。アップグレード後も、本番環境のインスタンスの ID と IP アドレスは変更されないため、アプリケーションの接続設定を変更することなく永続的な接続が保証されます。

  • 迅速なロールバック:新しいバージョンで問題が発生した場合、再デプロイや問題の修正を行うことなく、元のバージョンに簡単にロールバックできます。

  • リソースの分離:新しいバージョンと元のバージョンは分離された環境で実行されるため、相互干渉を防ぎます。

  • 高可用性:冗長デプロイメントにより、トラフィックの切り替え中でもリクエストを処理するのに十分なリソースが利用可能になります。

前提条件

ブルーグリーンデプロイメントを作成する場合、本番環境として機能するブルーインスタンスは次の要件を満たしている必要があります。

課金

  • ブルーインスタンス:ブルーグリーンデプロイメントを作成する場合、既存の RDS インスタンスがブルーインスタンスとして指定されます。このインスタンスは、ブルーグリーンデプロイメントが作成される前と同じ方法で課金されます

  • グリーンインスタンス:ブルーグリーンデプロイメントを作成する場合、テスト環境として機能する新しいグリーンインスタンスが作成されます。このインスタンスは、従量課金の課金方法を使用します。その課金ルールは、通常の従量課金 RDS インスタンスの課金ルールと同じです。

    説明

    グリーンインスタンスの課金方法を従量課金からサブスクリプションに変更できます。ただし、15 日間の無料トライアルは、従量課金インスタンスでのみ利用できます。課金方法をサブスクリプションに変換すると、変換時点からサブスクリプションの課金ルールに基づいて課金されます。

重要

2025 年 8 月 1 日以降、ブルーグリーンデプロイメントによって作成されたグリーンインスタンスは、作成から 15 日間無料です。15 日後、従量課金制で課金されます。プロモーションが終了する前に、別途通知が発行されます。

制限事項

  • ブルーグリーンデプロイメントが作成されると、ブルーインスタンスまたはグリーンインスタンスでは次の操作と機能はサポートされません

    • 特定の構成変更:ブルーインスタンスとグリーンインスタンスのインスタンスタイプ、ストレージ容量、ストレージタイプ、またはゾーンを変更することはできません。

    • データ暗号化機能SSL 暗号化ディスク暗号化列暗号化、および TDE(透過的データ暗号化)

    • プレミアム ESSD の機能Buffer Pool 拡張(BPE)I/O パフォーマンスバースト、および データアーカイブ

    • グローバルアクティブデータベース(GAD)機能。

    • 特定のデータベース操作:ブルーインスタンスとグリーンインスタンスでデータベースを作成および削除したり、ブルーインスタンスとグリーンインスタンスのメジャーエンジンバージョンをアップグレードしたり、マイナーエンジンバージョンを更新したりすることはできません。

    • インスタンスパブリックエンドポイントでの操作:ブルーインスタンスまたはグリーンインスタンスのパブリックエンドポイントを申請または解放することはできません。

  • ブルーグリーンデプロイメントに対応する DTS インスタンスが削除された場合、ブルーインスタンスとグリーンインスタンスの間でトラフィックを切り替えることはできません。この場合、最初にブルーグリーンデプロイメントを削除してから、再度作成する必要があります。

ブルーグリーンデプロイメントの作成

ブルーグリーンデプロイメントを作成する場合、ブルーインスタンスとして機能する既存の RDS インスタンスを指定する必要があります。

  1. RDS インスタンス ページに移動します。上部のナビゲーションバーで、リージョンを選択します。次に、ブルーインスタンスとして使用するインスタンスの ID をクリックします。

  2. 左側のナビゲーションウィンドウで、[ブルーグリーンデプロイメント] を選択し、[ブルーグリーンデプロイメントの作成] をクリックします。

  3. グリーンインスタンスの [メジャーエンジンバージョン] を選択します。

  4. [今すぐ承認] をクリックし、[OK] をクリックして、サービスリンクロールの承認を完了します。

  5. グリーンインスタンスの [マイナーエンジンバージョン] を選択し、[作成] をクリックします。

  6. [ブルーグリーンデプロイメント構成の確認] ダイアログボックスで、[OK] をクリックします。

ブルーインスタンスとグリーンインスタンスの間のトラフィックの切り替え

重要

切り替えプロセス中に、プレミアムローカル SSD を使用するインスタンスは 1 回の一時的な切断が発生し、クラウドディスクを使用するインスタンスは 2 回の一時的な切断が発生します。この操作はオフピーク時に実行し、アプリケーションがインスタンスに再接続できることを確認することをお勧めします。

  1. 切り替え条件の確認:トラフィックを切り替える前に、ブルーインスタンスとグリーンインスタンスが次の要件を満たしていることを確認してください。

    • インスタンスは [実行中] 状態です。

    • インスタンスには読み取り専用インスタンスが含まれていません。

    • インスタンスのデータベースプロキシ機能は無効になっています。

    • ブルーインスタンスとグリーンインスタンスで、データベースの数と名前が同じである必要があります。

    • ブルーインスタンスとグリーンインスタンスで、データベースアカウントの数と名前が同じである必要があります。

    • ブルーインスタンスとグリーンインスタンス間の同期遅延は 5 秒未満です。

  2. トラフィックの切り替え:

    1. RDS インスタンス ページに移動します。上部のナビゲーションバーで、ブルーインスタンスのリージョンを選択します。次に、ブルーインスタンスの ID をクリックします。

    2. 左側のナビゲーションウィンドウで、[ブルーグリーンデプロイメント] をクリックします。[ブルーグリーンデプロイメント同期情報] セクションで、[切り替え] をクリックします。

    3. 情報を確認し、[切り替え時間] を設定して、[OK] をクリックします。システムは、ブルーインスタンスとグリーンインスタンスの状態と構成を確認します。

      • 切り替え条件が満たされていない場合は、に基づいて問題を解決してから、再試行してください。

      • 切り替え条件が満たされている場合、インスタンスの状態は [ブルーグリーンデプロイメント切り替え中] に変わります。切り替えが完了すると、インスタンスの状態は [実行中] に変わります。

ブルーグリーンデプロイメントの削除

次のいずれかの方法で、ブルーグリーンデプロイメントを削除できます。

  • ブルーグリーンデプロイメント関係のみを削除する:

    • ブルーインスタンスとグリーンインスタンスは動作し続け、インスタンスの制限は削除されます。

    • グリーンインスタンスは通常のインスタンスになります。従量課金方式を引き続き使用し、サブスクリプションに変換できます。

  • ブルーグリーンデプロイメント関係とグリーンインスタンスを削除する:

    • グリーンインスタンスは解放されます。

    • ブルーインスタンスは動作し続けます。ブルーインスタンスの制限は削除されます。

  1. RDS インスタンス ページに移動します。上部のナビゲーションバーで、ブルーインスタンスのリージョンを選択します。次に、ブルーインスタンスの ID をクリックします。

  2. 左側のナビゲーションウィンドウで、[ブルーグリーンデプロイメント] をクリックします。[ブルーグリーンデプロイメント同期情報] セクションで、[削除] をクリックします。

付録 1:ブルーグリーンデプロイメントでのトラフィックの切り替え方法

ブルー環境からグリーン環境へのトラフィックの切り替えは、ブルーグリーンデプロイメントの中核となるステップです。次の図に示すように、VIP と RS 間のマッピングを変更することで実装されます。

  • VIP:ユーザーがサービスにアクセスするために使用する仮想 IP アドレス。

  • RS:サービスを提供するインスタンス。

VIP と RS 間のマッピングを変更することで、ブルーインスタンスとグリーンインスタンスの間でトラフィックを切り替えることができます。

付録 2:切り替え前のチェック項目とエラーメッセージ

チェック項目

エラーメッセージ

説明

ステータスチェック(Status-Check)

現在の DB インスタンスの状態はアクティブである必要があります。

データベースインスタンスは実行中状態である必要があります。

テーブル数(Table-Count)

ブルーインスタンスとグリーンインスタンスのテーブル数が異なります。

ブルーインスタンスとグリーンインスタンスのテーブル数が異なります。

DTS ステータス(DTS-Status)

DTS ステータスは同期されていません。

DTS インスタンスは同期状態ではありません。

DTS 遅延(DTS-Delay)

DTS 遅延は 5 秒を超えています。

DTS 同期遅延は 5 秒を超えています。

読み取り専用(ReadOnly)

  • ブルーインスタンスとグリーンインスタンスの両方に読み取り専用インスタンスがあります。

  • ブルーインスタンスに読み取り専用インスタンスがあります。

  • グリーンインスタンスに読み取り専用インスタンスがあります。

  • ブルーインスタンスとグリーンインスタンスの両方に読み取り専用インスタンスが含まれています。

  • ブルーインスタンスに読み取り専用インスタンスが含まれています。

  • グリーンインスタンスに読み取り専用インスタンスが含まれています。

データベースプロキシ(MaxScale)

  • ブルーインスタンスとグリーンインスタンスの両方に MaxScale があります。

  • ブルーインスタンスに MaxScale があります。

  • グリーンインスタンスに MaxScale があります。

  • ブルーインスタンスとグリーンインスタンスの両方にデータベースプロキシ機能が有効になっています。

  • ブルーインスタンスにデータベースプロキシ機能が有効になっています。

  • グリーンインスタンスにデータベースプロキシ機能が有効になっています。

エンドポイント(ConnectionString)

  • プライベートネットワーク接続文字列がブルーインスタンスとグリーンインスタンスで一致しません。

  • パブリックネットワーク接続文字列がブルーインスタンスとグリーンインスタンスで一致しません。

  • ブルーインスタンスとグリーンインスタンスの内部エンドポイントが一致しません。

  • ブルーインスタンスとグリーンインスタンスのパブリックエンドポイントが一致しません。

データベース(databases)

  • 次のデータベースはブルーインスタンスにのみ存在します:{{DB...}}。

  • 次のデータベースはブルーインスタンスに存在しません:{{DB...}}。

  • 次のデータベースはブルーインスタンスにのみ存在します:<データベース名>。

  • 次のデータベースはブルーインスタンスに存在しません:<データベース名>。

データベースアカウント(accounts)

  • 次のアカウントはブルーインスタンスにのみ存在します:{{account...}}。

  • 次のアカウントはブルーインスタンスに存在しません:{{account...}}。

  • 次のデータベースアカウントはブルーインスタンスにのみ存在します:<アカウント名>。

  • 次のデータベースアカウントはブルーインスタンスに存在しません:<アカウント名>。