star76.jp

ニフティクラウドでオートスケールを試してみた

Share...Tweet about this on TwitterShare on FacebookGoogle+

クラウドといえば、必要なときに、必要なリソースを、必要な分だけ使えるというのが大きなメリットですよね。
オートスケールとは、サーバの負荷やトラフィック量のしきい値をあらかじめ設定しておき、それを超えた場合、自動的にサーバを増減してくれる機能です。
まさにクラウド!ですね。
数あるクラウドのサービスの中でも、ニフティクラウドはオートスケール機能を”コントロールパネル” で簡単に行うことができます。ではやってみましょう♪
まずは、下記がインストールされた環境を用意します。

  • SSHクライアント(teratermなど)
  • Apache(abコマンドを使います)
  • net-snmp-utils

ニフティクラウドは、オートスケール用にマシンイメージを作成する必要がありますので、まずはイメージ作成用の元サーバを作成し、そこからカスタマイズイメージを作ります。
簡単なホームページを表示するWebServerに負荷をかけて最大5台までスケールアウトするように設定し、実際にスケールアウトするかを確認してみます。
nifty001.png

① ファイアウォールの設定
② 元サーバの作成
③ iptablesの設定
④ SNMP設定
⑤ Apache関連の設定
⑥ サーバ起動時の設定
⑦ 元サーバからカスタマイズイメージを作成
⑧ ロードバランサの設定
⑨ オートスケールの設定
⑩ サーバーに負荷をかけてオートスケールされることを確認


① ファイアウォールの設定

まずは、ファイアウォールの設定をします。
「default(Linux)」ではSSHの22番しか開いていないので、HTTPの80番も通すように設定します。
「ルール設定を変更する」をクリックし、
nifty016.png
プロトコル「HTTP」、IN/OUT「IN」、接続元種別「CIDR」、IPアドレス・グループ「0.0.0.0/0」を 入力して全てのIPアドレスからのHTTPアクセスを許可し、「追加」ボタンを押し「サーバー選択へ」をクリックして進みます。
nifty017.png


② 元サーバの作成

イメージを作るため、スケールアウトする元となるサーバを作成します。
「Server」から「+サーバー作成」をクリックします。
nifty001.png

「01イメージ選択」

今回はApacheがデフォルトでインストールされているサーバを使用したいため「スタンダード」タブから「CentOS 5.3 64bit Server」を選択します。
nifty002.png

「02基本設定」

「サーバー名」を入力します。「サーバー名」は適当な名前で構いません。
今回は、インターネットからサーバにアクセスしますが、サーバを再起動した際にIPアドレスが変更されても影響はありません(固定である必要がない)ので、「動的IPアドレスを利用する」にチェックし、「タイプ・料金設定へ」をクリックして次に進みます。
nifty003.png

「03 タイプ・料金設定」

サーバーのタイプは一番スペックの低い「mini」 を選択し料金は「従量」を選んで「アカウント設定へ」をクリックします。
nifty004.png

「04 アカウント設定」

「SSHキーを新規作成」を選択し「SSHキー名」「パスフレーズ」を入力します。
「SSHキー名」は適当な名前で構いません。
nifty005.png
「SSHキーを作成する」をクリックし、SSHキーのリンクが表示されますので、ダウンロードします。
キーは1度しか発行されませんので、なくさないようにしてね〜
「スクリプト設定へ」をクリックして次に進みます。
nifty006.png

「05 スクリプト設定」

サーバが起動した際に自動で実行したいコマンド等を記述したい場合は、ここで設定します。
今回は特に設定しませんので「ファイアウォール設定へ」をクリックして次に進みます。
nifty007.png

「06 ファイアウォール設定」

「作成済みファイアウォールを選択」をクリックして「default(Linux)」を選択し「確認へ」で次の画面へ。
nifty008.png

設定が正しいことを確認して「作成する」をクリックすると、2〜5分くらいでサーバが起動されます。
nifty009.png

nifty010.png

