翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Aurora ステートマシンと Step Functions ステートマシン
このセクションでは、Amazon Aurora クラスターのフェイルオーバーとフェイルバックに固有のプロセスマシンとステートマシンについて説明します。クラスターはグローバルデータベースとして設定されます。
注記
デモンストレーションの目的で、この例では Aurora MySQL 互換エディションを使用しています。Aurora PostgreSQL 互換エディションでも同様の手順を使用できます。
定常状態
定常状態では、Amazon Aurora MySQL 互換グローバルデータベース (dr-globaldb-cluster-mysql
) が 2 つの DB クラスターで作成されています。最初の DB クラスター (db-cluster-01
) は、読み取り/書き込みワークロードを処理するためにプライマリ AWS リージョン (us-east-1
) に作成されています。2 番目の DB クラスター (db-cluster-02
) は、読み取り専用ワークロードをサーバーするためにセカンダリリージョン (us-west-2
) に作成されています。
DR ソリューションの提供に加えて、アプリケーションからセカンダリ DB クラスターに読み取りクエリをルーティングすることで、プライマリ DB クラスターの負荷を軽減できます。これらの各クラスターには、それぞれ dbcluster-01-use1-instance-1
および という名前のデータベースインスタンスが 1 つ含まれdbcluster-02-usw2-instance-2
ています。
イベント状態
Amazon Aurora グローバルデータベースを使用すると、災害の計画と復旧をかなり迅速に行うことができます。ディザスタからの復旧は通常、目標復旧時間 (RTO) と目標復旧時点 (RPO) の値を使用して測定されます。詳細については、「Amazon Aurora グローバルデータベースでのスイッチオーバーまたはフェイルオーバーの使用」を参照してください。
Aurora グローバルデータベースでは、フェイルオーバーには 2 つの異なるアプローチがあります。
-
スイッチオーバー (マネージド計画フェイルオーバー)
-
フェイルオーバー (手動の計画外のフェイルオーバー、または のデタッチと昇格)
切り替え
スイッチオーバーは、運用メンテナンスやその他の計画された運用手順など、制御された環境を対象としています。マネージド計画フェイルオーバーを使用すると、Aurora グローバルデータベースのプライマリ DB クラスターをセカンダリリージョンの 1 つに再配置できます。スイッチオーバーはセカンダリ DB クラスターがプライマリデータベースと同期されるまで待機するため、RPO は 0 (データ損失なし) です。詳細については、「Amazon Aurora グローバルデータベースのスイッチオーバーの実行」を参照してください。
dr-orchestrator-stepfunction-FAILOVER
ステートマシンはイベント状態中に呼び出され、プライマリクラスターを選択したセカンダリリージョン () に切り替えますus-west-2
。
スイッチオーバーを実行するには、次の手順を実行します。
-
AWS Management Consoleにサインインします。
-
リージョンを DR リージョン (
us-west-2
) に変更します。 -
サービス に移動し、Step Functions を選択します。
-
dr-orchestrator-stepfunction-FAILOVER
ステートマシンに移動します。 -
実行の開始 を選択し、
Input - optional
セクションに次の JSON コードを入力します。{ "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" } } ] } ] }
-
dr-orchestrator-stepfunction-FAILOVER
ステートマシンはリソースタイプをPlannedFailoverAuroraMySQ
L として読み取り、dr-orchestrator-stepfunction-planned-Aurora-failover
ステートマシンを呼び出して Aurora グローバルデータベースをフェイルオーバーします。 -
dr-orchestrator-stepfunction-planned-Aurora-failover
ステートマシンは次の手順を実行して、Aurora MySQL 互換グローバルデータベースロールを切り替えます。[ステップ] 説明 想定値 インポートの解決 Lambda 関数は、 !Import <variable name>
値を実際の名前に置き換えます。"!Import dr-globaldb-cluster-mysql-global-identifier"
は に置き換えられます"dr-globaldb-cluster-mysql"
。フェイルオーバー Aurora グローバルクラスター Lambda 関数は failover_global_cluster Boto3 APIs を呼び出して、Aurora グローバルデータベースをフェイルオーバーします。 { 'GlobalCluster': { 'GlobalClusterIdentifier': 'dr-globaldb-cluster-mysql', 'GlobalClusterResourceId': 'cluster-cce7f9bec2846db4', 'GlobalClusterArn': 'arn:aws:rds::xxx', 'Status': 'failing-over', .... .... } }
フェイルオーバーステータスを確認する Lambda 関数は describe_db_clusters Boto3 APIsを呼び出して、フェイルオーバーのステータスを確認します。 変更中、使用可能 成功トークンの送信 Lambda 関数は send_task_success Boto3 APIsを呼び出し、成功トークンを DR Orchestrator Failover
ステートマシンに送り返します。h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W -
Amazon RDS コンソールに移動します。ステータス では、Aurora グローバルデータベースの値が「利用可能」から「 の切り替え」または「 の変更」に変わります。
-
dr-orchestrator-stepfunction-planned-Aurora-failover
ステートマシンが完了すると、成功トークンをdr-orchestrator-stepfunction-FAILOVER
ステートマシンに送り返します。 -
dr-orchestrator-stepfunction-FAILOVER
ステートマシンが完了しました。
コンソールでは、セカンダリクラスター (dbcluster-02
) のロールがプライマリクラスター になり、クラスターは読み取り/書き込みワークロードを処理する準備が整いました。元のプライマリクラスター (dbcluster-01
) のロールがセカンダリクラスター としてリストされるようになりました。
手動の計画外のフェイルオーバー
まれに、Aurora グローバルデータベースのプライマリ で予期しない停止が発生することがあります AWS リージョン。この場合、プライマリ Aurora DB クラスターとその読み取りノードを使用できなくなり、プライマリクラスターとセカンダリクラスター間のレプリケーションが停止します。ダウンタイム (RTO) とデータ損失 (RPO) の両方を最小限に抑えるには、迅速にクロスリージョンフェイルオーバーを実行し、Aurora グローバルデータベースを再構築します。詳細については、「予期しない停止から Amazon Aurora グローバルデータベースを復旧する」を参照してください。
計画外のフェイルオーバーを実行するには、Aurora グローバルデータベースからセカンダリクラスターをデタッチする必要があります。計画外のフェイルオーバーを実行する前に、プライマリ Aurora DB クラスターでのアプリケーションの書き込みを停止します。フェイルオーバーが正常に完了したら、新しいプライマリ DB クラスターに書き込むようにアプリケーションを再設定します。このアプローチは、データ損失を防ぐのに役立ちます。また、フェイルオーバープロセス中にプライマリライターノードがオンラインに戻った場合に、データの不整合を回避するのにも役立ちます。
計画外のフェイルオーバーを実行するには、dr-orchestrator-stepfunction-FAILOVER
ステートマシンを呼び出します。この例では、セカンダリクラスター (db-cluster-02
) は DR リージョン (us-west-2
) の定常状態にあります。
フェイルオーバーを実行するには、次の手順を実行します。
-
コンソール にサインインします。
-
リージョンを DR リージョン (
us-west-2
) に変更します。 -
サービス に移動し、Step Functions を選択します。
-
dr-orchestrator-stepfunction-FAILOVER
ステートマシンに移動します。 -
実行の開始 を選択し、 を
UnPlannedFailoverAurora
として使用して、Input - optional
セクションに次の JSON コードを入力しますresourceType
。{ "StatePayload": [ { "layer": 1, "resources": [ { "resourceType": "UnPlannedFailoverAurora", "resourceName": "Performing unplanned failover for Amazon Aurora global databases (MySQL)", "parameters": { "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier", "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier", "ClusterRegion": "!Import dr-globaldb-cluster-mysql-cluster-region" } } ] } ] }
-
dr-orchestrator-stepfunction-FAILOVER
ステートマシンはリソースタイプを として読み取りUnPlannedFailoverAuroraMySQL
、dr-orchestrator-stepfunction-unplanned-Aurora-failover
ステートマシンDetach Cluster from Global Database
からタスクを呼び出します。 -
Detach Cluster from Global Database
タスクは、グローバルデータベースからセカンダリクラスターをデタッチ (削除) します。 -
セカンダリクラスター (
dbcluster-02
) はスタンドアロンクラスターに昇格され、読み取り/書き込みワークロードを処理できます。 -
dr-orchestrator-stepfunction-FAILOVER
ステートマシンが完了しました。 -
セカンダリクラスター (
dbcluster-02
) は Aurora グローバルデータベースからデタッチされ、読み取り/ライターワークロードを処理するスタンドアロンクラスターになります。 -
新しいクラスターエンドポイントを使用して、この新しいスタンドアロン Aurora DB クラスターにすべての書き込みオペレーションを送信するようにアプリケーションを再設定します。
フェイルバック
障害 (またはスケジュールされたイベント) が解決されると、フェイルバックはデータベースを元の (または新しい) プライマリロケーションに返します。計画外の停止が解決されたら、以前のプライマリリージョンを Aurora グローバルデータベースに戻したい場合があります。まず、以前のプライマリリージョンから既存の DB クラスターを削除し、新しいプライマリリージョンから新しい DB クラスターを作成してから、管理された計画されたフェイルオーバープロセスを使用して新しいクラスターのロールを切り替える必要があります。
これは、オフピーク時または週末に実行できる計画されたアクティビティと見なすことができます。
ステートマシンは で作成されたため、以前のプライマリリージョン (us-east-1
) からDR Orchestrator FAILBACK
ステートマシンを実行するDeletionProtection
前に、Amazon Aurora DB クラスターを手動で変更し、 を無効にする必要がありますDeletionProtection
。
DR Orchestrator Framework は、dr-orchestrator-stepfunction-FAILBACK
ステートマシンを使用して既存のクラスターを削除し、以前のプライマリリージョンに新しいクラスターを作成するステップを自動化します。
を無効にするにはDeletionProtection
、次の手順を実行します。
-
コンソール にサインインします。
-
リージョンを以前のプライマリリージョン () に変更します
us-east-1
。 -
Amazon RDS コンソールに移動し、クラスター名 (
dbcluster-01
) を選択し、 の変更を選択します。 -
「削除保護」で、「削除保護を有効にする」チェックボックスをオフにし、「続行」を選択します。
-
すぐに適用 を選択し、クラスターの変更 を選択します。
DR Orchestrator FAILBACK
ステートマシンは、以前のプライマリリージョン () からのフェイルバックプロセス中に呼び出されますus-east-1
。
フェイルバックを実行するには、次の手順を実行します。
-
コンソール にサインインします。
-
リージョンを以前のプライマリリージョン () に変更します
us-east-1
。 -
サービス に移動し、Step Functions を選択します。
-
DR Orchestrator FAILBACK
ステートマシンに移動します。 -
実行の開始 を選択し、
Input - optional
セクションに次の JSON コードを入力します。{ "StatePayload": [ { "layer": 1, "resources": [ { "resourceType": "CreateAuroraSecondaryDBCluster", "resourceName": "To create secondary Aurora MySQL Global Database Cluster", "parameters": { "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier", "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier", "DBClusterName": "!Import dr-globaldb-cluster-mysql-cluster-name", "SourceDBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-source-cluster-identifier", "DBInstanceIdentifier": "!Import dr-globaldb-cluster-mysql-instance-identifier", "Port": "!Import dr-globaldb-cluster-mysql-port", "DBInstanceClass": "!Import dr-globaldb-cluster-mysql-instance-class", "DBSubnetGroupName": "!Import dr-globaldb-cluster-mysql-subnet-group-name", "VpcSecurityGroupIds": "!Import dr-globaldb-cluster-mysql-vpc-security-group-ids", "Engine": "!Import dr-globaldb-cluster-mysql-engine", "EngineVersion": "!Import dr-globaldb-cluster-mysql-engine-version", "KmsKeyId": "!Import dr-globaldb-cluster-mysql-KmsKeyId", "SourceRegion": "!Import dr-globaldb-cluster-mysql-source-region", "ClusterRegion": "!Import dr-globaldb-cluster-mysql-cluster-region", "BackupRetentionPeriod": "7", "MonitoringInterval": "60", "StorageEncrypted": "True", "EnableIAMDatabaseAuthentication": "True", "DeletionProtection": "True", "CopyTagsToSnapshot": "True", "AutoMinorVersionUpgrade": "True", "MonitoringRoleArn": "!Import rds-mysql-instance-RDSMonitoringRole" } } ] } ] }
-
DR Orchestrator FAILBACK
ステートマシンはリソースタイプを として読み取りCreateAuroraSecondaryDBCluster
、ステートマシンをdr-orchestrator-stepfunction-create-Aurora-Secondary-cluster
呼び出します。 -
dr-orchestrator-stepfunction-create-Aurora-Secondary-cluster
ステートマシンは、以前のプライマリリージョン (dbcluster-01
) から既存のクラスター () を削除しますus-east-1
。 -
クラスター (
dbcluster-01
) が削除されると、ステートマシンは DB インスタンスとともに新しいクラスター (dbcluster-01
) を作成し、Aurora グローバルデータベースをセカンダリクラスターとして結合して読み取り専用ワークロードを処理します。 -
セカンダリクラスターが使用可能になると、
dr-orchestrator-stepfunction-create-Aurora-Secondary-cluster
ステートマシンは完了し、成功トークンをDR Orchestrator Failback
ステートマシンに送り返します。 -
dr-orchestrator-stepfunction-FAILBACK
ステートマシンが完了しました。 -
Aurora グローバルデータベースは、Amazon RDS コンソールで確認できます。
プライマリ DB クラスターを us-east-1 に再配置する場合は、「スイッチオーバー」セクションで説明されている手順に従います。