AWS FISハンズオン
はじめに
2021/5/15(土)に以下のハンズオンに参加した際の内容を紹介する。
AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめてのカオスエンジニアリング
この特別編では、2020年12月にアナウンスされた、制御された実験で弾力性とパフォーマンスを向上させるカオスエンジニアリングを実現させる、AWS Fault Injection Simulatorを皆で触って学びましょう
カオスエンジニアリングって何だろう、、
また、それを実現できるAWS Fault Injection Simulator(FIS)とは?
本題に入る前にサクッと解説する。
カオスエンジニアリングってなんだ
稼働中のシステムに対して意図的に障害を発生させて、
システムがどう対応するのかを確認し、実際の障害に備える手法。
NetflixがAWS上のシステムを対象に実施していることで知られている。
AWS FISってなんだ
AWSリソースに対して意図的に障害を起こすことができるマネージドサービス。
使用する際は「実験テンプレート」で障害を起こすシナリオを設計する。
ハンズオンの概要
FISでEC2インスタンスに障害を発生させる実験を行った。
- FISでEC2を停止して復旧
- FISでEC2を削除(terminate)
- FISでEC2を停止してAuto Scalingで復旧
このブログでは一部を紹介。
事前準備
IAMロール作成
fisrole
という名前でロールを作成する。
このロールに、FISがEC2を操作する際に必要な権限を付与していく。
fisroleロールを使用するサービスの指定
ポリシー作成
ロールに割り当てるアクセス権限を定義する。
EC2インスタンスの参照や再起動・停止・削除の権限など。
作成したポリシーをロールに割り当て
ロール作成
FISを信頼するサービスとして設定する
このままではFISがEC2にアクセスすることはできない。
なぜなら、fisrole
ロールを使用する信頼されたサービスとしてFISが設定されていないから。
(ロール作成時にサービス一覧でEC2を選択しましたよね)
「信頼関係の編集」によりFISドメインを指定することで、
FISが、EC2アクセス時に必要となる一時的な認証情報を取得できるようになる。
EC2インスタンス作成
FISでEC2に障害を起こす
特定のLinuxインスタンスを停止して、1分後に復旧させる。
実験テンプレート作成
IAMロール指定
ターゲット設定
実験対象のAWSリソースを指定する。
さっき作ったLinuxインスタンスに障害を起こしたいので以下になる。
アクション設定
指定したターゲットにどういった障害を起こすかを設定する。
Linuxインスタンスを停止させたいので以下になる。
また、アクションにより停止したインスタンスを1分後に復旧する設定として、
アクションパラメータを1にする。
実験テンプレート実行
実験開始
実験を開始する。
作成したテンプレートの内容にそって実験が開始される。
インスタンス停止
インスタンス復旧
おわりに
もし今、業務で使用している環境で大規模な障害が起きたらかなり動揺すると思う。
FISを使って訓練出来たらとってもいいけど、明日からというわけにはいかないので
今何が起きても本当に大丈夫なのか?日ごろから意識して観察してみたいと思った。
また、ブログでは紹介していないけど、
Auto Scalingなどあまり理解できていないサービスを触るよい機会だった。
Discussion