読者です 読者をやめる 読者になる 読者になる

AWSのAutoScalingの設定をしてみる

AWS の AutoScaling 機能を使う機会があったので、忘れないうちに設定方法を書いておきます。

AutoScaling とは

負荷に合わせて EC2 インスタンスの数を自動的に増減してくれる機能です。
増減はさせずに、インスタンスの数を常に一定にしておくためだけに利用したりもできます。
AutoScaling の利用には追加費用は発生しません。(当然ですが、AutoScaling によって自動的に追加された分のインスタンスの利用料はかかります。)
負荷に合わせて、と書きましたが、トリガーには CloudWatch のメトリクスなどが使用できます。

以下の記事に分かりやすく概要が書いてあります。
【AWS】Auto Scalingまとめ - Qiita

設定

今回はマネジメントコンソールを使ってGUIで設定をしていきます。
AutoScaling を利用するためには、[起動設定] と [AutoScalingGroup] を作成する必要がありあす。

[AutoScalingGroup] では、インスタンスを起動するAZやトリガーなどの設定します。
[起動設定] では、インスタンスサイズやセキュリティグループ等の、起動するインスタンスの情報を設定します。

起動設定の作成

AutoScalingGroup を作成する前に、あらかじめ起動設定を作成しておく必要があります。

これで起動設定の作成は終わりです。

AutoScalingGroup の作成

  • [EC2 Management Console] のサイドバーにある [AutoScalingグループ] → [AutoScalingグループの作成] をクリックします。

  • 先程作成した起動設定を選択します。

  • [AutoScalingグループの詳細設定] の [高度な詳細] をクリックすると色々出てくるので設定していきます。
    ELB 配下のインスタンスを AutoScaling 対象にする場合には [ロードバランシング] にチェックを入れて、使用する ELB を選択します。
    [ヘルスチェックのタイプ] を [ELB] に設定すると、「EC2 インスタンス自体は生きているけど ELB のヘルスチェックが通らない」状況の時などに異常ありと判断され、インスタンスの置き換えが行われるようになります。
    [ヘルスチェックの猶予期間] には、インスタンスの起動後、サービス開始できるようになるまでの時間(ビルドやデプロイ等に掛かる時間)以上の値を入力します。
    ELB ヘルスチェックを正しく返せない状態でこの AutoScaling ヘルスチェックが開始されてしまうと、起動と削除が繰り返されていつまでたってもサービスが提供できない状態に陥るので注意が必要です。(確か EC2 インスタンスは起動した時点で1時間分の課金が行われるので、起動と削除が繰り返されると厄介です。)

  • [スケーリングポリシーの設定] では、トリガーの設定等を行います。
    負荷に合わせてインスタンスの増減をする場合は、[スケーリングポリシーを使用して、このグループのキャパシティを調整する] を選択し、インスタンス数の範囲と、インスタンス増減のタイミングを指定します。
    [グループサイズの増加] と [グループサイズの減少] のそれぞれで [新しいアラームの追加] を行い、閾値を指定します。
    [ステップを追加] で、負荷の度合いに応じて増減させるインスタンス数に変化をつけることも可能です。
    [ウォームアップ] の秒数を指定すると、インスタンス増加のイベントが発生した後、指定した時間が経つまで次の増加イベントが発生しなくなります。 (デフォルトでは5分)

  • [通知の設定] では、AutoScaling で発生したイベントを指定したメールアドレス等に通知する設定ができます。
    通知が必要な場合は [通知の追加] をクリックします。

  • 最後に起動するインスタンスへのタグ付けをして終わりです。

おわり

他にも色々な設定が可能ですが、一応これだけで AutoScaling グループが起動しインスタンスが作成されます。