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

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

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

RDS は、ブルー環境のトポロジと設定をステージングエリアにコピーします。ブルー DB インスタンスにリードレプリカがある場合、グリーンインスタンスのレプリカとしてコピーされます。すべてのグリーンレプリカに割り当てられたストレージはグリーンプライマリインスタンスと一致し、他のストレージパラメータはブルーレプリカから継承されます。

ブルー DB インスタンスがマルチ AZ DB インスタンスデプロイの場合、グリーン DB インスタンスは、マルチ AZ DB インスタンスデプロイとして作成されます。

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

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

RDS for MySQL または RDS for MariaDB DB インスタンスをブルー/グリーンデプロイ用に準備する

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

物理レプリケーションを使用する RDS for PostgreSQL DB インスタンスをブルー/グリーンデプロイ用に準備する

物理レプリケーションを使用する RDS for PostgreSQL ブルー/グリーンデプロイを作成する前に、自動バックアップを有効にする必要があります。手順については、自動バックアップの有効化 を参照してください。

物理レプリケーションまたは論理レプリケーションを使用するバージョンのリストについては、「ブルー/グリーンデプロイの PostgreSQL レプリケーション方法」を参照してください。

論理レプリケーションを使用する RDS for PostgreSQL DB インスタンスをブルー/グリーンデプロイ用に準備する

論理レプリケーションを使用する RDS for PostgreSQL のブルー/グリーンデプロイを作成する前に、必ず以下を実行してください。論理レプリケーションまたは物理レプリケーションを使用するバージョンのリストについては、「ブルー/グリーンデプロイの PostgreSQL レプリケーション方法」を参照してください。

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

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

    • max_replication_slots

    • max_wal_senders

    • max_logical_replication_workers

    • max_worker_processes

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

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

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

  • RDS for PostgreSQL は PostgreSQL のネイティブ論理レプリケーションを使用し、先行書き込みログ (WAL) セグメントを、グリーン環境で再生するまでブルーインスタンスに保存します。ブルー/グリーンデプロイを作成する前に、以下のメトリクスをチェックして、ブルーインスタンスに十分な容量があることを確認します。

    • FreeStorageSpace

    • TransactionLogsGeneration

    • TransactionLogsDiskUsage

    • OldestReplicationSlotLag

    ブルーインスタンスに必要な追加のストレージを見積もるには、ワークロードのピーク期間中の TransactionLogGeneration CloudWatch メトリクスをモニタリングします。例えば、ワークロードが 24 時間で 100 GB の WAL データを生成する場合は、1 日分の WAL セグメントを収容するために、少なくとも 100 GB の追加ストレージがあることを確認してください。詳細については、「Amazon RDS インスタンスでのメトリクスのモニタリング」を参照してください。

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

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

デプロイ後に、グリーン環境の DB インスタンスに他の変更を加えることができます。例えば、より高いエンジンバージョンまたは別のパラメータグループを指定できます。

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

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

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

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

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

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

ストレージとパフォーマンスの設定を変更する

グリーン環境でストレージとパフォーマンスの設定を調整して、リソースの割り当てを最適化します。これらの設定には、割り当てストレージ、プロビジョンド IOPS、ストレージタイプ、ストレージスループット (gp3 ストレージ用) が含まれます。

グリーン DB インスタンスのストレージタイプは、gp2、gp3、io1、または io2 に変更できます。gp3 ストレージでは、ストレージスループットを調整して、需要の高いワークロードでデータ転送パフォーマンスを向上させたり、負荷の低いアプリケーションのコストを削減したりすることもできます。詳細については、「Amazon RDS DB インスタンスストレージ」を参照してください。

グリーン環境で割り当てストレージを増減することもできます。ただし、ストレージの削減は、ターゲットの割り当てストレージが現在のストレージ使用量よりも 20% 以上多い場合にのみ発生します。割り当てストレージを減らすと、Amazon RDS はストレージ設定のアップグレードを開始します。詳細については、「ストレージ設定のアップグレード」を参照してください。

ブルー DB インスタンスがマグネティックストレージを使用している場合は、割り当てストレージを増減するために、グリーン DB インスタンスを汎用またはプロビジョンド IOPS ストレージタイプに変更する必要があります。

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 または io2 Block Express) ストレージを使用し、インスタンスサイズが 4xlarge 以上のグリーン環境をプロビジョニングした場合、ストレージのアップグレードプロセスは速くなります。汎用 SSD (gp2) ストレージを含むストレージをアップグレードすると、I/O クレジットバランスを使い切る可能性があり、よってよりアップグレード時間が長くなります。詳細については、「Amazon RDS DB インスタンスストレージ」を参照してください。

ストレージのアップグレード中、グリーン DB インスタンスは一時的に使用できなくなりますが、ブルー DB インスタンスは引き続き使用できます。この間、レプリケーションは一時停止します。ブルーインスタンスでストレージをモニタリングし、ストレージが 90% に達した場合はスケールすることを検討してください。グリーンインスタンスはアップグレード後に自動的に 10% スケールします。

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

ブルー/グリーンデプロイの遅延読み込みとストレージの初期化

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

