AWSにはいろんな機能がありますが、その中でもWeb系システムでよく利用されるオートスケール(以下AutoScaling)。
- AutoScalingってどんな設定をするのか?
- どんな動きをするのか?
ここではAWS初心者向けに専門用語を極力使わずにわかりやすく解説します。
目次
AWS AutoScalingの基本
AutoScalingってどんな用途で使うの?
まずはAutoScalingってどんな用途で使うのでしょうか?
AutoScalingは、Webサイトのアクセス数に応じてWebサーバを柔軟に増減させる仕組みです。
例えば普段それほどアクセスは多くないが、チケット販売の時だけ急にアクセスが増加する。
そんな時だけWebサーバを増強させてサーバダウンを防ぎたい!
こんな要望に応じてくれるのがAutoScalingです。
AWSは基本的には使った分だけお金を払う従量課金制です。
ですので、ふだんそんなにアクセスないのに無駄にサーバを複数台動かしていると、その分だけジャンジャン課金されてしまいます。
必要な時だけ増やして、必要なくなったら減らすというのがAutoScalingのメリットです。
AutoScalingってどんな動きをするの?
AutoScalingの仕組みを知っている人は多いのですが、実際に使ったことがないとどうやってサーバを増減するのか?
イメージが付きにくいと思いますので、簡単に解説してみます。
AWSでサーバを作る時はEC2というサービスを使ってサーバを作ります。
AutoScalingって図のようにEC2で作ったWebサーバを負荷に応じて増やしたり減ったりするんでしょ?
と思うかもしれませんが、細かく言うと違うんですね。
AutoScalingは、EC2で作成したサーバをAMIというイメージにしたモノから起動されるのです。
何言ってるかわからないと思いますのでもう少しかみ砕きます。
EC2でサーバを作成し、イメージの作成という操作をしてAMIイメージというサーバのスナップショットのようなモノを作ります。
そのスナップショットからAutoScalingグループというサーバを起動して、このサーバの負荷に応じて増やしたり減らしたりします。
サーバを増えるときは、先ほど取得したAMIイメージから自動で起動され、必要なくなったら勝手に消えていきます。
ですので、今起動しているAutoScalingグループのサーバ設定を修正したとします。
するとAutoScalingで立ち上がってきたサーバは、AMIイメージから起動されたものですので、当然ながら異なる設定のサーバが上がってくることになるのです。
ですので、サーバ設定を修正して次に上がってくるサーバも同じ設定にしたい場合は、設定修正したサーバのイメージを保存して次に上がってくるサーバも同じ設定で上がってくるようにする必要があります。
実運用に入るとコレが結構手間だったりします。
AutoScalingで増えたサーバって勝手に消えるの?
AutoScalingでは、サーバのCPU使用率が80%を超えたら何台増やすというような設定が可能です。
負荷に応じて5台増やしたり1台増やしたりは設定次第です。
CPU使用率が収まりある程度時間が経過したらサーバは自動で消えていきます。
ですが、減らすときも増やすときも自動じゃなく手動での設定も可能です。
増やすときは自動にしたいけど減らすときは手動にしたいという場合は手動設定にすれば問題ありません。
AutoScalingを利用する時の注意点
実際にAutoScalingを利用する時の実運用上の注意点をご紹介します。
運用手順が複雑になる
AutoScalingを利用すると運用はちょっと複雑になります。
例えば今まではWebサーバ3台をロードバランサーで分散させて運用していたとします。
このサーバのメンテナンスをする時は、ロードバランサーの負荷設定を切り替えてアクセスが来ないサーバを順次メンテナンスすることが出来ました。
ですが、AutoScalingの場合、前述したようにサーバの設定を変えても起動するイメージを変更しないと、新たに立ち上がるサーバのメンテはできません。
ですので、サーバを一度AutoScalingから外し、メンテナンス後イメージを取得して起動してくるイメージを変える。
こんな面倒な手順が必要になってきます。
ログは外部管理する
AutoScalingで増えたサーバが消える時、サーバはTerminateという状態になりサーバそのものの存在が消えてしまいます。
後日増えていたサーバのアクセスログやエラーログを確認しようとしても、サーバ自体が無くなってしまうので確認できない状態になってしまいます。
ですので、AutoScalingグループのサーバは、サーバ内部で保存せず外部に出力するようにしておきましょう。
監視は対応しているプロダクトを使う
AutoScalingで起動してきたサーバの監視をするのも一工夫必要です。
ちょっと古臭い監視ツールではAutoScalingで起動してきたサーバを監視することはできません。
最近はAutoScalingに対応している監視ツールもありますが、細かい監視が不要な場合はAWSのCloudWatchで十分です。
サーバ再起動には要注意
AutoScalingでサーバを2台セットで上げているような場合、1台を再起動かけたりするとそのサーバはAutoScalingの仕組みで消されてしまい、新たなインスタンスが起動してきます。
Webサービスが長期間停止しちゃうようなケースも、ロードバランサーがこのサーバ止まったと判断しサーバを消して新たなインスタンスを立ち上げようとします。
ですので、AutoScalingを利用する時はサーバ再起動やサービス再起動には十分注意が必要です。
まとめ
AutoScalingはとても便利な機能ですが、安易な導入は非常に危険です。
現時点では設定も簡単ではありませんし、運用面に大きな影響を及ぼします。
AutoScalingの機能を理解し、十分な検証を積んでから導入するようにすべきです。