御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Azure Chaos Studio に新しく追加された App Service の障害を試してみた

本記事は、Azure Chaos Studio に新しく追加された App Service の障害を試してみた記事です。

2023年8月3日 Azure更新情報

2023年8月3日のAzure更新情報で Azure Chaos Studio について新しい2つの障害が追加されたと投稿されました。

以下、Azure更新情報の引用です。

Azure Chaos Studio now supports the following two new faults.
Stop App Service: this new service-direct fault allows customers to stop an App Service, Functions, API Apps, or Mobile Apps resource and restart it at the end of the fault duration. This can help simulate outages or shutdown scenarios for a system that depends on App Service.
 
Network Packet Loss: this new agent-based Network Packet Loss fault enables simulation of network congestion or network hardware issues within a Virtual Machine or Virtual Machine Scale Set.

Public Preview: Azure Chaos Studio supports new faults for App Service and Virtual Machines | Azure の更新情報 | Microsoft Azure より引用

日本語訳するとこんな感じです。

Azure Chaos Studioは、以下の2つの新しい障害をサポートするようになりました。
App Serviceの停止:この新しいサービスダイレクト障害により、顧客はApp Service、Functions、API Apps、またはMobile Appsリソースを停止し、障害期間の終わりに再起動することができます。これにより、App Serviceに依存するシステムの停止またはシャットダウンシナリオをシミュレートすることができます。
 
ネットワークパケットロス:この新しいエージェントベースのネットワークパケットロス障害により、仮想マシンまたは仮想マシンスケールセット内でネットワークの混雑やネットワークハードウェアの問題をシミュレートすることができます。

私待望のPaa Azure App Service の障害対応と、仮想マシンや仮想マシンスケールセットのネットワークパケロス障害を起こせるようになったみたいですね。

今回はAzure Chaos Studio App Service 障害追加記念に実際にApp Service に障害を起こしてみようと思います。

Azure Chaos Studio で App Service に障害を起こしてみた

今回は下記のAzure Chaos Studio 障害ライブラリ内の「app Service停止」を試してみようと思います。
Azure Chaos Studio プレビューの障害とアクション ライブラリ | Microsoft Learn 上記障害ライブラリの説明のとおり、対象のApp Service リソースに対してアプリケーション停止を発生させて、設定した障害期間終了時に再起動されます。

手順1 Azure Chaos Studio で障害発生対象を有効にする

まずは「Chaos Studio」を選択。

Chaos Studio から「対象」を選択します。

対象のサブスクリプション内にある障害発生の対象となるリソースの一覧が表示さます。

障害発生対象のリソースに対してチェックボックスをつけて、「ターゲットを有効にする」→「サービス直接ターゲット(すべてのリソース)を有効にする」を選択します。

有効化の確認されますので、確認したら「確認と有効化」のボタンを押下。
そのあとさらに「有効化」のボタンが出たら押下。

有効にすると先ほどのAzure Chaos Studio の対象の一覧で有効になったことが確認できます。

隣の「アクションの管理」リンクをクリックすると、実行できるアクションが設定できますが、現状 App Service は一つのみなので特に触る必要はなさそうです。

手順2 Azure Chaos Studio の カオス実験を作成する

つづいて Azure Chaos Studio の「実験」をページを開きます。
「実験」では実際に障害を起こすシナリオを定義して、実行するところまで行えます。

「作成」→「新しい実験」

「基本」タブでは「サブスクリプション」、「リソースグループ」、「名前」、「リージョン」 を記入。

マネージドIDの設定を行います。
「カスタム役割の作成と割り当てを有効にする」は現状どちらを選択しても結果は変わらなかったのでOFFで大丈夫です。

実験デザイナーで実験を作成します。
ロジックを組むような感覚ですね。
「アクションの追加」を押下します。

アクションの追加で障害を追加できます。
今回は「Stop App Service」の障害を追加します。

ターゲットソースの追加で障害を起こすリソースを選択します。

これにて「カオス実験」の作成は完了です。

手順3 カオス実験を開始して Azure App Service に障害を起こす

あとは作成したカオス実験を開始すれば、障害を起こすことができます。

こちらがデモ用に用意した App Service です。
それでは実験を開始してみましょう。

ここで実行失敗。

エラーメッセージは権限不足のようです。

The target resource(s) could not be resolved. Error Code: AccessDenied. Target Resource(s): Session ID: f2c0f09fe2d74e7e85f0d630cb42641b

作成したカオス実験が App Service のリソースに対して停止の障害を起こすわけですが、その停止の障害を起こすのに必要な権限が足らないから発生しています。カオス実験はマネージドIDがすでに設定されていますので、そのIDに対して権限を付与してあげれば大丈夫です。「カスタム役割の作成と割り当てを有効にする」をONにすれば自動で権限を付与してくれると思ったのですが、うまく動いていないようですね。

もう一度、実験を開始すると、App Service が停止していることは確認できます。
ロールは「Web サイト共同作成者」や「共同作成者」があれば問題なくうごきそうですね。

最後に

今回のアップデートで Azure Chaos Stuido で App Service に対して障害を起こすことができるようになりました。App Service に障害を起こすことでAPI の一部を止めることで単一障害点の発見や障害発生時の動きをシミュレートすることができます。障害復旧訓練などにも生かせそうですね。
今後の希望としては、Azure Functions や データベース系も機能の拡充を期待します。

参照ページ

azure.microsoft.com