サービスダイレクト フォールトを使用するカオス実験を作成して、Azure Cosmos DB インスタンスをフェールオーバーする

カオス実験を使用して、制御された環境で障害を引き起こすことで、アプリケーションにこれらの障害に対する回復性があることを確認できます。 この記事では、混乱実験と Azure Chaos Studio を使用して、複数の読み取り、単一書き込みの Azure Cosmos DB フェールオーバーを実行します。 この実験を行うことで、フェールオーバー イベントが発生したときにデータ損失を防ぐことができます。

これらの同じ手順を使用して、任意のサービス直接障害の実験を設定して実行できます。 ''サービス直接'' 障害は、インストルメンテーションを必要とせずに、Azure リソースに対して直接実行されます。 エージェントベースの障害では、カオス エージェントのインストールが必要です。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
  • Azure Cosmos DB アカウント。 Azure Cosmos DB アカウントをお持ちでない場合は、これらの手順に従って 1 つ作成してください。
  • Azure Cosmos DB アカウントの読み取りリージョンと書き込みリージョンが 1 つ以上設定されていること。

Azure Cosmos DB アカウントで Chaos Studio を有効化する

Chaos Studio では、最初にリソースが Chaos Studio に追加されない限り、リソースに対して障害を挿入することはできません。 リソースにターゲットと機能を作成することによって、リソースを Chaos Studio に追加します。 Azure Cosmos DB アカウントには、1 つのターゲットの種類 (サービス直接) と 1 つの機能 (フェールオーバー) しかありません。 その他のリソースには、最大 2 つのターゲットの種類がある場合があります。 ターゲットの種類の 1 つはサービスダイレクト障害用です。 もう 1 つのターゲットの種類はエージェントベース障害用です。 他のリソースには、他にも多くの機能がある場合があります。

  1. Azure portal を開きます。

  2. 検索バーで「Chaos Studio」を検索します。

  3. [ターゲット] を選択し、Azure Cosmos DB アカウントに移動します。

    Screenshot that shows the Targets view in the Azure portal.

  4. Azure Cosmos DB アカウントの横にあるチェック ボックスをオンにします。 [ターゲットを有効にする] を選択し、ドロップダウン メニューから [サービス直接ターゲットを有効にする] を選びます。

    Screenshot that shows enabling targets in the Azure portal.

  5. 目的のリソースが一覧表示されていることを確認します。 [確認と有効] を選択し、[有効にする] を選択します。

  6. 選択したリソースが正常に有効になっていることを示す通知が表示されます。

    Screenshot that shows a notification showing the target was successfully enabled.

これで、Azure Cosmos DB アカウントが Chaos Studio に正常に追加されました。 [ターゲット] ビューでは、このリソースで有効になっている機能を管理することもできます。 リソースの横にある [アクションの管理] リンクを選択すると、そのリソースに対して有効になっている機能が表示されます。

実験の作成

実験を作成するための準備ができました。 カオス実験の作成時には、ターゲット リソースに対して実行するアクションを定義します。 アクションは編成され、順番に実行されます。 カオス実験では、ブランチに対して並列に実行するアクションも定義できます。

  1. Chaos Studio の [実験] タブを選択します。 このビューでは、ご自分のすべてのカオス実験を表示および管理できます。 [作成]>[新しい実験] を選択します。

    Screenshot that shows the Experiments view in the Azure portal.

  2. [サブスクリプション][リソース グループ] 、カオス実験をデプロイする [場所] の情報を入力します。 実験に名前を付けます。 [Next: Experiment designer] (次へ: 実験デザイナー >) を選択します。

    Screenshot that shows adding basic experiment details.

  3. これで、Chaos Studio 実験デザイナーが表示されます。 実験デザイナーでは、ステップ、分岐、および障害を追加して実験を構築することができます。 [ステップ][ブランチ]にフレンドリ名を付け、[アクションの追加] > [障害の追加] を選択します。

    Screenshot that shows the experiment designer.

  4. ドロップダウン リストから [CosmosDB フェールオーバー] を選択します。 [期間] に障害が継続する時間を分単位で入力し、[readRegion] にAzure Cosmos DB アカウントの読み取りリージョンを入力します。 [Next: Target resources] (次へ: ターゲット リソース >) を選択します。

    Screenshot that shows fault properties.

  5. ご自分の Azure Cosmos DB アカウントを選び、[次へ] を選択します。

    Screenshot that shows adding a target.

  6. 実験が正しいことを確認し、[確認および作成]>[作成] の順に選択します。

    Screenshot that shows reviewing and creating an experiment.

ターゲット リソースに実験のアクセス許可を付与する

カオス実験を作成すると、ターゲット リソースに対して障害を実行するシステム割り当てマネージド ID が Chaos Studio によって作成されます。 実験を正常に実行するには、この ID にターゲット リソースへの適切なアクセス許可を付与する必要があります。 任意のリソースとターゲットの種類に対して、これらの手順を使用できます。そのためには、手順 3 でロールの割り当てを変更して、そのリソースとターゲットの種類に適したロールと一致するようにします。

  1. Azure Cosmos DB アカウントに移動し、[アクセス制御 (IAM)] を選択します。

    Screenshot that shows the Azure Cosmos DB Overview page.

  2. [追加]>[ロール割り当ての追加] の順に選択します。

    Screenshot that shows the Access control overview.

  3. Cosmos DB オペレーターを検索して、ロールを選択します。 [次へ] を選択します。

    Screenshot that shows assigning the Azure Cosmos DB Operator role.

  4. [メンバーの選択] を選び、実験名を検索します。 ご自分の実験を選択し、[選択] を選びます。 同じテナント内に同じ名前の実験が複数ある場合は、実験名が切り詰められ、ランダムな文字列が追加されます。

    Screenshot that shows adding an experiment to a role.

  5. [確認と割り当て]>[確認と割り当て] を選択します。

実験を実行する

これで、実験を実行する準備が整いました。 その効果を確認するには、Azure Cosmos DB アカウントの概要を開き、別のブラウザー タブで [データをグローバルにレプリケートする] に移動することをお勧めします。実験中に定期的に更新すると、リージョンのスワップが表示されます。

  1. [実験] ビューで、実験を選択します。 [スタート]>[OK] を選択します。
  2. [状態][実行中] に変わったら、[履歴] の下にある最新の実行の [詳細] を選択して、実行中の実験の詳細を確認します。

次のステップ

これで、Azure Cosmos DB サービス直接実験を実行したので、次のことを行う準備ができました。