翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
DR Orchestrator Framework を使用してクロスリージョンのフェイルオーバーとフェイルバックを自動化
Amazon Web Services、Jitendra Kumar、Pavithra Balasubramanian、Oliver Francis
概要
本パターンでは、DR Orchestrator Framework を使用して、エラーが発生しやすい手動ステップをオーケストレーションおよび自動化し、Amazon Web Services (AWS) リージョン全体でディザスタリカバリを実行する方法について説明します。本パターンでは以下のデータベースがカバーされています。
Amazon Relational Database Service (Amazon RDS) for MySQL、Amazon RDS for PostgreSQL、または Amazon RDS for MariaDB
Amazon Aurora MySQL 互換エディションまたは Amazon Aurora PostgreSQL 互換エディション (一元化されたファイルを使用)
Amazon ElastiCache (Redis OSS)
DR Orchestrator Framework の機能を実際に使ってみるため、2 つの DB インスタンスまたはクラスターを作成します。プライマリは にあり AWS リージョン us-east-1、セカンダリは にありますus-west-2。これらのリソースを作成するには、aws-cross-region-dr-databasesApp-Stackフォルダにある AWS CloudFormation テンプレートを使用します。
前提条件と制限事項
一般的な前提条件
プライマリとセカンダリの両方にデプロイされた DR オーケストレーターフレームワーク AWS リージョン
2 つのサブネットと AWS セキュリティグループを持つ Virtual Private Cloud (VPC)
エンジンに固有の前提条件
Amazon Aurora – 少なくとも 1 つの Aurora グローバルデータベースを 2 つで利用できる必要があります AWS リージョン。
us-east-1をプライマリリージョンとして、us-west-2をセカンダリリージョンとして使用できます。Amazon ElastiCache (Redis OSS) – ElastiCache グローバルデータストアは 2 つで利用できる必要があります AWS リージョン。
use us-east-1をプライマリリージョンとして、us-west-2をセカンダリリージョンとして使用できます。
Amazon RDS の制限事項
DR Orchestrator Framework は、フェイルオーバーまたはフェイルバックの実行前にレプリケーションラグをチェックしません。レプリケーションラグは手動でチェックする必要があります。
このソリューションは、1 つのリードレプリカを持つプライマリデータベースインスタンスを使用してテストされています。複数のリードレプリカを使用する場合は、本番環境に実装する前にソリューションを十分にテストします。
Aurora の制限事項
機能の可用性とサポートは、各データベースエンジンの特定のバージョン、および AWS リージョンによって異なります。クロスリージョンレプリケーションの機能およびリージョンの可用性の詳細については、「クロスリージョンリードレプリカ」を参照してください。
Aurora グローバルデータベースには、サポートされている Aurora DB インスタンスクラスと の最大数に関する特定の設定要件があります AWS リージョン。詳細については、「Amazon Aurora Global Database の構成要件」を参照してください。
このソリューションは、1 つのリードレプリカを持つプライマリデータベースインスタンスを使用してテストされています。複数のリードレプリカを使用する場合は、本番環境に実装する前にソリューションを十分にテストします。
ElastiCache の制限事項
Global Datastore と ElastiCache の設定要件のリージョンの可用性については、ElastiCache ドキュメントの「前提条件と制限」を参照してください。
Amazon RDS 製品バージョン
Amazon RDS は、以下のエンジンバージョンをサポートしています。
MySQL – Amazon RDS は、MySQL 8.0 および MySQL 5.7 バージョンを実行している DB インスタンスをサポートしています。
PostgreSQL – Amazon RDS for PostgreSQL のサポートされているバージョンについては、「利用可能な PostgreSQL データベースバージョン」を参照してください。
MariaDB – は、以下のバージョンの MariaDB を実行する DB インスタンスをサポートしています。
MariaDB 10.11
MariaDB 10.6
MariaDB 10.5
Aurora 製品バージョン
MySQL 5.7 と互換性のある Aurora MySQL の場合、Amazon Aurora Global Database のスイッチオーバーにはバージョン 2.09.1 以降のマイナーバージョンが必要になります。
詳細については、「Amazon Aurora Global Database の制限」を参照してください。
ElastiCache (Redis OSS) 製品バージョン
Amazon ElastiCache (Redis OSS) は、次の Redis バージョンをサポートしています。
Redis 7.1 (拡張)
Redis 7.0 (拡張)
Redis 6.2 (拡張)
Redis 6.0 (拡張)
Redis 5.0.6 (拡張)
詳細については、「Supported ElastiCache (Redis OSS) version」を参照してください。
アーキテクチャ
Amazon RDS アーキテクチャ
Amazon RDS のアーキテクチャには、以下のリソースが含まれています。
クライアントの読み取り/書き込みアクセス権限を持つプライマリリージョン (
us-east-1) で作成された、プライマリ Amazon RDS DB インスタンスクライアントの読み取り専用アクセス権限を持つセカンダリリージョン (
us-west-2) で作成された Amazon RDS リードレプリカプライマリとセカンダリ両方のリージョンにデプロイされた DR オーケストレーターフレームワーク

