CodeZine(コードジン)

特集ページ一覧

Chaos Toolkitでカオスエンジニアリングを体験しよう~Azure上のVMにカオス挿入

クラウドネイティブ時代の実践カオスエンジニアリング 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

Azure Virtual Machineへのカオス挿入方法

 ここからは、Azure Virtual Machineに対するカオス挿入方法を説明します。

 Chaos Toolkitでは、JSON形式である「実験ファイル」に発生させる疑似的な障害のシナリオを記述します。Chaos Toolkitでは、Azure Virtual Machineに対するカオスとして、以下のアクションが用意されています。

# アクション名 内容
1 burn_io Virtual Machineの1秒あたりのディスクI/O操作を増加させる。
2 delete_machines Virtual Machineをランダムに削除する。
3 fill_disk Virtual Machineのディスクをランダムデータで埋める。
4 network_latency Virtual Machineの応答時間を増やす。
5 restart_machines Virtual Machineをランダムに再起動する。
6 start_machines Virtual Machineをランダムに起動する。
7 stop_machines Virtual Machineをランダムに停止する。
8 stress_cpu Virtual MachineのCPU使用率が100%となる負荷をかける。

 これらアクションの中から、発生させる障害を選択します。

 なお、対象となるAzure Virtual Machineは事前に作成しておきます。

 「Virtual Machineをランダムに停止する」アクションを実施する場合などは、複数のAzure Virtual Machineが存在する環境であると、複数のAzure Virtual Machineがランダムなタイミングで次々と停止されるというカオスの状態を体験できるかと思います。

 Azure Virtual Machineに対するカオス挿入方法は以下の流れとなります。

  1. サービスプリンシパルの作成
  2. サービスプリンシパルへのロールの割り当て
  3. サブスクリプションIDの確認
  4. 実験ファイルの作成
  5. 実験ファイルの実行

1. サービスプリンシパルの作成

 まずは、Chaos ToolkitがAzureリソースへアクセスするために使用するサービスプリンシパルの資格情報を用意しておきます。ここでは、Azure Portalでのサービスプリンシパルの作成方法を説明します。

 Microsoft Docsのドキュメントでサービスプリンシパルの作成方法について説明されています。

  1. Azure Portalにサインインします。
  2. [すべてのサービス]から[Azure Active Directory]を選択します。
  3. [アプリの登録]を選択します。
  4. [新規登録]を選択します。
  5. [名前]、[サポートされているアカウントの種類]、[リダイレクトURI]を入力します。
  6. [登録]を選択します。
  7. アプリケーションの登録後、作成したアプリケーションの[概要]ページには、「アプリケーション(クライアント)ID」「ディレクトリ(テナント)ID」が表示されるので、メモしておきます。
  8. [Azure Active Directory]→[アプリの登録]から、[証明書とシークレット]を選択します。
  9. [クライアント シークレット]→[新しいクライアント シークレット]を選択します。
  10. シークレットの[説明]と[有効期間]を指定し、[追加]を選択します。
  11. クライアント シークレットを保存すると、クライアント シークレットの値が表示されます。 この値は後で取得できないため、この値をメモしておきます。
図1:クライアントシークレットの値
図1:クライアントシークレットの値

 確認したクライアントID、シークレット、テナントIDは、以下のように後述の実験ファイルに記述します。

{
  "secrets": {
    "azure": {
      "client_id": "<your-client-id>",
      "client_secret": "<your-client-secret>",
      "tenant_id": "<your-tenant-id>"
    }
  }
}

2. サービスプリンシパルへのロールの割り当て

 サブスクリプション内のリソースにアクセスできるよう、作成したアプリケーションにロールを割り当てます。割り当てるスコープは、サブスクリプション、リソースグループ、またはリソースのレベルで設定できます。

 ここでは、サブスクリプションに対してロールを割り当てる方法を示します。

 Microsoft Docsのドキュメントでサービスプリンシパルへのロールの割り当て方法が説明されています。

  1. Azure Portalにサインインします。
  2. [すべてのサービス]から[サブスクリプション]を選択します。
  3. アプリケーションを割り当てるサブスクリプションを選択します。
  4. [アクセス制御(IAM)]を選択します。
  5. [追加]→[ロールの割り当ての追加]を選択します。
  6. [役割]の欄でアプリケーションに割り当てるロール(役割)を選択します。[選択]の欄で割り当てるアプリケーション名を検索し、選択します。たとえば、"Virtual Machineのランダムな停止"を実験する場合、Virtual Machineの停止が実行可能である「仮想マシン共同作成者(Virtual Machine Contributor)」のロールを選択します。
図2:仮想マシン共同作成者
図2:仮想マシン共同作成者
  1. [保存]を選択します。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:クラウドネイティブ時代の実践カオスエンジニアリング

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5