はじめに
前回の第2回では、AWS Fault Injection Simulato(FIS)を利用してAmazon EC2にカオスを挿入する方法を紹介しました。
今回は、Azure Virtual Machine(VM)の高可用性を実現するAzure Virtual Machine Scale Sets(VMSS)にAzure Chaos Studioを利用してカオスを挿入する方法を説明します。VMにカオスを挿入する方法については、こちらで紹介されているため、そちらを参照いただきたいと思います。
また、Chaos Studioの導入手順を紹介する中で、各機能が本連載の第1回で示した3つの観点のうち、どれに対応しているかについても併せて紹介します。
以下は、観点のリストからChaos Studioが持たない機能を除外したものとなります。
- 
  定常状態の定義
  - 定常状態を定義する方法
- 異常状態の検知方法
 
- 
  影響範囲の限定
  - カオス挿入の対象の選定方法
 
- 
  実験管理の負荷
  - 実験の記録
- 実験のコード管理
- 実験の共有
 
前提条件
今回の実験対象のシステムは、以下のようにAzure Load Balancer(ALB)の配下に2つのインスタンスを持つVMSSで構成します。各インスタンスではWindows Server標準のWebサーバー機能であるIISを利用し、インターネットからシステムが公開するWebページへアクセスできるようにします。
 
このシステムにおいて、以下の条件を満たすことで正常と判断します。
- 30分間のリクエスト総数の90%以上がHTTPステータス200であること
- 30分間のレスポンスタイムの90パーセンタイル値が3秒以下であること
パーセンタイル値とは?
データを小さい順に並べた際に全体の何%に位置するかを示す値です。90%パーセンタイル値であれば、データの90%がその値より小さい値であることを意味します。
レスポンスタイムのパーセンタイル値は、「ほとんどのレスポンスタイムは一定時間の範囲に収まるものの、まれに発生する非常に遅いレスポンスタイム(=外れ値)が含まれるようなデータ」を考慮して評価することができます。そのため、レスポンスタイムの評価指標では、平均値ではなくパーセンタイル値を採用することが多いです。
また、VMSSの特徴である自動修復機能および自動スケール機能を有効にします。
自動スケール機能のルールは以下の通りです。
- インスタンス数は、既定2台、最小2台、最大4台
- インスタンスの平均CPU使用率が75%以上のとき、インスタンスを1台増やす
- インスタンスの平均CPU使用率が25%以下のとき、インスタンスを1台減らす
 
また、このシステムの監視方法として、Azure Application Insightsによる可用性テストを有効にします。
ここでの可用性テストは、こちらを参考に、Azure Functionsのタイマートリガーを使用し、1分間隔でシステムのトップページにリクエストする方式とします。
監視結果はApplication Insightsの可用性タブにて、各リクエストの成功・失敗の結果やレスポンスタイムを確認できます。
 

 
              
               
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                          
                           
                              
                               
                              
                               
                              
                               
                              
                               
                              
                               
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
                      
                     
															
														 
															
														 
															
														.png) 
     
     
     
     
     
													 
													 
													 
													 
													 
										
									
 
 
                    