図に示す内容は以下のとおりです。
プライマリインスタンスとセカンダリインスタンス間の非同期レプリケーション
プライマリリージョンのクライアントの読み取り/書き込みアクセス
セカンダリリージョンのクライアントの読み取り専用アクセス
Aurora のアーキテクチャ
Amazon Aurora のアーキテクチャには、以下のリソースが含まれています。
アクティブライターエンドポイントを使用してプライマリリージョン (
us-east-1) で作成されたプライマリ Aurora DB クラスター非アクティブライターエンドポイントを持つセカンダリリージョン (
us-west-2) で作成された Aurora DB クラスタープライマリとセカンダリ両方のリージョンにデプロイされた DR オーケストレーターフレームワーク

図に示す内容は以下のとおりです。
プライマリクラスターとセカンダリクラスター間の非同期レプリケーション
アクティブライターエンドポイントを持つプライマリ DB クラスター
非アクティブライターエンドポイントを持つセカンダリ DB クラスター
ElastiCache (Redis OSS) のアーキテクチャ
Amazon ElastiCache (Redis OSS) のアーキテクチャには以下のリソースが含まれています。
2 つのクラスターで作成された ElastiCache (Redis OSS) グローバルデータストア
プライマリリージョンのプライマリクラスター (
us-east-1)セカンダリリージョン (
us-west-2) のセカンダリクラスター
2 つのクラスター間の TLS 1.2 暗号化を使用した Amazon クロスリージョンリンク
プライマリとセカンダリ両方のリージョンにデプロイされた DR オーケストレーターフレームワーク

