翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
DR Orchestrator Framework を使用してリージョン間のフェイルオーバーとフェイルバックを自動化する
作成者: Jitendra Kumar (AWS)、Oliver Francis (AWS)、Pavithra Balasubramanian (AWS)
コードリポジトリ: aws-cross-region-dr-databases | 環境:本稼働 | テクノロジー: データベース、インフラストラクチャ、移行、モダナイゼーション |
AWS サービス: Amazon Aurora、AWS CloudFormation、Amazon ElastiCache、AmazonRDS、AWSStep Functions |
[概要]
このパターンでは、DR Orchestrator Framework を使用して、エラーが発生しやすい手動ステップをオーケストレーションおよび自動化して、Amazon Web Services (AWS) リージョン全体でディザスタリカバリを実行する方法について説明します。このパターンは、次のデータベースを対象としています。
Amazon Relational Database Service (Amazon RDS) for My SQL、Amazon RDS for Postgre SQL、または Amazon RDS for MariaDB
Amazon Aurora My SQL互換エディションまたは Amazon Aurora Postgre SQL互換エディション (一元化されたファイルを使用)
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 Orchestrator Framework AWS リージョン
2 つの Amazon Simple Storage Service
バケット 2 つのサブネットと AWS セキュリティグループを持つ仮想プライベートクラウド (VPC)
エンジン固有の前提条件
Amazon Aurora – 2 つの で少なくとも 1 つの Aurora グローバルデータベースが使用可能である必要があります 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 グローバルデータベースの設定要件」を参照してください。
このソリューションは、1 つのリードレプリカを持つプライマリデータベースインスタンスを使用してテストされています。複数のリードレプリカを使用する場合は、本番環境に実装する前に、ソリューションを徹底的にテストしてください。
ElastiCache 制限
グローバルデータストアのリージョンの可用性と ElastiCache 設定要件については、 ElastiCache ドキュメントの「前提条件と制限」を参照してください。
Amazon p roduct RDS バージョン
Amazon は、次のエンジンバージョンRDSをサポートしています。
MySQL – Amazon は、My SQL8.0 と MySQL SQL5.7 の次のバージョンを実行する DB インスタンスRDSをサポートしています。
PostgreSQL – Amazon RDS for Postgre のサポートされているバージョンについてはSQL、「利用可能な PostgreSQL データベースバージョン」を参照してください。
MariaDB – Amazon は、次のバージョンの MariaDBインスタンスRDSをサポートしています。
MariaDB 10.11
MariaDB 10.6
MariaDB 10.5
Aurora 製品バージョン
Amazon Aurora グローバルデータベースの切り替えには、Aurora My SQLが MySQL 5.7 互換、バージョン 2.09.1 以降と互換性があることが必要です
詳細については、「Amazon Aurora グローバルデータベースの制限」を参照してください。
ElastiCache (Redis OSS) 製品バージョン
Amazon ElastiCache (Redis OSS) は、以下の Redis バージョンをサポートしています。
Redis 7.1 (拡張)
Redis 7.0 (拡張)
Redis 6.2 (拡張)
Redis 6.0 (拡張)
Redis 5.0.6 (拡張)
詳細については、「サポートされている ElastiCache (Redis OSS) バージョン」を参照してください。
アーキテクチャ
Amazon RDSアーキテクチャ
Amazon RDSアーキテクチャには、次のリソースが含まれています。
クライアントの読み取り/書き込みアクセスを持つプライマリリージョン (
us-east-1
) で作成されたプライマリ Amazon RDS DB インスタンスクライアントの読み取り専用アクセスを持つセカンダリリージョン (
us-west-2
) RDS で作成された Amazon リードレプリカプライマリリージョンとセカンダリリージョンの両方にデプロイされた DR Orchestrator Framework
図に示す内容は以下のとおりです。
プライマリインスタンスとセカンダリインスタンス間の非同期レプリケーション
プライマリリージョンのクライアントの読み取り/書き込みアクセス
セカンダリリージョンのクライアントに対する読み取り専用アクセス
Aurora アーキテクチャ
Amazon Aurora アーキテクチャには、次のリソースが含まれています。
アクティブライターエンドポイントを使用してプライマリリージョン (
us-east-1
) で作成されたプライマリ Aurora DB クラスター非アクティブライターエンドポイントを使用してセカンダリリージョン (
us-west-2
) で作成された Aurora DB クラスタープライマリリージョンとセカンダリリージョンの両方にデプロイされた DR Orchestrator Framework
図に示す内容は以下のとおりです。
プライマリクラスターとセカンダリクラスター間の非同期レプリケーション
アクティブライターエンドポイントを持つプライマリ DB クラスター
非アクティブライターエンドポイントを持つセカンダリ DB クラスター
ElastiCache (Redis OSS) アーキテクチャ
Amazon ElastiCache (Redis OSS) アーキテクチャには、次のリソースが含まれています。
2 つのクラスターで作成された ElastiCache (Redis OSS) グローバルデータストア:
プライマリリージョンのプライマリクラスター (
us-east-1
)セカンダリリージョンのセカンダリクラスター (
us-west-2
)
2 つのクラスター間の 1.2 TLS 暗号化による Amazon クロスリージョンリンク
プライマリリージョンとセカンダリリージョンの両方でデプロイされた DR Orchestrator Framework
自動化とスケール
DR Orchestrator Framework はスケーラブルで、複数の AWS データベースのフェイルオーバーまたはフェイルバックを並行してサポートします。
次のペイロードコードを使用して、アカウント内の複数の AWS データベースをフェイルオーバーできます。この例では、3 つの AWS データベース (Aurora My SQL互換または Aurora Postgre SQL互換などの 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 および Postgre と互換性があるフルマネージドリレーショナルデータベースエンジンですSQL。
Amazon ElastiCache は、 で分散インメモリキャッシュ環境を設定、管理、スケーリングするのに役立ちます AWS クラウド。このパターンは Amazon ElastiCache (Redis ) を使用しますOSS。
AWS Lambda
は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。このパターンでは、Lambda 関数が AWS Step Functions によってステップの実行に使用されます。 Amazon Relational Database Service (Amazon RDS) は、 でリレーショナルデータベースを設定、運用、スケーリングするのに役立ちます AWS クラウド。このパターンは、Amazon RDS for My SQL、Amazon RDS for Postgre SQL、および Amazon RDS for MariaDB をサポートしています。
AWS SDK for Python (Boto3)
は、Python アプリケーション、ライブラリ、またはスクリプトを と統合するのに役立ちます AWS のサービス。このパターンでは、Boto3 APIs はデータベースインスタンスまたはグローバルデータベースとの通信に使用されます。 AWS Step Functions
は、 AWS Lambda 関数やその他の を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。このパターンでは、Step Functions ステートマシンを使用して、データベースインスタンスまたはグローバルデータベースのクロスリージョンフェイルオーバーとフェイルバックをオーケストし、実行します。
コードリポジトリ
このパターンのコードは、 の 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 Orchestrator Framework をプライマリリージョンにデプロイします。 | DR Orchestrator Framework をプライマリリージョン (
| AWS 管理者 |
DR Orchestrator Framework をセカンダリリージョンにデプロイします。 | セカンダリリージョン (
| AWS 管理者 |
デプロイメントを確認する | AWS CloudFormation コマンドが正常に実行されると、次の出力が返されます。
または、 AWS CloudFormation コンソールに移動して | AWS 管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
データベースサブネットとセキュリティグループを作成します。 | でVPC、プライマリ (
| AWS 管理者 |
プライマリ DB インスタンスまたはクラスターのパラメータファイルを更新します。 |
Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
| AWS 管理者 |
DB インスタンスまたはクラスターをプライマリリージョンにデプロイします。 | インスタンスまたはクラスターをプライマリリージョン ( Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
AWS CloudFormation リソースが正常にデプロイされたことを確認します。 | AWS 管理者 |
セカンダリ DB インスタンスまたはクラスターのパラメータファイルを更新します。 |
Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
| AWS 管理者 |
DB インスタンスまたはクラスターをセカンダリリージョンにデプロイします。 | データベースエンジンに基づいて、次のコマンドを実行します。 Amazon RDS
Amazon Aurora
Amazon ElastiCache (Redis OSS)
AWS CloudFormation リソースが正常にデプロイされたことを確認します。 | AWS 管理者 |
関連リソース
上のデータベースのディザスタリカバリ戦略 AWS (AWS 規範ガイダンス戦略)
でリレーショナルデータベースの DR ソリューションを自動化する AWS (AWS 規範ガイダンスガイド)
でリレーショナルデータベースの DR ソリューションを自動化する AWS (AWS 規範ガイダンスガイド)