Amazon Web Services ブログ
Amazon Application Recovery Controller のリージョン切り替えのご紹介: マルチリージョンアプリケーションリカバリサービス
AWS のデベロッパーアドボケイトとして、私は複数の AWS リージョンにまたがって重要なアプリケーションを運用している多くのエンタープライズ組織と協業してきました。これらの組織がしばしば共有する重要な懸念事項は、自社のリージョンフェイルオーバー戦略への信頼の欠如です。すなわち、必要なときに機能するかどうか、すべての依存関係が特定されているかどうか、チームが手順を十分に練習しているかどうかについて、自信が持てないのです。従来のアプローチでは、リージョンレベルの切り替えに向けた準備状況が不明確になることがよくあります。
8 月 1 日、Amazon Application Recovery Controller (ARC) のリージョン切り替えを発表します。これは、組織が自信をもってリージョン切り替えを計画、練習、オーケストレートできるようにし、リージョン間のリカバリオペレーションに関する不確実性を排除する、可用性の高いフルマネージド機能です。リージョン切り替えは、AWS 上のマルチリージョンアプリケーションのリカバリをオーケストレートするのに役立ちます。ある AWS リージョンから別の AWS リージョンにアプリケーションの運用を切り替える必要がある場合に、AWS のサービスとアカウント全体でリカバリタスクを調整および自動化する一元化されたソリューションを提供します。
多くのお客様は、可用性の要件を満たすために、ビジネスクリティカルなアプリケーションを複数の AWS リージョンにデプロイしています。あるリージョンのアプリケーションに運用イベントが影響する場合、運用を別のリージョンに切り替えるには、コンピューティング、データベース、DNS など、異なる AWS サービス間で複数のステップを調整する必要があります。この調整には通常、アプリケーションの進化に合わせて定期的なテストと更新が必要となる複雑なスクリプトの作成と維持が必要です。さらに、複数のアプリケーション間でのリージョン切り替えの進行状況をオーケストレートおよび追跡し、コンプライアンスのためにリカバリが正常に完了したことについての証拠を提供するには、多くの場合、手作業によるデータ収集が必要になります。
リージョン切り替えは、リージョンレベルのデータプレーンアーキテクチャ上に構築されており、リージョン切り替えプランはアクティブ化されるリージョンから実行されます。この設計により、切り替え中に影響を受けるリージョンへの依拠が排除され、実行は切り替え元のリージョンから独立しているため、より回復力の高いリカバリプロセスが実現します。
ARC リージョン切り替えを利用したリカバリプランの構築
ARC リージョン切り替えを使用すると、リージョン間でアプリケーションを切り替えるために必要となる具体的なステップを定義するリカバリプランを作成できます。各プランには、AWS リソースに対するアクションを表す実行ブロックが含まれています。リリース時点では、リージョン切り替えは 9 種類の実行ブロックをサポートしています:
- ARC リージョン切り替えプラン実行ブロック – 他のリージョン切り替えプランを参照することで、複数のアプリケーションが、アクティブ化するリージョンに切り替える順序をオーケストレートすることを可能にします。
- Amazon EC2 Auto Scaling 実行ブロック – ソースリージョンのキャパシティの指定された割合に合わせて、ターゲットリージョンの Amazon EC2 コンピューティングリソースをスケールします。
- ARC ルーティングコントロール実行ブロック – ルーティングコントロールの状態を変更し、DNS ヘルスチェックを使用してトラフィックをリダイレクトします。
- Amazon Aurora Global Database 実行ブロック – Aurora Global Database のために、データ損失の可能性があるデータベースフェイルオーバー、またはデータ損失ゼロのスイッチオーバーを実行します。
- 手動承認実行ブロック – リカバリワークフローに承認チェックポイントを追加し、チームメンバーが続行する前に確認および承認できるようにします。
- カスタムアクション AWS Lambda 実行ブロック – アクティブ化または非アクティブ化するリージョンで Lambda 関数を実行することで、カスタムリカバリステップを追加します。
- Amazon Route 53 ヘルスチェック実行ブロック – フェイルオーバー中にアプリケーションのトラフィックをリダイレクトするリージョンを指定できるようにします。リージョン切り替えプランを実行すると、Amazon Route 53 ヘルスチェックの状態が更新され、DNS 設定に基づいてトラフィックがリダイレクトされます。
- Amazon Elastic Kubernetes Service (Amazon EKS) リソーススケーリング実行ブロック – リカバリ中に、ソースリージョンのキャパシティの指定された割合に合わせて、ターゲットリージョンの Kubernetes ポッドをスケールします。
- Amazon Elastic Container Service (Amazon ECS) リソーススケーリング実行ブロック – ソースリージョンのキャパシティの指定された割合に合わせて、ターゲットリージョンの ECS タスクをスケールします。
リージョン切り替えは、30 分ごとにリソース設定と AWS Identity and Access Management (IAM) の許可をチェックすることで、プランを継続的に検証します。実行中、リージョン切り替えは各ステップの進行状況をモニタリングし、詳細なログを提供します。実行ステータスは、リージョン切り替えダッシュボードと、実行の詳細ページの下部を通じて確認できます。
コストと信頼性のバランスをとるのに役立つよう、リージョン切り替えは、スタンバイリソースを柔軟に準備できる機能を提供します。リージョン切り替えのスケーリング実行ブロックを使用して、リカバリ中に宛先リージョンでターゲットとすることを希望するコンピューティングキャパシティの割合を設定できます。リカバリ中にトラフィックの急増が見込まれる重要なアプリケーションでは、100% を超えるキャパシティにスケールすることを選択できます。また、割合を低く設定すると、全体的な実行時間を短縮するのに役立ちます。ただし、スケーリング実行ブロックのいずれかを使用してもキャパシティが保証されるわけではなく、実際のリソースの可用性はリカバリ時における宛先リージョンのキャパシティに依存することにご留意ください。可能な限り最良の結果を得るために、リカバリプランを定期的にテストし、スタンバイリージョンで適切な Service Quotas を維持することをお勧めします。
ARC リージョン切り替えには、企業およびリージョン全体のリージョン切り替えプランのステータスをモニタリングするために使用できるグローバルダッシュボードが含まれています。さらに、現在のコンソールリージョン内の実行のみを表示するリージョンレベルの実行ダッシュボードがあります。このダッシュボードは、各リージョン全体で高可用性を実現するように設計されているため、運用イベント中に使用できます。
リージョン切り替えを使用すると、リージョン切り替えプランを含むアカウントとは別のアカウントでリソースをホストできます。プランが、プランをホストしているアカウントとは異なるアカウントのリソースを使用する場合、リージョン切り替えは executionRole
を使用して crossAccountRole
を引き継ぎ、それらのリソースにアクセスします。さらに、リージョン切り替えプランは AWS Resource Access Manager (AWS RAM) を使用して一元管理し、複数のアカウント間で共有できるため、組織全体でリカバリプランを効率的に管理できます。
仕組みを見てみましょう
リージョン切り替えプランを作成および実行する方法を説明します。このデモは 3 つの部分で構成されています。まず、リージョン切り替えプランを作成します。その後、ワークフローを定義します。最後に、トリガーを設定します。
ステップ 1: プランを作成する
AWS マネジメントコンソールの Application Recovery Controller のセクションに移動します。左側のナビゲーションメニューで [リージョン切り替え] を選択します。その後、[リージョン切り替えプランを作成] を選択します。
プランに名前を付けたら、[マルチリージョンリカバリアプローチ] (アクティブ/パッシブまたはアクティブ/アクティブ) を指定します。[アクティブ/パッシブ] モードでは、2 つのアプリケーションレプリカが 2 つのリージョンにデプロイされ、トラフィックはアクティブなリージョンにのみルーティングされます。パッシブリージョンのレプリカは、リージョン切り替えプランを実行することでアクティブ化できます。
その後、[プライマリリージョン] と [スタンバイリージョン] を選択します。オプションで、[必要な目標復旧時間 (RTO)] を入力できます。サービスはこの値を使用して、リージョン切り替えプランの実行にかかる時間に関するインサイトを、希望する RTO との関係で提供します。
[プラン実行 IAM ロール] を入力します。これは、実行中にリージョン切り替えが AWS サービスを呼び出すことを許可するロールです。選択したロールに、サービスによって呼び出されるための許可が付与されており、ARC が動作するために必要な最小限の一連の許可が含まれていることを確認します。詳細については、ドキュメントの IAM 許可のセクションをご覧ください。
2 つの [プランの評価ステータス] の通知が緑色になったら、ワークフローを作成します。開始するには、[ワークフローを構築] を選択します。
プランを使用すると、リージョン切り替え実行ブロックを使用してアプリケーションを復旧する特定のワークフローを構築できます。複数のアプリケーションまたはリソースがアクティブ化するリージョンにリカバリする順序をオーケストレートするために、順次または並行して実行される実行ブロックを含むワークフローを構築できます。プランは、特定のリージョンをアクティブ化または非アクティブ化できるようにするこれらのワークフローで構成されます。
このデモでは、グラフィカルエディタを使用してワークフローを作成します。ただし、ワークフローを JSON で定義することもできます。この形式は、オートメーションや、ワークフロー定義をソースコード管理システム (SCMS) や AWS CloudFormation などの Infrastructure as Code (IaC) ツールに保存する場合に適しています。
[ワークフロービルダー] のタイトルの横にある対応するタブを選択すると、[設計] ビューと [コード] ビューを切り替えることができます。JSON ビューは読み取り専用です。グラフィカルエディタを使用してワークフローを設計し、JSON に相当するものをコピーして IaC プロジェクトファイルと一緒に保存しました。
リージョン切り替えは、30 分ごとに評価を開始し、リカバリ戦略を検証します。ワークフローで定義されたすべてのアクションが実行時に成功するかどうかを定期的にチェックします。このプロアクティブな検証では、アカウントおよびリージョン全体の IAM 許可やリソースの状態など、さまざまな要素を評価します。これらの依存関係を継続的にモニタリングすることで、リージョン切り替えは、リカバリプランの実行可能性を維持し、実際の切り替えオペレーションに影響が及ぶ前に潜在的な問題を特定するのに役立ちます。
ただし、テストされていないバックアップは信頼できるバックアップではないのと同様に、テストされていないリカバリプランは真に検証済みとみなすことはできません。継続的な評価は強固な基盤を提供しますが、プランの有効性を検証し、実際のリカバリ時間を把握するとともに、チームがリカバリ手順に精通しているようにするために、テストシナリオで定期的にプランを実行することを強くお勧めします。この実践的なテストは、ディザスタリカバリ戦略における信頼性を維持するために不可欠です。
ステップ 3: トリガーを作成する
トリガーは、作成したワークフローをアクティブ化する条件を定義します。これは、一連の CloudWatch アラームとして表現されます。アラームベースのトリガーはオプションです。手動トリガーでリージョン切り替えを使用することもできます。
コンソールのリージョン切り替えページから、[トリガー] タブを選択し、[トリガーを追加] を選択します。
プランで定義した各リージョンについて、[トリガーを追加] を選択し、リージョンをアクティブ化するトリガーを定義します。最後に、リージョン切り替えがリージョンのアクティブ化をトリガーするために使用するアラームとその状態 ([OK] または [アラーム状態]) を選択します。
これで、リージョン切り替えを使用してリージョンを切り替えるプランの実行をテストする準備が整いました。アクティブ化するリージョン (ワークフローのターゲットリージョン) からプランを実行し、その特定のリージョンのデータプレーンを使用することが重要です。
AWS コマンドラインインターフェイス (AWS CLI) を使用してプランを実行する方法は次のとおりです:
aws arc-region-switch start-plan-execution \
--plan-arn arn:aws:arc-region-switch::111122223333:plan/resource-id \
--target-region us-west-2 \
--action activate
料金と利用可能なリージョン
リージョン切り替えは、すべての商用 AWS リージョンで、プランごとに 70 USD/月でご利用いただけます。各プランには最大 100 個の実行ブロックを含めることができます。また、親プランを作成して最大 25 個の子プランをオーケストレートすることもできます。
マルチリージョンリカバリソリューションの構築と維持に費やすエンジニアリングの労力を直接見てきた私は、お客様にとって、リージョン切り替えがこのプロセスの自動化にどのように役立つのかを目にするのを楽しみにしています。ARC リージョン切り替えの使用を開始するには、ARC コンソールにアクセスして、最初のリージョン切り替えプランを作成してください。リージョン切り替えの詳細については、Amazon Application Recovery Controller (ARC) のドキュメントにアクセスしてください。また、マルチリージョンアプリケーションのためのリージョン切り替えの使用に関するご質問は、AWS アカウントチームまでお問い合わせください。
マルチリージョンアプリケーションの回復力を高めるためにリージョン切り替えをどのように使用しているのかについて、ぜひお聞かせください。
原文はこちらです。