ブルー/グリーンデプロイの作成 - 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 を実行していることを確認してください。互換性のあるバージョンの一覧については、「Amazon RDS のブルー/グリーンデプロイでサポートされているリージョンと DB エンジン」を参照してください。

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

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

  • トリガーを使用する場合は、名前が「rds」で始まる pg_catalog.pg_publicationpg_catalog.pg_subscriptionpg_catalog.pg_replication_slots オブジェクトの作成、更新、削除を妨げないようにしてください。

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

ブルー/グリーンデプロイを作成するときに、グリーン環境の 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. 残りのセクションで、グリーン環境の設定を指定します。各設定の詳細については、「ブルー/グリーンデプロイを作成するための設定」を参照してください。

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

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

AWS CLI を使用してブルー/グリーンデプロイを作成するには、create-blue-green-deployment コマンドを使用します。各オプションの詳細については、「ブルー/グリーンデプロイを作成するための設定」を参照してください。

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

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

Amazon RDS API を使用してブルー/グリーンデプロイを作成するには、CreateBlueGreenDeployment 操作を使用します。各オプションの詳細については、「ブルー/グリーンデプロイを作成するための設定」を参照してください。

ブルー/グリーンデプロイを作成するための設定

次の表は、ブルー/グリーンデプロイを作成するときに選択できる設定を示しています。AWS CLI オプションの詳細については、「create-blue-green-deployment」を参照してください。RDS API パラメータの詳細については、「CreateBlueGreenDeployment」を参照してください。

コンソール設定 設定の説明 CLI オプションと RDS API パラメータ

ブルー/グリーンデプロイ識別子

ブルー/グリーンデプロイの名前。

CLI オプション:

--blue-green-deployment-name

API パラメータ:

BlueGreenDeploymentName

ブルーデータベース識別子

グリーン環境にコピーするインスタンスの識別子。CLI または API を使用するときには、インスタンスの Amazon リソースネーム (ARN) を指定します。

CLI オプション:

--source

API パラメータ:

Source

グリーンデータベースの DB パラメータグループ グリーン環境内のデータベースに関連付けるパラメータグループ。

CLI オプション:

--target-db-parameter-group-name

--target-db-cluster-parameter-group-name

API パラメータ:

TargetDBParameterGroupName

TargetDBClusterParameterGroupName

グリーンデータベースの最適化書き込みを有効にする

グリーンプライマリ DB インスタンスで RDS 最適化書き込みを有効にします。詳細については、「RDS Optimized Writes の有効化」を参照してください。

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

CLI と API では、RDS 最適化書き込みをサポートするターゲット DB インスタンスクラスを指定すると、グリーンプライマリ DB インスタンスで自動的に有効になります。

グリーンデータベースのエンジンバージョン

グリーン環境のデータベースを指定された DB エンジンバージョンにアップグレードします。

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

CLI オプション:

--target-engine-version

RDS API パラメータ:

TargetEngineVersion

グリーン DB インスタンスクラス

グリーン環境の各 DB インスタンスのコンピューティング容量とメモリ容量 (例: db.m5d.xlarge)。

このオプションは、グリーンデータベースの RDS 最適化書き込みを有効にした場合にのみ表示されます。

CLI オプション:

--target-db-instance-class

RDS API パラメータ:

TargetDBInstanceClass

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

ストレージファイルシステム設定をアップグレードするかどうかを選択します。この設定を有効にすると、RDS はグリーンデータベースを古いストレージファイルシステムから優先設定に移行します。

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

詳細については、「DB インスタンスのストレージファイルシステムのアップグレード」を参照してください。

CLI オプション:

--upgrade-target-storage-config

RDS API パラメータ:

UpgradeTargetStorageConfig