※この記事は公開されてから1年半以上経過しています。情報が古い可能性がありますのでご注意ください。
初めまして、IDCフロンティア ビジネス開発本部の成田です。
Webサイトやアプリケーションなどを公開している方、大量のアクセスに対する負荷対策はどのようにしていますか?
すぐに思いつくのは単純にサーバーを増やすことでしょう。Webサイトが重くなっているのに気がついたら手動でサーバーを追加する、スクリプトで負荷状況を監視して自動で増やす、などいろんな方法があります。
しかし「ずっとWebサイトを見続けることなんてできないし、スクリプトなんてどうやって書いたらいいか分からない!もっと簡単にできないの?」という方もいますよね。ご安心ください。SCALR(スケーラー)を使えば、あっという間に設定ができてしまいます!
というわけで、今回はSCALRを使って、サーバーのオートスケーリングの設定をしてみましょう。
SCALRとは
SCALRは複数のクラウドを一括で管理でき、サーバーの構築を自動で行うソフトウェアツールです。 主な機能としては
-
テンプレートによるapacheやMySQLなどのアプリケーションの利用
-
同一の構成のサーバー群の複製
-
スクリプトの保存、自動実行
-
DNS管理
-
モニタリング
などなど・・・、様々な管理機能があります。
Farmとは、1グループ内のサーバーの設定情報をまとめた設定集のようなものです。どのような単位で分けても構いません。わかりやすい例としては、A企業のサイト、Bゲームのサイトなどのサイトごとや、MySQL Farm, Front WEB Farmなどの機能ごとに分けると良いでしょう。
Roleとは、ApacheやMySQLなどのサーバーの機能(役割)のことで、1つ1つが各クラウド上でテンプレートとして存在します。このRoleをFarmに登録して、1つのサイトのサーバー設定集を作ることになります。Farmを起動するとRoleに従ってクラウド上にサーバーが自動作成されます。
SCALRの基本的な流れとしては、「Farmを作る」→「Roleを登録する」→「各Roleの設定をする」→「Farmを起動する」となります。
今回は取得したSCALRアカウントにIDCフロンティア セルフクラウドを登録した状態から始めます。
登録の方法についてはSlideShareで公開されている登録手順を参照してください。
※自前のスクリプトに挑戦したい!という方は、関連記事の「APIを利用した簡単オートスケーリング」も参考にしてみてください。
Farmの構築
では、さっそくオートスケーリングを構築してみましょう。 今回はWebサーバーに負荷がかかった場合に自動でオートスケーリングが行われる、という設定をすることが目的です。
※サイトを公開するときの手順やセキュリティ設定などは省きます。
まずはサーバーを入れる箱であるFarmを作成します。左上のSCALRアイコンをクリックすると機能の一覧が表示されます。その中からFarmの+をクリックしてください。
新規のファームには名前を付ける必要があります。自分のわかりやすいもので結構です。入力したら左にある[Add new role]をクリックしましょう。
画面に様々な種類のサーバーが表示されます。ここでサイトに必要なサーバーをいくつか選ぶことになります。ロードバランサーの役割でNginxを入れたり、DBのPerconaやmemcachedを入れたりするのもいいですね。
今回はWebサーバーのみなのでApacheを選択します。
アイコンをクリックすると右側にサーバースペックの設定画面が現れます。
ここではLocationに[jp-east-t1v]、OSはCentOS 6.1の64bit、サーバーのサイズは[XS(1CPU/512MB)]を選択します(サーバースペックを小さめにして負荷をかけやすくします)。
ネットワークは取得済みのIPを指定してください。
全ての設定が終わったら[Add to farm]でFarmに登録しましょう。左側にApacheのアイコンが追加されましたか?
それでは次はいよいよサーバーの動作、オートスケーリングの設定に入りましょう。初めに画面に表示されているのがスケーリングを行うアルゴリズムです。まず中央のMinimum instance、Maximum instanceに増減を行う範囲のサーバー数を入力します。今回は1台から3台の範囲で増減させることにしました。(Minimumの方に入力した数でFarm起動時に同時作成されます。)
入力したインスタンス数の右側にある+をクリックしてみましょう。 オートスケーリングを行うアルゴリズム一覧が表示されます。
-
LoadAverages(ロードアベレージ、CPUの使用率)
-
FreeRam(残っている Free RAMの量)
-
URLResponseTime(特定のURLのレスポンスタイム)
-
SQSQueueSize(Amazon SQS's queue)
-
DataAndTime(日時指定)
-
BandWidth(network I/Oの帯域)
サーバーの負荷にもいろいろありますが、ここでは1分あたりのLoadAverageで設定してみます。 一覧から[LoadAverage]を選択し、「Use 1 minute(s) load averages for scaling」にします。
次はスケーリングする閾値の設定です。LAの値が1より小さければサーバーを減らし、3より大きければ増やすことにします。サーバーが増えた後もLAが設定した閾値を超えていれば、先ほど設定した「Max instance」の数まで作成され続けることになります。閾値を入力すると画面中央にアルゴリズムが追加されます。
DateAndTime以外のアルゴリズムは複数を組み合わせることもできるため、LAかFreeRamのどちらかが閾値を超えた場合にサーバーを増やす、ということも可能です。負荷が発生しそうな時間帯がわかっている場合は日時設定を利用してあらかじめサーバーを増やしておくのが良いでしょう。
Algorithm refinements では増減を行うときのルールを設定できます。
- Polling interval (every) * minute(s)
閾値の監視間隔
- Do not up-scale role if there is at least one pending instance
Pending状態のサーバーがある場合は増やさない
- Keep oldest instance running after scale down
サーバーを減らすときに古いものを残しておく
- Enable safe shutdown during downscaling
減らすときにサーバーを安全にシャットダウンする
- Delays
増減の後、*分間は次の増減を行わない(サーバーは1台ずつ作成される)
今回は1台目のサーバーが負荷をかける役目も行うので、削除されないように[Keep oldest instance running after scale down]をONにしておきます。
これで設定を[save]してオートスケーリングの設定は完了です。簡単でしょう? 複数種類のサーバーがある場合はそれぞれに対して同様の設定をしてからsaveしてください。
仮想マシンの作成
設定が保存されるとFarm一覧画面になります。一覧、といっても保存後は設定をしたFarmしか表示されないのでわかりやすいですね。
設定したFarmはそのままでサーバーが作成されません。Farm一覧画面の右側の[Action]から[Launch]を選択して作成を開始してください。FarmのステータスがRunningになると、設定した種類のサーバーが自動で作成されます。サーバーの状態はServersの[View]から確認することができます。
作成後のサーバー内の設定もあるため、サーバーのステータスがRunningになるまで5~10分ほどお待ちください。
以上で作成完了です!
サーバー一覧には作成されたリージョンや設定されているIPなどが表示されます。LAの値もここで確認できます。Actionsの黒いコンソールアイコンをクリックしてください。ブラウザ上からSSHで接続することができます。
Apacheが起動していることを確認してみましょう。まだ外部公開のための設定をしていないため、ローカルでテキストブラウザのw3mを使って見てみます。
# w3m http://localhost/
テストページが確認できました。実際に公開する場合はネットワークやDNSの設定などが必要になります(これもSCALRから管理可能です)。
オートスケーリング テスト
それではサーバーに負荷をかけてみましょう。今回使用するのはWebサーバーのベンチマークに利用されるApache Benchです。 SSHコンソールから下記のコマンドを実行すると、同時接続数50でリクエスト数100000になるまで http://localhost/ にアクセスし続けます。これによってサーバーへ継続的に負荷をかけ続けます。
# ab -n 100000 -c 50 http://localhost/
別ウィンドウでサーバー一覧の画面を開いてLAの値を確認できるようにしておきましょう。 負荷がかかって更新ボタンを押すたびにLAの値が上がっていくのが確認できます。
新しいサーバーが作成されました!成功です!
ロードバランサ用のNginxなどをFarmに登録している場合は、作成されたサーバーが自動的に分散対象として登録されます。
負荷が収まりLAが1未満になると作成されたサーバーは削除され、元の状態に戻ります。
いかがでしたでしょうか。SCALRを使うことで本来手間のかかるオートスケーリングを簡単に設定できました。
SCALRには他にも便利な機能がたくさんあります。 今後もいろんな機能の使い方を紹介していきますのでご期待ください。
<連載記事>