実験内容
今回の実験では、フロントエンドのPodの障害を発生させ、実験対象システムが障害に耐えうることを確認します。
具体的には、フロントエンドのPodを3つ起動するようにしておき、そのうちのPodの1つを停止しても「正常性判断の定義」を満たすことを確認します。
まずは、サンプルソリューションでAKSに適用したマニフェストファイルにて、azure-vote-frontのreplicasを3に修正します。
apiVersion: apps/v1 kind: Deployment metadata: name: azure-vote-front spec: replicas: 3 ( 後略 )
修正したマニフェストファイルをAKSに適用し、フロントエンドのPodが3つ起動していることを確認します。
$ kubectl get pods NAME READY STATUS RESTARTS AGE azure-vote-back-59cb7dc555-sxzwg 1/1 Running 0 10h azure-vote-front-5f4d7db9c8-9bt8r 1/1 Running 0 10h azure-vote-front-5f4d7db9c8-n6mx7 1/1 Running 0 4h29m azure-vote-front-5f4d7db9c8-p2pg8 1/1 Running 0 4h29m
続いて、実験対象システムが障害に耐えうることを確認するために、Azure Monitorにて「正常性判断の定義」をもとに以下の状態を異常としてアラート検知できるようにします。
実験中にアラート検知がないことで、逆説的に「正常性判断の定義」を満たすことを示します。
- 5分間のHTTPステータスが200のリクエスト数/5分の総リクエスト数 < 90%
- 5分間のリクエストのレスポンスタイムの90パーセンタイル値 > 3000ms
なお、前者はAzure Application Insightsで取得するリクエスト成否に関するメトリック(SuccessRate)を使用します。後者は第3回の記事と同様に「5分間のリクエストのレスポンスタイムの90パーセンタイル値」は Azure Application Insightsで取得するログに対して、以下のKustoクエリを適用して取得します。
let dataset = dependencies | where timestamp > ago(5m) ; dataset | summarize percentile(duration, 90)
それでは、次項からAzure Chaos Studioの具体的な設定に入ります。
設定の流れはMicrosoftの公式ドキュメントも参照ください。