ブルー/グリーンデプロイの作成 - Amazon Relational Database Service

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

ブルー/グリーンデプロイを作成するときには、デプロイにコピーするソース DB インスタンスを指定します。選択する DB インスタンスは本番 DB インスタンスであり、ブルー環境のプライマリ DB インスタンスになります。この DB インスタンスはグリーン環境にコピーされ、RDS はブルー環境の DB インスタンスからグリーン環境の DB インスタンスへのレプリケーションを設定します。

RDS は、ブルー環境のトポロジを、設定済みの機能とともにステージングエリアにコピーします。ブルー DB インスタンスにリードレプリカがある場合、リードレプリカはデプロイ内のグリーン DB インスタンスのリードレプリカとしてコピーされます。ブルー DB インスタンスがマルチ AZ DB インスタンスデプロイの場合、グリーン DB インスタンスは、マルチ AZ DB インスタンスデプロイとして作成されます。

ブルー/グリーンデプロイの準備

DB インスタンスが実行しているエンジンに応じて、ブルー/グリーンデプロイを作成する前に実行する必要がある特定の手順があります。

ブルー/グリーンデプロイ用 RDS for MySQL DB インスタンスの準備

RDS for MySQL DB インスタンスのブルー/グリーンデプロイを作成する前に、自動バックアップを有効にする必要があります。手順については、自動バックアップの有効化 を参照してください。

ブルー/グリーンデプロイ用 RDS for PostgreSQL DB インスタンスの準備

RDS for PostgreSQL DB インスタンスのブルー/グリーンデプロイを作成する前に、必ず以下を実行してください。

  • 論理レプリケーション (rds.logical_replication) をオンにしたカスタム DB パラメータグループにインスタンスを関連付けます。ブルー環境からグリーン環境へのレプリケーションには、論理レプリケーションが必要です。手順については、DB パラメータグループのパラメータの変更 を参照してください。

    ブルー/グリーンデプロイではデータベースごとに少なくとも 1 つのバックグラウンドワーカーが必要なため、ワークロードに応じて次の構成設定を調整してください。各設定を調整する手順については、PostgreSQL ドキュメントの「構成設定」を参照してください。

    • max_replication_slots

    • max_wal_senders

    • max_logical_replication_workers

    • max_worker_processes

    論理レプリケーションを有効にしてすべての設定オプションを設定したら、DB インスタンスを再起動して変更を有効にします。ブルー/グリーンデプロイでは、DB インスタンスが DB パラメータグループと同期している必要があり、同期していない場合は作成に失敗します。詳細については、「 DB インスタンスの再起動」を参照してください。

  • DB インスタンスで RDS ブルー/グリーンデプロイと互換性のあるバージョンの RDS for PostgreSQL を実行していることを確認してください。互換性のあるバージョンの一覧については、「ブルー/グリーンデプロイ」を参照してください。

  • DB インスタンスが外部レプリケーションのソースでもターゲットでもないことを確認します。詳細については、「ブルー/グリーンデプロイの一般的な制約事項」を参照してください。

  • DB インスタンスのすべてのテーブルにプライマリキーがあることを確認してください。PostgreSQL の論理レプリケーションでは、プライマリキーのないテーブルに対する UPDATE または DELETE オペレーションは許可されません。

ブルー/グリーンデプロイを作成するときの変更を指定

ブルー/グリーンデプロイを作成するときに、グリーン環境の DB インスタンスに次の変更を加えることができます。

デプロイ後に、グリーン環境の DB インスタンスに他の変更を加えることができます。例えば、データベースにスキーマの変更を加えたり、グリーン環境の 1 つ以上の DB インスタンスが使用する DB インスタンスクラスを変更したりすることができます

DB インスタンスの変更については、「Amazon RDS DB インスタンスを変更する」を参照してください。

より高いエンジンバージョンを指定する

DB エンジンのアップグレードをテストする場合は、上位のエンジンバージョンを指定できます。スイッチオーバー時に、データベースは指定したメジャーまたはマイナー DB エンジンバージョンにアップグレードされます。

別の DB パラメータグループを指定する

パラメータの変更がグリーン環境の DB インスタンスにどのように影響するかをテストしたり、アップグレードの場合に新しいメジャー DB エンジンバージョンのパラメータグループを指定したりできます。

別の DB パラメータグループを指定した場合、指定した DB パラメータグループはグリーン環境内のすべての DB インスタンスに関連付けられます。別のパラメータグループを指定しなかった場合、グリーン環境の各 DB インスタンスは、対応するブルー DB インスタンスのパラメータグループに関連付けられます。

RDS Optimized Writes の有効化

ブルー/グリーンデプロイを使用して RDS Optimized Writes をサポートする DB インスタンスクラスにアップグレードできます。RDS Optimized Writes は、サポートされている DB インスタンスクラスで作成されたデータベースでのみ有効にできます。したがって、このオプションでは、サポートされている DB インスタンスクラスを使用するグリーンデータベースが作成され、グリーン DB インスタンスで RDS Optimized Writes を有効にできます。