「IPアドレス(動的)」に表示されているアドレスをコピーし、teratermなどのSSHクライアントでSSH接続します。
nifty011.png

このサーバにはじめてログインする場合はセキュリティ警告の画面が表示されますが、これはなりすましサーバへの接続をしないための注意メッセージです。
ここでは「続行」を押して次に進みます。
nifty012.png

ユーザ名「root」とサーバ作成時に入力したパスフレーズを入力し、「RSA/DSA鍵を使う」を選択し、「秘密鍵」をクリックして先程ダウンロードしたSSHキーを選択します。
nifty013.png
nifty014.png


③ iptablesの設定

ニフティクラウド内部のサーバからSNMPアクセスできるようセキュリティの設定を変更します。

下記を「reject」の記述がある前の行に追加します。

ping監視設定(ping監視をする場合のみ設定して下さい)

下記を追加して、

以下の行をコメントアウトします。

iptablesのスタート

設定が完了したら、iptablesを起動します。

「OK」であることを確認します。


④ SNMP設定

ニフティクラウドの場合、サーバの負荷状態はニフティの内部のサーバからSNMPというプロトコルを使って監視されますので、サーバにnet-snmpをインストールします。

net-snmpのインストール

最後に Complete! が表示されることを確認しましょう。

snmpd.confの追加

ニフティの内部のサーバからSNMPでアクセスできるようにするため、snmpd.confの設定を変更します。

snmpd.confの一番したの行に、下記を追加します。

1〜5行目までは、ニフティ内部のSNMPサーバのアドレスで、コミュニティ名(snmpアクセスする際のパスワード代わりとなるもの)は「niftycloud」です。
6行目は「net-snmp-utils」をインストールした自分のマシンのアドレス記入します。
「disk /10000」は、「/」ルート配下の空き容量が「10000KB」以下になったときに、エラーを表示させる、という設定です。

設定が完了したら、snmpdを起動させます。

snmpdのスタート

snmpの設定確認

「net-snmp-utils」をインストールしたマシンからsnmpwalkコマンドを実行し、サーバから応答があるかを確認します。


⑤ Apache関連の設定

Apacheがインストールされていることを確認します。

「installed」の表示を確認して下さい。

ホームページ用コンテンツのアップロード

「index.html」を作成し/var/www/html 配下にアップロードします。
「index.html」は適当なもので構いません。

Apacheのチューニング

abコマンドでApacheのベンチマークを行うための設定をします。

httpd.confを編集します。

KeepAliveをOnに変更

MaxKeepAliveRequestsを0に変更

KeepAliveTimeoutを60に変更

IfModule prefork.cのServerLimit,MaxClients,MaxRequestsPerChildの値を変更

<変更前>

<変更後>

IfModule worker.cのMaxCrients,ThreadPerChildの値を変更

<変更前>

<変更後>

httpdのスタート

httpdを起動します。


⑥ サーバ起動時の設定

サーバ起動時にApache、snmpd、iptablesが起動するように設定します。

chkconfig –list で設定を確認します。


⑦ 元サーバからカスタマイズイメージを作る

ニフティクラウドは、サーバを停止しないとイメージの作成ができませんので、サーバを停止します。
nifty018.png
VMWareを使っているからサーバの停止が必要なんでしょうね〜

サーバにチェックを入れてイメージ化を選択し「実行」ボタンを押します。
nifty019.png

イメージ名を入力して、イメージ化元のサーバーを残すのチェックを外して「OK」を押します。
元サーバを残す場合は時間がかかりますので注意して下さい。
nifty020.png


だいたい10〜20分位でしょうか。完了予想時刻のメッセージがでるのが面白いです。
VMWareは、VMがファイルなので、元サーバを残さない場合は単に拡張子を変えているだけの操作をしているようにに思えます。
でもサーバを残してイメージを作る場合はデータをコピーする必要があるのでこれ位の時間がかかっちゃうんでしょうね〜

