Slide 1

Slide 1 text

1 AWS Fault Injection Simulator (FIS) のネットワーク接続中断アクションで リージョン間フェイルオーバーを試してみた [JAWS-UG初心者支部#51 re:invent前に2022年Update振り返り]

Slide 2

Slide 2 text

自己紹介 2 名前: 山本竜司 経歴:新卒でアイレット株式会社に入社 現在3年目 業務:AWSを用いたインフラの構築、運用保守

Slide 3

Slide 3 text

3 アジェンダ ● AWS Fault Injection Simulator (FIS) とは ● 構成図 ● FISを実行する手順 ● 検証 ● 触ってみた感想

Slide 4

Slide 4 text

AWS Fault Injection Simulator (FIS) とは 4

Slide 5

Slide 5 text

AWS Fault Injection Simulator (FIS) とは 5 ● AWS環境に擬似攻撃、擬似障害を起こす事ができるサービス 意図的に負荷や障害を発生させて、アプリケーションのパフォーマンス、回復性、 およびオブザーバビリティを観察し、取得したデータを基に改善させる事が可能 同様のサービスだとChaos Monkey, Gremlin 等

Slide 6

Slide 6 text

AWS Fault Injection Simulator (FIS) とは 6 https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-fault-injection-simulator-network-connectivity-disruption/

Slide 7

Slide 7 text

AWS Fault Injection Simulator (FIS) とは 7 簡易的なDRを試してみよう!

Slide 8

Slide 8 text

構成図 8

Slide 9

Slide 9 text

構成図 9

Slide 10

Slide 10 text

構成図 10

Slide 11

Slide 11 text

FISを実行する手順 11

Slide 12

Slide 12 text

FISを実行する手順 12 ① 実験テンプレートの作成 発生させたいアクションやターゲットを設定する ② 実験の開始 作成した実験テンプレートに沿った実験が開始される

Slide 13

Slide 13 text

① 実験テンプレートの作成 13

Slide 14

Slide 14 text

① 実験テンプレートの作成 14 ターゲット設定 リソースタイプ どのリソースをターゲットにするか リソースID 対象のリソースをIDで指定

Slide 15

Slide 15 text

① 実験テンプレートの作成 15 アクション設定 発生させたい障害や異常を選択する

Slide 16

Slide 16 text

16 ① 実験テンプレートの作成 ● 障害注入アクション APIスロットルエラー API内部エラー API使用不可エラー ● リソースに対するアクション EC2 再起動、停止、終了 RDS 再起動、フェイルオーバー ECS のコンテナインスタンスのドレイニング ECS のタスクストップ EKS の単一のターゲットクラスターでのリトマスの実験 EKS のノードグループインスタンスの削除 EC2にCPU負荷を与える(SSMと組み合わせる) アクション設定

Slide 17

Slide 17 text

① 実験テンプレートの作成 17 アクション設定 ● スコープ設定 どこのトラフィック間で異常を発生させるか 今回はRoute53のフェイルオーバールーティングを 発生させたいので「ALL」を選択 ALL 全てのトラフィック Availability-zone AZ間のトラフィック S3,DynamoDB サービス間のトラフィック

Slide 18

Slide 18 text

① 実験テンプレートの作成 18 IAMロール設定 IAMロールの作成が必要 実施するアクションによって必要な権限が変わる どの権限が必要かはドキュメントに記載されている > Action set for AWS FIS https://docs.aws.amazon.com/fis/latest/userguide/action-sequence.html

Slide 19

Slide 19 text

① 実験テンプレートの作成 19 停止条件 事前に設定したAmazon CloudWatchアラームにより、 サービスが異常状態になった場合などに自動的に実験を停止で きる 実験中に想定外の問題が発生した際に、ユーザーへの影響を 最低限に抑える事が可能

Slide 20

Slide 20 text

① 実験テンプレートの作成 20 テンプレート完成!🎉

Slide 21

Slide 21 text

検証 21

Slide 22

Slide 22 text

22 検証

Slide 23

Slide 23 text

1-2分ほど待ってみると… 23

Slide 24

Slide 24 text

検証 24 ① 対象のサイトにアクセス出来なくなった事を確認

Slide 25

Slide 25 text

検証 25 ② Route53のヘルスチェックが東京リージョン側で失敗している事を確認

Slide 26

Slide 26 text

DNSの反映待ち… 26

Slide 27

Slide 27 text

検証 27 ③ DNSの向先が大阪リージョンに変わった事を確認 検証前 (東京リージョン側) 検証後 (大阪リージョン側)

Slide 28

Slide 28 text

検証 28

Slide 29

Slide 29 text

検証 29 (余談) EC2のステータスチェックは失敗しなかった AWSのシステム側の通信には影響を与えない?🤔

Slide 30

Slide 30 text

触ってみた感想 30

Slide 31

Slide 31 text

触ってみた感想 31 ● 複雑な設定は要らず動かせた ○ 模擬障害を発生させるとなると複雑な設定やエージェントが必要そうなイメージがあった ● DRテストもFISを利用すれば試しやすい ○ 今回の検証では簡素なDR構成だったが、本番稼働する環境でもDRのテストを実施できそう