RDS Optimized Writes をサポートしていない DB インスタンスクラスからサポートする DB インスタンスクラスにアップグレードする場合は、グリーン DB インスタンスのストレージ設定もアップグレードする必要があります。詳細については、「ストレージ設定のアップグレード」を参照してください。

アップグレードできるのは、プライマリグリーン DB インスタンスの DB インスタンスクラスだけです。デフォルトでは、グリーン環境のリードレプリカはブルー環境の DB インスタンス設定を継承します。グリーン環境が正常に作成されたら、グリーン環境のリードレプリカの DB インスタンスクラスを手動で変更する必要があります。

ブルー DB インスタンスのエンジンバージョンとインスタンスクラスによっては、インスタンスクラスのアップグレードがサポートされていない場合があります。DB インスタンスクラスの詳細については、「 DB インスタンスクラス」を参照してください。

ストレージ設定のアップグレード

ブルーデータベースが最新のストレージ設定になっていない場合、RDS はグリーン DB インスタンスを古いストレージ設定 (32 ビットファイルシステム) から希望の設定に移行できます。RDS ブルー/グリーンデプロイを使用すると、古い 32 ビットファイルシステムのストレージとファイルサイズのスケーリング制限を克服できます。さらに、指定した DB インスタンスクラスが Optimized Writes をサポートしている場合、この設定により Optimized Writes に対応するようにストレージ設定が変更されます。

注記

ストレージ設定のアップグレードは I/O の負荷が高い操作であり、ブルー/グリーンデプロイでは作成時間が長くなります。ブルー DB インスタンスがプロビジョンド IOPS SSD (io1) ストレージを使用し、インスタンスサイズが 4xlarge 以上のグリーン環境をプロビジョニングした場合、ストレージのアップグレードプロセスは速くなります。汎用 SSD (gp2) ストレージを含むストレージをアップグレードすると、I/O クレジットバランスを使い切る可能性があり、よってよりアップグレード時間が長くなります。詳細については、「Amazon RDS DB インスタンスストレージ」を参照してください。

ストレージのアップグレード中は、データベースエンジンは使用できません。ブルー DB インスタンスのストレージ消費量が割り当てられたストレージサイズの 90% 以上の場合、ストレージアップグレードプロセスにより、グリーンインスタンスに割り当てられたストレージサイズが 10% 増加します。

このオプションは、ブルーデータベースが最新のストレージ設定になっていない場合、または同じリクエスト内で DB インスタンスクラスを変更する場合にのみ使用できます。

ブルー/グリーンデプロイを作成する際の遅延読み込みの処理

ブルー/グリーンデプロイを作成すると、Amazon RDS は DB スナップショットから復元することにより、グリーン環境にプライマリ DB インスタンスを作成します。作成後、グリーン DB インスタンスは引き続きバックグラウンドでデータをロードします。これは遅延読み込みと呼ばれます。DB インスタンスにリードレプリカがある場合、これらも DB スナップショットから作成され、遅延読み込みの対象となります。

まだロードされていないデータにアクセスする場合、DB インスタンスはリクエストされたデータを Amazon S3 から即座にダウンロードし、残りのデータをバックグラウンドでロードし続けます。詳細については、「Amazon EBS スナップショット」を参照してください。

クイックアクセスが必要なテーブルに対する遅延ロードの影響を軽減するには、SELECT * など、テーブル全体をスキャンするようなオペレーションを実行します。これにより、Amazon RDS はバックアップされたテーブルデータをすべて S3 からダウンロードできます。

アプリケーションがロードされていないデータにアクセスしようとすると、データがロードされている間、アプリケーションのレイテンシーが通常よりも長くなる可能性があります。遅延読み込みによってレイテンシーが高くなると、レイテンシーの影響を受けやすいワークロードのパフォーマンスの低下につながる可能性があります。

重要

データのロードが完了する前にブルー/グリーンデプロイを切り替えると、レイテンシーが高いためにアプリケーションのパフォーマンス問題が発生する可能性があります。

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

ブルー/グリーンデプロイは、AWS Management Console、AWS CLI、または RDS API を使用して作成できます。

