目次
ごあいさつ
こんばんは。
最近ずっと中華を食べたいと願っている、もに倉です。
今回はありそうでなかったAuto Scalingの構成について、設定方法をご紹介します。
どういう構成?
▼材料
絶対に消したくない、消えてほしくないEC2インスタンス × 任意の台数
普段はいなくてもいいけど、援軍には来てほしいな ASG × 基本は0~任意のキャパシティ
すべてを包み込むELB
Auto Scalingで管理されているインスタンスは、スケールイン保護を設定していても
ヘルスチェックに失敗すると削除され、新しいインスタンスと入れ替わってしまいます。
インスタンス1台は常駐していてほしい・この1台は絶対に入れ替わってほしくない・負荷が高くなったらインスタンスが増えてほしい というときの設定です。
わりかし無理やりですが、やっていく~~
事前に用意した材料
EC2の作成・AMIの作成・起動テンプレートの作成・ELBとターゲットグループの作成・ASGの作成は
割愛するので、作ったものを一挙紹介!
絶対消えてほしくないEC2インスタンス:monikuraEC2
Apacheを使っている単純なWEBサーバです。
増援用ASG:monikuraASG
monikuraEC2のAMIから作った起動テンプレートでインスタンスを生やす設定になっています。
生えたインスタンスの名前は「monikuraASG-EC2」になるようにしています。
とりあえず希望・最小・最大キャパを1にして、問題なくインスタンスが生えてくるのを確認済み。
ELBはいかなるインスタンスをも拒まず:monikuraELB&monikuraTG
monikuraEC2と、monikuraASGから生えたインスタンスである
monikuraASG-EC2がターゲットになっています。
ここから、下記の通り設定していきます。
・ASGの希望・最小キャパは0、最大は3
・TGに入っているインスタンスの平均CPU使用率が70%以上になったらスケールイン
・TGに入っているインスタンスの平均CPU使用率が40%以下になったらスケールアウト
※全部テキトーなのでよしなに決めてください♪
レツゴ!
キャパシティ設定を変更
ここはすぐに終わるところですね(^^)/~~
キャパシティの概要を編集して、希望・最小を0、最大を3に設定します。
したらば、さっき生えてきたインスタンスも勝手にいなくなりますね。
スケーリングポリシー設定のためのCloudWatch アラームを作成
ここが要であり、鬼門でもあるところです;;
ちょっと解説
今のASGでは、スケーリングポリシーのタイプで推奨されているものは
「ターゲット追跡スケーリング」だと思います。
ただ、今回の要件の場合、このターゲット追跡スケーリングではうまいこと設定できない と 思います たぶん
このメトリクスタイプじゃあ今回の要件は満たせないんだな~
というわけで、今回は「ステップスケーリング」を使います。
ステップスケーリングは
CloudWatchアラームの閾値を超えた場合、インスタンスをいくつ増やす/減らす
といったような設定が可能なポリシーです。
つーわけで、ステップスケーリングに用いるためのCloudWatchアラームを作成していきます!
メトリクスの作成
まず、CloudWatchコンソールから[すべてのアラーム] → [アラームの作成]をクリック!
そうすると「メトリクスの条件の指定」ページに移るので、[メトリクスの選択]からメトリクスを作成していきます。
今回、ほしいメトリクスは「TGに入っているインスタンスの平均CPU使用率」です。
(このメトリクスを用いてアラームを設定する)
下記のように設定します。
使うメトリクスを選択
monikuraEC2の「CPUUtilization」にチェックを入れる
monikuraASGの「CPUUtilization」にチェックを入れる
統計設定変更
「グラフ化したメトリクスタブ」を開く
選択したメトリクスの統計をそれぞれ「最大」に変更
こんなかんじ
式を追加
○ASGにインスタンスがない場合、値を「0」とする式
[数式を追加] → [FILL]を選択
↓の赤枠の部分を「FILL(m2,0)」に変更
※m2 = ASGのメトリクスIDになるようにしてください。 ラベルもわかりやすいように変更するとGOOD
これをしないと、なんか値が変になっちゃうんですよぬぇ……;;
○ASGが0台のときはmonikuraEC2のCPU使用率のみ表示、
それ以外はmonikuraEC2とmonikuraASGのCPU使用率平均を表示する式
[数式を追加] → [IF]を選択
先ほどと同じ要領で詳細を「IF(e1 == 0, m1, AVG([m1, e1]))」に変更
最終的に↓みたいになっていればOK&IF文の式だけチェックを入れて[メトリクスの選択]をクリック!
アラームの設定
あとは事前に決めた閾値のとおりに設定して、アラームを作成します。通知とかはお好みで……。
今回は閾値:70%以上と閾値:40%以下のふたつを↑の手順で作成すればOKです。
スケーリングポリシーの設定
ここまできたらもう一息!!
対象ASGの詳細ページに戻って、「オートスケーリング」タブから[動的スケーリングポリシーを作成する]をクリック
これで完成です! 実際にはもうちょっとポリシー設定を考えたほうがいいとは思いますが……。
(monikuraEC2が急に鯖落ちしてメトリクス取れない状態になったらどうする? など)
終わりに
monikuraEC2にストレスをかけ散らかし、スケーリングポリシーが動くこともばっちり確認しました。
うまいこと使えたらいいな~という、ヤツ、でした(^^)/~~
もうちょっときれいにしたら実用性あるかなぁと。
お し ま い

たまごのひび割れから身が見え始めたエンジニア。