遅延読み込みは、アプリケーションがリクエストするデータブロックのみをロードします。まだロードされていないデータにアクセスしようとすると、Amazon EBS は Amazon S3 からすぐにデータを取得し、残りのデータはバックグラウンドでロードし続けます。詳細については、「Amazon EBS スナップショット」を参照してください。

ボリューム全体のパフォーマンスを加速するため、Amazon RDS はグリーン環境ボリューム内のすべてのブロックを読み取るストレージ初期化を提供します。Amazon EBS は Amazon S3 からブロックをプロアクティブにダウンロードし、最初の使用時から最大ボリュームパフォーマンスを実現します。ストレージの初期化は完全にバックグラウンドで行われるため、DB インスタンスの可用性、パッチ適用やアップグレードなどの進行中のアクティビティには影響しません。

ストレージの初期化は、ボリュームタイプが gp2gp3io1io2 のブルー/グリーンデプロイのインスタンスでのみ使用できます。t3 および t4 ファミリーを除くすべてのインスタンスクラスをサポートします。シングル AZ デプロイのグリーン DB インスタンスをマルチ AZ DB インスタンスデプロイに変更すると、ストレージの初期化にはマルチ AZ 設定のセカンダリノードが含まれます。

ストレージの初期化中、インスタンスはデータベースオペレーションで完全に利用可能ですが、初期化が完了するまでストレージのフルパフォーマンスに達しない場合があります。ストレージの初期化中、インスタンス全体のステータスは「ストレージの初期化」に変わり、進行状況インジケータには DB インスタンスのすべてのボリュームの最小初期化レベルが反映されます。

コンソール、AWS CLI、または Amazon RDS API を使用して、ストレージの初期化をモニタリングします。

Console

AWS Management Consoleに、ストレージの初期化の進行状況と DB インスタンスのステータスが表示されます。

ブルー/グリーンデプロイのストレージ初期化の進行状況インジケータ
AWS CLI

AWS CLI では、describe-db-instances コマンドを使用してストレージの初期化をモニタリングできます。レスポンスの PercentProgress フィールドには、Amazon S3 から取得されたデータの割合が表示されます。

aws rds describe-db-instances --db-instance-identifier my-db-instance { "DBInstances": [ { "DBInstanceIdentifier": "my-db-instance", "DBInstanceClass": "db.m5.2xlarge", "Engine": "postgres", "DBInstanceStatus": "storage-initialization", ... "PercentProgress": "34" } ] }
Amazon RDS API

Amazon RDS API では、DescribeDBInstances アクションを呼び出してストレージ初期化のステータスを取得します。

バックグラウンド初期化ジョブの進行に伴って進行状況インジケータが更新され、フルストレージ初期化が完了する前にストレージの準備状況を追跡できます。ストレージの初期化により、グリーン DB インスタンスが完全に動作すると最適化されたパフォーマンスが実現されます。

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

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

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

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

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

    [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 パラメータ

ストレージ割り当て

グリーン DB インスタンスに割り当てるストレージの量 (ギビバイト単位)。割り当てストレージを増減することを選択できます。

ブルー DB インスタンスがマグネティック (standard) ストレージを使用している場合は、グリーン環境で割り当てストレージを変更するために、グリーン DB インスタンスを汎用またはプロビジョンド IOPS ストレージタイプに変更する必要があります。

詳細については、「Amazon RDS DB インスタンスストレージ」を参照してください。

CLI オプション:

--target-allocated-storage

API パラメータ:

TargetAllocatedStorage

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

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

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 インスタンスと同じエンジンバージョンで作成されます。

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

CLI オプション:

--target-engine-version

RDS API パラメータ:

TargetEngineVersion

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

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

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

CLI オプション:

--target-db-instance-class

RDS API パラメータ:

TargetDBInstanceClass

プロビジョンド IOPS

初めにグリーンデータベースに割り当てられるプロビジョンド IOPS (1 秒あたりの入出力オペレーション) の量です。

この値は、グリーンプライマリ DB インスタンスにのみ適用され、グリーンレプリカには適用されません。

CLI オプション:

--target-iops

RDS API パラメータ:

TargetIops

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

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

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

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

CLI オプション:

--upgrade-target-storage-config

RDS API パラメータ:

UpgradeTargetStorageConfig

ストレージスループット

グリーンデータベースのストレージスループット値。この設定は、ストレージタイプに汎用 SSD (gp3) を選択した場合にのみ表示されます。

この値は、グリーンプライマリ DB インスタンスにのみ適用され、グリーンレプリカには適用されません。

詳細については、「gp3 ストレージ (推奨)」を参照してください。

CLI オプション:

--target-storage-throughput

RDS API パラメータ:

TargetStorageThroughput

ストレージタイプ

グリーンデータベースのストレージタイプ。以下のストレージタイプがサポートされています。

  • 汎用 SSD gp2

  • 汎用 SSD (gp3)

  • プロビジョンド IOPS (io1)

  • プロビジョンド IOPS SSD (io2)

この値は、グリーンプライマリ DB インスタンスにのみ適用され、グリーンレプリカには適用されません。

詳細については、「Amazon RDS ストレージタイプ」を参照してください。

CLI オプション:

--target-storage-type

RDS API パラメータ:

TargetStorageType