自動化とスケール
DR Orchestrator Framework はスケーラブルで、複数の AWS データベースのフェイルオーバーまたはフェイルバックを並行してサポートします。
次のペイロードコードを使用して、アカウント内の複数の AWS データベースをフェイルオーバーできます。この例では、3 つの AWS データベース (Aurora MySQL 互換または Aurora PostgreSQL 互換などの 2 つのグローバルデータベース、および 1 つの Amazon RDS for MySQL インスタンス) が DR リージョンにフェイルオーバーします。
{ "StatePayload": [ { "layer": 1, "resources": [ { "resourceType": "PlannedFailoverAurora", "resourceName": "Switchover (planned failover) of Amazon Aurora global databases (MySQL)", "parameters": { "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier", "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier" } }, { "resourceType": "PlannedFailoverAurora", "resourceName": "Switchover (planned failover) of Amazon Aurora global databases (PostgreSQL)", "parameters": { "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-postgres-global-identifier", "DBClusterIdentifier": "!Import dr-globaldb-cluster-postgres-cluster-identifier" } }, { "resourceType": "PromoteRDSReadReplica", "resourceName": "Promote RDS for MySQL Read Replica", "parameters": { "RDSInstanceIdentifier": "!Import rds-mysql-instance-identifier", "TargetClusterIdentifier": "!Import rds-mysql-instance-global-arn" } } ] } ] }
ツール
AWS サービス
「Amazon Aurora」はクラウド用に構築されたフルマネージド型のリレーショナルデータベースエンジンで、MySQL および PostgreSQL と互換性があります。
Amazon ElastiCache は、 AWS クラウドにある分散したインメモリキャッシュ環境のセットアップ、管理、スケールに役立ちます。このパターンでは、Amazon ElastiCache (Redis OSS) を使用します。
AWS Lambda
は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。このパターンでは、Lambda 関数は AWS Step Functions によってステップの実行に使用されます。 Amazon Relational Database Service (Amazon RDS) を使用して、 AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。このパターンは、Amazon RDS for MySQL、Amazon RDS for PostgreSQL、Amazon RDS for MariaDB をサポートしています。
AWS SDK for Python (Boto3)
は、Python アプリケーション、ライブラリ、またはスクリプトを と統合するのに役立ちます AWS のサービス。このパターンでは、Boto3 API はデータベースインスタンスまたはグローバルデータベースとの通信に使用されます。 AWS Step Functions
は、 AWS Lambda 関数やその他の を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。このパターンでは、Step Functions ステートマシンを使用して、データベースインスタンスまたはグローバルデータベースの、クロスリージョンフェイルオーバーとフェイルバックをオーケストレーションして実行します。
コードリポジトリ
このパターンのコードは、GitHub の aws-cross-region-dr-databases
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
GitHub リポジトリのクローン作成 | リポジトリを複製するには、次のコマンドを実行します。
| AWS DevOps、AWS 管理者 |
Lambda 関数コードを .zip ファイルアーカイブにパッケージ化します。 | Lambda 関数のアーカイブファイルを作成して、DR Orchestrator Framework の依存関係を含めます。
| AWS 管理者 |
S3 バケットを作成します。 | DR Orchestrator Framework を最新の設定で保存するには S3 バケットが必要です。2 つの S3 バケットを作成します。1 つはプライマリリージョン (
| AWS 管理者 |
サブネットとセキュリティグループを選択します。 | プライマリリージョン (
| AWS 管理者 |
DR Orchestrator のパラメータファイルを更新します。 |
次のパラメータ値を使用して、
| AWS 管理者 |
DR Orchestrator Framework コードを S3 バケットにアップロードします。 | このコードは、ローカルディレクトリよりも S3 バケットにアップロードする方が安全です。すべてのファイルとサブフォルダを含む コードをアップロードするには、次の操作を行います。
| AWS 管理者 |
DR オーケストレーターフレームワークをプライマリリージョンにデプロイします。 | 次のコマンドを実行し、DR Orchestrator Framework をプライマリリージョン (
| AWS 管理者 |
DR Orchestrator Framework をセカンダリリージョンにデプロイします。 | セカンダリリージョン (
| AWS 管理者 |
デプロイメントを確認する。 | CloudFormation コマンドが正常に実行されると、次の出力が返されます。
または、 CloudFormation コンソールに移動し、 | AWS 管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
データベースサブネットとセキュリティグループを作成します。 | VPC で、プライマリ (
| AWS 管理者 |
プライマリ DB インスタンスまたはクラスターの、パラメータファイルを更新します。 |
Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
| AWS 管理者 |
DB インスタンスまたはクラスターをプライマリリージョンにデプロイします。 | インスタンスまたはクラスターをプライマリリージョン ( Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
CloudFormation リソースが正常にデプロイされたことを確認します。 | AWS 管理者 |
セカンダリ DB インスタンスまたはクラスターのパラメータファイルを更新します。 |
Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
| AWS 管理者 |
DB インスタンスまたはクラスターをセカンダリリージョンにデプロイします。 | データベースエンジンに基づいて、次のコマンドを実行します。 Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
CloudFormation リソースが正常にデプロイされたことを確認します。 | AWS 管理者 |
関連リソース
のデータベースのディザスタリカバリ戦略 AWS (AWS 規範ガイダンス戦略)
でリレーショナルデータベースの DR ソリューションを自動化する AWS (AWS 規範ガイダンスガイド)
でリレーショナルデータベースの DR ソリューションを自動化する AWS (AWS 規範ガイダンスガイド)