CDP:Scheduled Scale Outパターン

提供:AWS-CloudDesignPattern
移動: 案内, 検索
寄贈したアーキテクト

サーバ数のスケジュールにあわせた増減

目次

解決したい課題

 クラウド環境で構築されたWebサービスにおいて高いトラフィックを処理する場合、ScaleOutパターンが効果的である。しかしながら、負荷状況を見て手動で仮想サーバーを追加したり、仮想サーバーの負荷状況に応じて自動的にインスタンスを追加したりしていると、急激(目安として5分以内にトラフィックが倍増するようなケース)なアクセス増の場合、インスタンスの起動が間に合わないことがある。  またWebサービスに限らず、一定時間のみ大量のコンピューターリソースを利用したいシチュエーションの場合、時間ベースでのインスタンス起動を行いたいケースがある。

クラウドでの解決/パターンの説明

 瞬間的にアクセスが急増するタイミングが分かっている場合や、コンピューターリソースを使いたい時間帯が分かっている場合、スケジューリングされたスケールアウトが有効となる。Scale Outパターンと基本構成は似ているが、スケールアウトするタイミングを時間指定して実行することが主な特徴である。事前にスケールアウトを完了させておくことでトラフィックの急増に万全の体制で対応でき、さらに直前にスケジューリングを行うことで無駄な費用も最小限に抑えることが可能となる。  クラウドでは必要なときのみ仮想サーバーを利用できるので、処理能力が必要な時のみ仮想サーバーを起動することが現実的になった。またこれには仮想サーバーを定時で起動する仕組みが必要となる。これはクラウドのスケジューリングの仕組みを使うと実現できる。

実装

 AWSのAutoScalingには時間指定して設定を変更する機能がある。この機能を使用することでスケジューリングされたスケールアウトが構築可能である。処理が終了したり、トラフィックが落ち着くであろう時間帯を指定してスケールインすることも可能である。

  • ScaleOutパターンを参考にAuto Scalingを設定する(スケールアウトのトリガー、スケールインのトリガーを含む)。
  • EC2インスタンスを増加させたい時刻を指定し、「インスタンスの最小台数(---min-size)」という設定項目に、用意したいインスタンス分に変更する。
  • 指定した時刻になると、上記で指定した最低台数までEC2インスタンスが起動する。
  • 処理が落ち着いたタイミングで再度インスタンスの最小台数を少なくすると、設定したトリガーに従いスケールインする。

構造

6wNg0ISJczU5Pz1m-4813A.png

利点

  • トラフィック量/処理量の増大予定時刻に合わせて自動的にEC2インスタンスを増やすことができる。
  • トラフィック量/処理量が多くないときにはEC2インスタンスを削減できるのでコスト削減につながる。

注意点

  • 指定する時間はUTC時間となる。
  • ELBを利用する場合、急激なトラフィック増加の場合はEC2だけでなく、ELBも事前にスケールアウトする必要がある。この場合は、AWSサポートに対してプレウォーミングを申請する。
  • EC2インスタンスは時間単位で課金され、短時間であっても一度起動して終了すると、1時間分の課金がかかる。起動、終了のタイミングには注意が必要である。

その他

  • Scale Outパターンを参照。
個人用ツール
名前空間
変種
操作
CDPメニュー
ツールボックス