今回はAWSのAuto Scalingの設定をご紹介。
Auto Scalingは簡単にいうとサーバに負荷がかかると、Auto Scaling group上にサーバ負荷に合わせて増減させて負荷分散が簡単に行えてしまうAWSのサービスです。
AutoScalingの元となるAMIを選択します。予め作っておきます。
今回はt2.smallを選択。
適宜名前を設定して、【確認画面にスキップ】をクリックします。
【セキュリティグループの編集】をクリックします。
予め作っていたがばがばセキュリティグループを選択。
確認をクリックします。
【起動設定の作成】をクリックします。
【この起動設定を使用してAuto Scalingグループを作成する】をクリックします。
各環境に合わせて下さいね。今回の環境ではロードバランシングかつ、ALBを導入しているので、ターゲットグループを選択するのを忘れずに。【スケーリングポリシーの設定】をクリックしましょう。
※ヘルスチェックのタイプは環境に合わせて設定をしましょう。ELBをきちんと設定していれば、ヘルスチェックはELBを選択すると良いですね。
1~3インスタンスを指定しました。
【新しいアラームの追加】をクリックします。
CPU使用率が30%の状態が5分続いたらEC2が増えるように設定して、【アラームの作成】をクリックします。
アクション実効の部分で1を入力します。
今度はグループサイズの減少させる設定を行います。
CPU使用率が10%を下回った状態が5分続けばEC2インスタンスを減少させる設定を行います。
内容を確認して【確認】をクリックします。
タグの編集をクリックします。オートスケーリングで生成されたインスタンスが名無しにならないようにします。
キーをNameとして、値を適宜わかるように入力し、【確認】をクリックします。
【Auto Scalingグループの作成】をクリックします。
お疲れ様です。
EC2のインスタンスの表示を見ると、オートスケーリンググループのインスタンスが作成されたのが確認できます。
オートスケーリンググループのインスタンスがELBロードバランサー追加されていることも確認が出来ました。
負荷をかけてみましょう。
CPU使用率が100%近くまで上昇させると、設定どおりにAutoScalingが行われ、【yuulinux_tokyo_AS_Group】のインスタンスが自動作成されました。この後3つまで増えました。
負荷をなくします。
EC2インスタンスが減少します。
希望の項目にて設定することで、Auto Scalingグループインスタンスの希望通りに減らせます。
余分なインスタンスが一気にお掃除されます。
狙った通りの設定になりました。
AutoScalingあるある
- インスタンスが落ちた時にアクセスしていたユーザのセッションがなくなりデータ消失。
- 過去に生成したAMIによりAuto Scalingインスタンスは生成される為、オートスケールで生成されたインスタンスと既に動いているEC2インスタンスとでプログラムの差異が生まれ不整合が起こる。最新になるようにAMIを頻繁に更新して生成していれば問題ないが非常に手間である。AutoScalingで生成された時に、最新のプログラムに更新させる仕組みが必要不可欠。
- AutoScalingによって生成されたEC2インスタンスが削減される時に、EBSも消失することを忘れてデータ消失。
今回の設定のままですと、上記の問題があります。次回はAutoScalingあるあるの1を解決する為にEC2インスタンスで共有するセッションサーバを作成する予定です。
また、生成した瞬間に1時間単位のEC2料金が加算されるので、ループして増減を繰り返すことにならないように工夫したり、素早くシステム異常に気付くなど環境に合わせた仕組みを実装して下さいね。