めるぶろぐ

まったりぷろぐらまーの雑記

【参加記録】AWSの基礎を学ぼう 特別編 はじめてのカオスエンジニアリング #awsbasics

AWS Fault Injection Simulatorでカオスエンジニアリングしました。
実はAuto Scalingも初めてつかいました。

イベントページ

awsbasics.connpass.com

資料

github.com

使用したサービスについて

AWS FIS(Fault Injection Simulator)
  • カオスエンジニアリングで使用する。
  • 障害を意図的に発生させるサービス(EC2の停止/終了とか)。
  • 実験テンプレートの作成→実験 の順で使用する。
AWS Auto Scaling
  • EC2等を自動でスケールしてくれる機能。
  • 最小/最大の台数を同じにし、同一の状態を保つ場合はAuto Healingという(今回はこれ)。

ハンズオン

やったこと概要
  1. FISでEC2を停止/起動
  2. FISでEC2の終了
  3. AutoScalingを設定したEC2をFISで終了し、AutoScalingでの新インスタンスの起動確認

詳細は資料内で。特にここで詰まった~というのはありませんでした。

所感

カオスエンジニアリング自体そんなにわかっていなかったのだけれど(名前を聞いたことある程度)、
恣意的に障害を起こして耐障害性等の確認をする、のが今後必要になってくるのかな~。防災訓練みたいな感じだ。
NETFLIXなんかでは本番環境で専門チームがばんばんカオスエンジニアリングで障害発生させてるらしい……すごい……)
実験の結果としてログが残るのも便利そう。(テンプレート消してもログ残ってたけどずっと残るんだろうか)
すぐに使うことはないと思うけど覚えておきたいなと思いました。

Auto Healingの部分の実行中、みんなでEC2の誕生を待っているのはなかなかに楽しかったです。

以下は終わってから追加で試したことです。

終わってから追加で試した

複数インスタンスのうち一部をFISで停止/起動、終了
  • ターゲットインスタンスを4つ指定し、そのうち2つを停止するようにする。

f:id:mel_27:20210515174328p:plain
実験すると、指定した2個だけ停止して……
f:id:mel_27:20210515173537p:plain
……起動する
f:id:mel_27:20210515173705p:plain

  • ターゲットインスタンスをタグで指定し、そのうち75%を終了するようにする

※IDで指定すると個数の選択しかできなかった、
パーセンテージで選択するならリソースタグとフィルターで指定する必要がある(まあそうか……)。
f:id:mel_27:20210515174854p:plain
実験すると、75%の3台(3/4)が終了
f:id:mel_27:20210515174956p:plain

AutoScalingで指定した数以上のEC2を起動
  • Auto ScalingでEC2の個数を1個に指定して、FISでサーバの停止・起動をする

※この際に再起動までの時間をAuto Scalingのヘルスチェックより長くしてみる

  • 実行前の予測

Auto Scalingの動きがわかってないけど終了した場合は次のサーバができてくるけど停止の場合は新しいEC2はできない?
それとも停止しても新しいEC2ができてきてそのあとどちらかが消えちゃう?

  • 結果

実験を実行するとインスタンスが停止
f:id:mel_27:20210515183858p:plain
停止したインスタンスが自動で終了し新しいEC2ができてくる
f:id:mel_27:20210515183914p:plain
FIS側は実験失敗になってる
f:id:mel_27:20210515183924p:plain

というわけでAuto Scalingの動作を超えてFISで無理やりEC2動かしたりとかはできないっぽい、
このへんもうちょっとAuto Scalingのほうについて知らないとだめかな~って感じ
Auto Scalingについての資料↓を提示してもらってたので読みます。
aws.amazon.com