またこのイメージ保持料金ですが、イメージを作成するごとにかかるんです。
なので、設定に誤りが合った場合にイメージを作り直すとまた3,150円がかかってしまうので注意が必要です。
しかし高すぎないですかね、ニフティさーんw

nifty022.png
イメージが作成されました。


⑧ ロードバランサの設定

「Network/Security」の「+ ロードバランサー作成」をクリックします。
nifty023.png

「01 基本設定」


nifty024.png

ロードバランサ名を入力し、ポートは「HTTP」を選択します。
「ネットワーク流量」は「10Mbps」を選択、「ロードバランス方式」は「Least-Connection」(セッション数が最も少ないサーバに振り分ける方式)を選択 、「ポート設定」は「HTTP」「80」「80」を設定します。
「ヘルスチェック設定へ」をクリックして次に進みます。
ていうか、ローバラ1つで月額壱万円也って、高すぎません?ニフティさーんw
 

「02 ヘルスチェック設定」

nifty025.png
「PINGプロトコル」は「TCP」を選択
→「TCP」だと何故かerrorとなるため、一時的に「ICMP」に変更しました。
「ヘルスチェック間隔」は「10秒」、「チェック閾値」は「1」回 とし「サーバー設定へ」をクリックします。

「03 サーバー設定」

nifty026.png
「サーバー設定」では何もせずに「フィルタ設定へ」をクリック
 

「04 フィルター設定」

「フィルター設定」は「すべて」にチェックが入ったまま「オプション設定へ」をクリック

「05 オプション設定」

nifty028.png
「セッション固定」「Sorryページ」「携帯キャリアフィルター」は すべて「無効にする」にチェックが入ったまま「確認へ」をクリック

問題なければ「作成する」をクリックしてロードバランサを作成します。
nifty029.png


⑨ オートスケールの設定

「AutoScale」「+オートスケール作成」をクリックします。
nifty030.png

「01 基本設定」

「オートスケール名」で名前を入力し、「サーバーの最小台数」は「1」台、「サーバーの最大台数」は「5」台にします。
「ロードバランサー」は先程のロードバランサを指定し、 「スケールアウト開始間隔」は「0」分、「縮退監視間隔」は「10」分、 「スケールアウト・縮退台数」は「1」台とし、「サーバー設定へ」をクリックします。
nifty031.png

「02 サーバー設定」

スケールアウト元のサーバを設定します。 作成したイメージを選択し、 「有効時間」は「300」分とします。
オートスケールで作成されたサーバは、高負荷状態であってもここで設定した時間を経過すると削除されますので注意が必要です。
「サーバータイプ」でスケールアウトするサーバのタイプを選択します。元サーバと異なるタイプも選択可能です。
nifty032.png

「03 トリガー設定」

「リソース」は「サーバーCPU使用率」を選択します。 「閾値」は適当な値を入力します。
「長さ」は10分、20分、30分から選択できます。適当な値を入力して下さい。
「スケジュール設定へ」をクリックして次へ進みます。
nifty033.png

「04 スケジュール設定」

「スケジュール設定」は設定せずに「ファイアウォール設定へ」進みます。
nifty034.png

「05 ファイアウォール設定」

作成済みの「default(Linux)」ファイアウォールを選択し「確認へ」をクリックします。
nifty035.png

確認してオートスケールを作成します。
nifty036.png

オートスケールも月額1,050円ですと・・・た、高い

オートスケールが作成されました。
nifty037.png

オートスケールが作成されると、しばらくすると1台目のサーバが自動で作成され、起動されます。


⑩ サーバに負荷をかけてオートスケールされることを確認

ようやく設定がおわりましたので、スケールアウトの確認をしたいと思います。
abコマンドでHTTPでのアクセス負荷をかけます。

nifty039.png

nifty040.png

CPU使用率が上がり、Apacheプロセスが複数立ち上がっているのがわかります。
nifty038.png

スケールアウトした時刻と台数は、AutoScaleのログにも表示されます。
nifty041.png

Share...Tweet about this on TwitterShare on FacebookGoogle+

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">