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

第119回 雲勉【オンライン】Step Functions を使ってAuto Scaling を制御してみた

第119回 雲勉【オンライン】Step Functions を使ってAuto Scaling を制御してみた

iret.kumoben

November 16, 2023
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. 第119回 雲勉【オンライン】
    Step Functions を使って
    Auto Scaling を制御してみた

    View Slide

  2. 0.講師⾃⼰紹介
    2
    n 岡部 良亮
    • CIࣄۀ෦ ߏஙୈീηΫγϣϯॴଐ
    • 2018年9⽉⼊社
    (MSP⼀次運⽤→MSP⼆次運⽤→構築第⼋セクションに異動)
    前職︓基盤システムの運⽤監視オペレーター・DCハウジング業務を担当。
    • 最近、猫を飼いました。

    View Slide

  3. アジェンダ
    3
    0. ⾃⼰紹介
    1. AWS Step Functions の概要
    2. AWS Step Functions を活⽤に⾄った経緯
    3. AWS Step Functions を利⽤した Auto Scaling の実例
    4. まとめ

    View Slide

  4. 本⽇のゴール
    4
    n AWS Step Functions の概要についてご理解いただく。
    n AWS Step Fucntions の作成・設定についてご理解いただく。

    View Slide

  5. 1. AWS Step Functions の概要
    5

    View Slide

  6. 1.AWS Step Functions の概要
    6
    n AWS Step Functionsとは
    AWS Lambda 等のサービスと統合してビジネスクリティカルなアプリケーションを構築で
    きるサーバーレスオーケストレーションサービスです。AWS Step Functions のグラフィカ
    ルコンソールでは、アプリケーションのワークフローを⼀連のイベント駆動型ステップとし
    て確認できます。

    View Slide

  7. 1.AWS Step Functions の概要
    7
    AWSの各サービスや、AWS CLI アクションをワークフロー形式で可視化して実装することが
    できるため、GUIベースでサービスやアクションの処理を実装できるのが魅⼒的。
    コード表⽰も可能

    View Slide

  8. 1.AWS Step Functions の概要
    8
    AWS Step Functions は ステートマシン という単位で構成。
    AWSサービスや各アクションを ステート と呼ばれるステップをフローで実⾏することで
    ⼀連の処理を実⾏できる。
    ステートマシン
    ステート

    View Slide

  9. 1.AWS Step Functions の概要
    9
    ステートには様々な種類があり、それぞれのステートを組み合わせて処理を実現可能。
    ・Task︓何らかの処理を実⾏
    ・Wait︓処理待機
    ・Succeed︓処理の成功判定
    ・Fail︓処理の失敗判定
    ・Choice︓条件の分岐
    ・Parallel︓並列で処理
    ・Map︓Mapステート内で⼀連の
    ワークフロー処理を実⾏

    View Slide

  10. 1.AWS Step Functions の概要
    10
    ・ワークフローの作成
    Workflow Studioによる、GUIベースでの作成が可能。

    View Slide

  11. 2. AWS Step Functionsを活⽤に⾄った経緯
    11

    View Slide

  12. 2. AWS Step Functionsを活⽤に⾄った経緯
    12
    そもそもなんでAWS Step Functions を使うの︖
    普通にAuto Scaling の設定すればよくない︖

    View Slide

  13. 13
    ■実装要件
    お客様環境のオンプレミスサーバーとAWS環境のEC2を利⽤して、
    ハイブリッドに負荷分散を⾏いたい要望があった。
    通常時はオンプレミスサーバーをターゲットにする
    ため、Auto Scaling 配下のターゲットグループに
    IPアドレスでターゲット指定する必要がある。
    2. AWS Step Functionsを活⽤に⾄った経緯

    View Slide

  14. 14
    ■ここで問題が・・・
    Auto Scaling の仕様で、Auto Scaling Group に属するALB配下のターゲットグループにはイ
    ンスタンスのターゲットタイプを指定する必要があり、IPアドレスをターゲット指定すること
    ができない。
    さてどうしよう・・・
    2. AWS Step Functionsを活⽤に⾄った経緯

    View Slide

  15. 15
    AWS Step Functionsを利⽤すれば、Auto Scalingで作成されたインスタンスからIPアドレス
    を抽出して指定することができるらしい。
    2. AWS Step Functionsを活⽤に⾄った経緯

    View Slide

  16. 16
    早速やってみましょう
    2. AWS Step Functionsを活⽤に⾄った経緯

    View Slide

  17. 3. AWS Step Functions を利⽤した
    Auto Scaling の実例
    17

    View Slide

  18. 18
    ■スケールアウト処理フロー
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  19. 19
    ■Step Functions ワークフロー
    ・Task︓DescribeInstances
    インスタンス情報を取得(IPアドレス抽出)
    ・Task︓RegisterTargets
    ターゲットグループへ登録
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  20. 20
    オートスケール処理の Step Functions、ステートマシン呼び出しの EventBridge を作成する。
    スケールイン保護 無効化
    ライフサイクルフック
    ライフサイクル移⾏:インスタンス終了
    ハートビートタイムアウト:500秒
    デフォルトの結果:CONTINUE
    ※Auto Scaling構成(ALB、ターゲットグループ、Auto Scaling Group 等)、IAM周り
    EventBridge の詳細⼿順については今回は割愛。
    3. AWS Step Functions を利⽤した Auto Scaling の実例
    ・Auto Scaling Groupの設定

    View Slide

  21. 21
    ※補⾜︓ライフサイクルフック
    Auto Scalingの機能で、EC2のInService移⾏前、Terminated移⾏前に設定することで特定の処
    理が完全に終了してからステータスを遷移させることが可能。
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  22. 22
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  23. 23
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  24. 24
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  25. 25
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  26. 26
    インスタンスID抽出のため、APIパラメータを設定
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  27. 27
    プライベートIPを抽出し、次のタスクにパラメータを
    渡すため、ResultSelector を設定
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  28. 28
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  29. 29
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  30. 30
    事前作成済みのターゲットグループに前段で抽出した
    IPアドレスのEC2を指定してターゲット登録
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  31. 31
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  32. 32
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  33. 33
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  34. 34
    ■EventBridge 作成(※詳細⼿順は割愛)
    イベントパターン︓
    Auto Scaling 配下のEC2起動成功をトリガーとする
    ターゲット︓
    先程作成したステートマシンを指定
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  35. 35
    実際にスケールアウトしてみる
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  36. 36

    View Slide

  37. 37
    ■スケールイン処理フロー
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  38. 38
    ・Task︓DescribeInstances
    インスタンス情報を取得(IPアドレス抽出)
    ・Task︓DeregisterTargets
    ターゲット登録解除
    ・Wait
    360秒の待機処理
    ・Task︓CompleteLifecycleAction
    ライフサイクルフックの完了処理
    ■Step Functions ワークフロー
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  39. 39
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  40. 40
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  41. 41
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  42. 42
    インスタンスID抽出のため、APIパラメータを設定
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  43. 43
    プライベートIP、インスタンスIDを抽出して
    次のタスクにパラメータを渡すため、ResultSelectorを設定
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  44. 44
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  45. 45
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  46. 46
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  47. 47
    プライベートIP、インスタンスIDを抽出して
    次のタスクにパラメータを渡すため、ResultPathを設定
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  48. 48
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  49. 49
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  50. 50
    ターゲットグループの登録解除遅延まで待機処理(360秒)を挟む
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  51. 51
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  52. 52
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  53. 53
    ライフサイクルフック、Auto Scaling Groupを指定
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  54. 54
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  55. 55
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  56. 56
    ■Step Functions 作成
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  57. 57
    ■EventBridge 作成(※詳細⼿順は割愛)
    イベントパターン︓
    Auto Scaling 配下のEC2終了ライフサイクルアクショ
    ンをトリガーとする
    ターゲット︓
    先程作成したステートマシンを指定
    3. AWS Step Functions を利⽤した Auto Scaling の実例

    View Slide

  58. 3. AWS Step Functions を利⽤した Auto Scaling の実例
    58
    実際にスケールインしてみる

    View Slide

  59. 59

    View Slide

  60. 60
    4.まとめ
    ・グラフィカルにワークフローを設定することが可能
    ・コードが苦⼿な⽅でも直感的に設定ができる。
    ・Lambda 等の他のサービスも組み合わせることで様々な使い⽅ができる。

    View Slide

  61. 61
    ご清聴ありがとうございました

    View Slide