$30 off During Our Annual Pro Sale. View Details »

AWS Fault Injection Simulator (FIS) のネットワーク接続中断アクションで リージョン間フェイルオーバーを試してみた

AWS Fault Injection Simulator (FIS) のネットワーク接続中断アクションで リージョン間フェイルオーバーを試してみた

JAWS-UG初心者支部#51 re:invent前に2022年Update振り返り
https://jawsug-bgnr.connpass.com/event/265406/#_=_

Ryuji Yamamoto

November 19, 2022
Tweet

More Decks by Ryuji Yamamoto

Other Decks in Technology

Transcript

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

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

  3. 3 アジェンダ • AWS Fault Injection Simulator (FIS) とは •

    構成図 • FISを実行する手順 • 検証 • 触ってみた感想
  4. AWS Fault Injection Simulator (FIS) とは 4

  5. AWS Fault Injection Simulator (FIS) とは 5 • AWS環境に擬似攻撃、擬似障害を起こす事ができるサービス 意図的に負荷や障害を発生させて、アプリケーションのパフォーマンス、回復性、

    およびオブザーバビリティを観察し、取得したデータを基に改善させる事が可能 同様のサービスだとChaos Monkey, Gremlin 等
  6. AWS Fault Injection Simulator (FIS) とは 6 https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-fault-injection-simulator-network-connectivity-disruption/

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

  8. 構成図 8

  9. 構成図 9

  10. 構成図 10

  11. FISを実行する手順 11

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

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

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

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

  16. 16 ① 実験テンプレートの作成 • 障害注入アクション APIスロットルエラー API内部エラー API使用不可エラー • リソースに対するアクション

    EC2 再起動、停止、終了 RDS 再起動、フェイルオーバー ECS のコンテナインスタンスのドレイニング ECS のタスクストップ EKS の単一のターゲットクラスターでのリトマスの実験 EKS のノードグループインスタンスの削除 EC2にCPU負荷を与える(SSMと組み合わせる) アクション設定
  17. ① 実験テンプレートの作成 17 アクション設定 • スコープ設定 どこのトラフィック間で異常を発生させるか 今回はRoute53のフェイルオーバールーティングを 発生させたいので「ALL」を選択 ALL

    全てのトラフィック Availability-zone AZ間のトラフィック S3,DynamoDB サービス間のトラフィック
  18. ① 実験テンプレートの作成 18 IAMロール設定 IAMロールの作成が必要 実施するアクションによって必要な権限が変わる どの権限が必要かはドキュメントに記載されている > Action set

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

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

  21. 検証 21

  22. 22 検証

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

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

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

  26. DNSの反映待ち… 26

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

  28. 検証 28

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

  30. 触ってみた感想 30

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