Azure Chaos Studioを使ってみる【準備編1】

はじめに

前回カオスエンジニアリングの概要や背景、進め方について解説しました。

今回は「Azure Chaos Studio」について、サポートされているリソースや障害の種類、制限事項などについて紹介していきたいと思います。

※2023年1月パブリックプレビュー段階での内容となります。

Azure Chaos Studioとは

Azure Chaos Studio は、意図的に障害を発生させて、システムの耐障害性をテストしたり、回復性を向上させたりするのに役立つカオスエンジニアリングツールです。
リージョンがダウンした場合やアプリケーションの障害によって VM で100% の CPU 使用率が発生した場合など、実際のインシデントに対するアプリケーションとサービスの回復性を測定し、対応方針などを立てることが可能です。
サービスに対してフォールトを挿入し、そのサービスが中断にどのように対応するかを監視する「カオス実験」を実行できます。「カオス実験」は、アーキテクチャの選択を検証し、サービスの信頼性を向上させるのに役立ちます。

learn.microsoft.com

サポートされているリソースの種類

対応しているリソースの種類は以下の通りです。

  • Azure Kubernetes Service
  • Virtual Machines
  • Virtual Machine ScaleSets
  • Azure Cosmos DB
  • Network Security Group
  • Azure Cache for Redis
  • Key Vault

サポートされているリソースの種類、推奨されるロール割り当てについては以下のリンクをご確認ください。

learn.microsoft.com

挿入できる障害の種類、方法

挿入できる障害の種類は次の表通りです。

    障害               障害概要
遅延時間 他のアクションの前、間、または後に遅延時間を追加します。
CPU 負荷 VM 上で指定された値まで CPU 負荷を追加します。
物理メモリ負荷 この障害が挿入されている VM 上で指定された値まで物理メモリ負荷を追加します。
仮想メモリ負荷 VM 上で指定された値まで仮想メモリ負荷を追加します。
ディスク I/O 負荷 (Windows) diskspd ユーティリティ を使用して、それが挿入されている VM のプライマリ ストレージにディスク負荷を追加します。
ディスク I/O 負荷 (Linux) stress-ng を使用して、ディスクに負荷を適用します。
任意の stress-ng ストレス 引数を直接 stress-ng に渡すことによって、任意の stress-ng コマンドを実行します。
Windows サービスを停止する Windows サービス コントローラー API を使用して Windows サービスを停止し、期間の最後に、または実験が取り消された場合はこれを再起動します
時刻の変更  VM のシステム時刻を変更し、期間の最後に、または実験が取り消された場合はこれをリセットします。
プロセスを強制終了する 障害パラメーターで送信されたプロセス名に一致するプロセスのすべての実行中のインスタンスを強制終了します
DNS エラー DNS 参照要求の応答を指定されたエラー コードに置き換えます。
ネットワーク待ち時間 指定されたポート範囲とネットワーク ブロックのネットワーク待ち時間を増やします。
ネットワーク切断 指定されたポート範囲とネットワーク ブロックの送信ネットワーク トラフィックをブロックします。
ARM 仮想マシンのシャットダウン 障害の期間中に VM をシャットダウンし、オプションで、障害期間の最後に、または実験が取り消された場合はその VM を再起動します。
ARM 仮想マシン スケール セット インスタンスのシャットダウン 障害の期間中に仮想マシン スケール セット インスタンスをシャットダウンまたは強制終了し、オプションで、障害期間の最後に、または実験が取り消された場合はその VM を再起動します。
Cosmos DB のフェールオーバー 書き込みリージョン障害をシミュレートする
AKS Chaos Mesh のネットワーク障害 Chaos Meshから発生させることができるネットワーク障害をAKSクラスターに対して実行させます。 
AKS Chaos Mesh のポッド障害 Chaos Meshから発生させることができるポッド障害をAKSクラスターに対して実行させます。
AKS Chaos Mesh のストレス障害 Chaos Meshから発生させることができるストレス障害をAKSクラスターに対して実行させます。
AKS Chaos Mesh の IO 障害 Chaos Meshから発生させることができる IO 障害を AKSクラスターに対して実行させます。
AKS Chaos Mesh の時刻の障害 Chaos Meshを使用してAKSクラスターでシステムクロックの変更を発生させます。
AKS Chaos Mesh のカーネル障害 Chaos Meshから発生させることができるカーネル障害をAKSクラスターに対して実行させます。
AKS Chaos Mesh の HTTP 障害 Chaos Meshから発生させることができるHTTP障害をAKSクラスターに対して実行させます。
AKS Chaos Mesh の DNS 障害 Chaos Mesh から発生させることができるDNS障害をAKSクラスターに対して実行させます。
ネットワーク セキュリティ グループ (規則の設定) NSGでの規則の操作または作成を有効にします。
Azure Cache for Redis の再起動 ターゲット上で強制的な再起動操作を発生させます。
Key Vault アクセス拒否 Key Vault ネットワーク ルールを一時的に変更することによって、Key Vault へのすべてのネットワーク アクセスをブロックします。
証明書を無効にするKey Vault 証明書のプロパティを使用すると、fault は特定の期間 (ユーザーが指定) 証明書を無効にし、この障害期間後に有効にします。
Key Vault証明書のバージョンの増分 Key Vault証明書クライアント ライブラリを使用して、新しい証明書バージョンと拇印を生成します。 現在動作している証明書は、このバージョンにアップグレードされます。
証明書ポリシーの更新Key Vault 証明書ポリシー (例: 証明書の有効期間、証明書の種類、キー サイズ、またはキーの種類) は、ユーザー入力に基づいて更新され、障害期間後に元に戻されます。