ブルー/グリーンデプロイを作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[Databases] (データベース) を選択し、グリーン環境にコピーする DB インスタンスを選択します。

  3. [アクション][ブルー/グリーンデプロイの作成] を選択します。

    RDS for PostgreSQL DB インスタンスを選択する場合は、論理レプリケーションの制限を確認して承認してください。詳細については、「ブルー/グリーンデプロイの PostgreSQL 論理レプリケーションの制約事項」を参照してください。

    [Create Blue/Green Deployment] (ブルー/グリーンデプロイの作成) ページが表示されます。

    
                  ブルー/グリーンデプロイを作成する
  4. ブルーデータベース識別子を確認します。ブルー環境で予期される DB インスタンスに一致することを確認します。一致しない場合は、[Cancel] (キャンセル) を選択します。

  5. ブルー/グリーンデプロイ識別子として、ブルー/グリーンデプロイの名前を入力します。

  6. (オプション) [Blue/Green Deployment settings] (ブルー/グリーンデプロイ設定) では、グリーン環境の設定を指定します。

    • DB エンジンバージョンのアップグレードをテストするには、DB エンジンのバージョンを選択します。

    • グリーン環境内の DB インスタンスに関連付ける DB パラメータグループを選択します。

    グリーン環境のデータベースには、デプロイ後に他の変更を加えることができます。

  7. (オプション) RDS Optimized Writes の場合は、プライマリグリーンインスタンスの DB インスタンスクラスをアップグレードして RDS Optimized Writes を有効にします。詳細については、「RDS Optimized Writes の有効化」を参照してください。

    Optimized Writes をサポートしない DB インスタンスクラスからサポートする DB インスタンスクラスに変更する場合は、ストレージ設定のアップグレードも実行する必要があります。詳細については、次のステップを参照してください。

  8. (オプション) ストレージ設定のアップグレードでは、ストレージファイルシステム設定をアップグレードするかどうかを選択します。このオプションを有効にすると、RDS はグリーン DB インスタンスを古いストレージファイルシステムから優先設定に移行します。詳細については、「DB インスタンスのストレージファイルシステムのアップグレード」を参照してください。

    このオプションを使用できるのは、ブルーデータベースが最新のストレージ設定になっていない場合、または同じリクエスト内で RDS Optimized Writes を有効にする場合にのみです。

  9. [ステージング環境の作成] を選択します。

AWS CLI を使用してブルー/グリーンデプロイを作成するには、create-blue-green-deployment コマンドを次のオプションを指定して使用します。

  • --blue-green-deployment-name — ブルー/グリーンデプロイの名前を指定します。

  • --source — コピーする DB インスタンスの ARN を指定します。

  • --target-engine-version — グリーン環境で DB エンジンのバージョンアップグレードをテストする場合は、エンジンバージョンを指定します。このオプションは、グリーン環境の DB インスタンスを指定された DB エンジンバージョンにアップグレードします。

    指定しなかった場合、グリーン環境の各 DB インスタンスは、ブルー環境の対応する DB インスタンスと同じエンジンバージョンで作成されます。

  • --target-db-parameter-group-name – グリーン環境内の DB インスタンスに関連付ける DB パラメータグループを指定します。

  • --target-db-instance-class – RDS Optimized Writes をサポートする DB インスタンスクラスを指定します。このオプションにより、グリーンプライマリ DB インスタンスで RDS Optimized Writes が有効になります。詳細については、「RDS Optimized Writes の有効化」を参照してください。

  • --upgrade-target-storage-config – グリーンデータベースのストレージファイルシステム設定をアップグレードするかどうかを指定します。このオプションを有効にできるのは、is-storage-config-upgrade-available オプションの値が DB インスタンスに対して true の場合、または同じリクエストで target-db-instance-class オプションの値を変更する場合のみです。詳細については、「DB インスタンスのストレージファイルシステムのアップグレード」を参照してください。

Linux、macOS、Unix の場合:

aws rds create-blue-green-deployment \ --blue-green-deployment-name my-blue-green-deployment \ --source arn:aws:rds:us-east-2:123456789012:db:mydb1 \ --target-engine-version 8.0.31 \ --target-db-parameter-group-name mydbparametergroup \ --target-db-instance-class db.m5.8xlarge \ --upgrade-target-storage-config

Windows の場合:

aws rds create-blue-green-deployment ^ --blue-green-deployment-name my-blue-green-deployment ^ --source arn:aws:rds:us-east-2:123456789012:db:mydb1 ^ --target-engine-version 8.0.31 ^ --target-db-parameter-group-name mydbparametergroup ^ --target-db-instance-class db.m5.8xlarge ^ --upgrade-target-storage-config

Amazon RDS API を使用してブルー/グリーンデプロイを作成するには、以下のパラメータを指定して CreateBlueGreenDeployment オペレーションを使用します。

  • BlueGreenDeploymentName — ブルー/グリーンデプロイの名前を指定します。

  • Source — グリーン環境にコピーする DB インスタンスの ARN を指定します。

  • TargetEngineVersion — グリーン環境で DB エンジンのバージョンアップグレードをテストする場合は、エンジンバージョンを指定します。このオプションは、グリーン環境の DB インスタンスを指定された DB エンジンバージョンにアップグレードします。

    指定しなかった場合、グリーン環境の各 DB インスタンスは、ブルー環境の対応する DB インスタンスと同じエンジンバージョンで作成されます。

  • TargetDBParameterGroupName – グリーン環境内の DB インスタンスに関連付ける DB パラメータグループを指定します。

  • TargetDBInstanceClass – RDS Optimized Writes をサポートする DB インスタンスクラスを指定します。このオプションにより、グリーンプライマリ DB インスタンスで RDS Optimized Writes が有効になります。詳細については、「RDS Optimized Writes の有効化」を参照してください。

  • UpgradeTargetStorageConfig – グリーンデータベースのストレージファイルシステム設定をアップグレードするかどうかを指定します。このオプションを有効にできるのは、is-storage-config-upgrade-available オプションの値が DB インスタンスに対して true の場合、または同じリクエストで target-db-instance-class オプションの値を変更する場合のみです。詳細については、「DB インスタンスのストレージファイルシステムのアップグレード」を参照してください。