挿入できる障害の詳細は以下のリンクをご確認ください。

learn.microsoft.com

またChaos Studio では、2 種類の障害挿入方法がサポートされています。

  • サービス直接ターゲット
    インストールやインストルメンテーションなしで、Azure リソースに対して直接実行されます。 たとえば、Azure Cache for Redis クラスターの再起動や、Azure Kubernetes Service (AKS) ポッドへのネットワーク待機時間の追加などがあります。
  • エージェント ベース のターゲット
    VM または仮想マシン スケール セットで実行され、ゲスト内で障害が発生します。 たとえば、仮想メモリへの負荷や、プロセスの強制終了などがあります。
    ※VMのシャットダウンなど一部例外があり“サービス直接ターゲット”で実行されます。

障害の種類により、エージェントベースかサービス直接ターゲットか異なります。
詳細については上記リンクの表にて「変換後の型」の記載を確認することで分類することが可能です。

  • サービス直接ターゲット     ⇒ その他
  • エージェントベースのターゲット ⇒ xxxxx-Agent

Azure Chaos Studioの制限

Chaos Studioではオブジェクトの数、アクティビティの期間、あよびデータの保持期間などに制限が適応されています。主な制限事項については下記の表通りになります。

                主な制限
実験ごとのアクション数 9
実験ごとの分岐数 9
アクティブ化期間(時間単位) 12
リージョンごとの同時実行実験とサブスクリプション 5
合計実験期間(時間) 12
リージョンごとの実験数とサブスクリプション 500
アクションごとのターゲット数 50
ターゲットごとのアクティブなエージェント数 1000
リージョンおよびサブスクリプションごとのターゲット数 10000

Azure Chaos Studio のパブリック プレビュー期間中の制限は下記の表の通りになります。※GA後に下記は変更になる可能性があります。

  1. エージェント ベースの障害の場合、仮想マシンは Chaos Studio エージェント サービスへの送信ネットワーク アクセスを持っている必要がある。
  2. Chaos Agent を利用した実験を実行する場合、仮想マシンで次のいずれかのオペレーティング システムが実行されている必要がある。

    Windows
    Windows Server 2019、Windows Server 2016、Windows Server 2012、Windows Server 2012 R2

    Linux
    Redhat Enterprise Linux 8.2、SUSE Enterprise Linux 15 SP2、CentOS 8.2、Debian 10 Buster (unzip のインストールが必要)、Oracle Linux 7.8 Ubuntu Server 16.04 LTS、Ubuntu Server 18.04 LTS

  3. Chaos Studio ポータル エクスペリエンスは、次のブラウザーでのみテストされています。
    Windows:Microsoft Edge、Google Chrome、Firefox
    MacOS: Safari、Google Chrome、Firefox

  4. 使用可能なリージョン ※以下リージョン以外ではターゲットにすることができません。
    英国南部、西ヨーロッパ、北ヨーロッパ、西日本、東日本、米国西部、米国中西部、米国中部、米国中北部、米国東部、米国東部 2

まとめ

今回は「Azure Chaos Studio」について、サポートされているリソースや障害の種類、制限事項などについて紹介しました。
次回は準備編2「Azure Chaos Studio」を使用するための準備、カオス実験の構成方法などについて解説していきたいと思います。

執筆担当者プロフィール
山本 浩之

山本 浩之(日本ビジネスシステムズ株式会社)

ハイブリッドクラウド本部所属 Azure IaaS、PaaSを中心とした業務に従事しています。

担当記事一覧