(2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudの情報は IBM Cloud Docs や IBM Cloud アップデート情報 、柔らか層本をご参照ください。)
解決したい課題
テレビのニュースで、「情報を求める住民によって、ウェブ・サーバーにアクセスが集中して、一時的に繋がり難い状態になりました。 」といった報道がされることがある。 この問題の原因は、ウェブサーバーが設置された場所に繋がるインターネット回線の容量を超えたケースと、サーバーの処理能力が不足したケースがある。 SoftLayerのネットワークの回線容量は、十分な容量を確保されており、少々の事ではボトルネックにはならない。 一方、仮想サーバーの処理能力は、利用料金と比例する部分があり、経済的な理由からそれほど余裕を持たせることができない。 このように、アクセス集中による応答速度劣化と経済的な負担の課題がある。
ソリューション・パターン
オートスケールの機能によって、ユーザーからのアクセス数が増加した際に、自動的にサーバーを増設することができる。 反対に、アクセス数が減少した時にも自動的に削減できる。これにより、最初からアクセス量を見越したサーバー数を準備することなく、経済的に負荷対策を実施できる。
インプリメンテーション
増設したいサーバーのイメージ・テンプレートを作成する。
ローカル・ロードバランサーを注文して、サービス・グループを作成する。
オートスケールを注文して、サーバー増設と削減の条件設定、ロードバランサーの指定をおこなう。
サーバーの増設時にコンテンツを取り込むなどの初期化処理のために、ポスト・プロビジョニング・スクリプトを準備する。
オートスケール機能を有効化して、運用を開始する。
オートスケールのサーバー増設と削減の条件の設定では、CPU使用率が80%を30分以上、連続で超えたら、自動的にサーバーを増設するといった設定ができる。
さらに、上記のCPU使用率以外に、ネットワークの受信量や送信量、毎週の曜日、時間指定もできる。
ローカル・ロードバランサーを設定する場合、自動的に増設になったサーバーへ、リクエストの振り分けが開始される。
KVSのクラスタに適用する場合は、ロードバランサーを設定せず、クラスタ・メンバーの平均CPU使用率が設定値を超えたら、メンバーを自動的に追加することができる。
効果
繁忙期のサーバー増設、想定外のリクエスト増加への対応が、このオートスケールの機能一つで可能になる。
繁忙期の負荷に耐えられるように、最初からサーバーを準備する必要がなく、無駄な費用を発生させない。
懸念事項・注意点
増設サーバーは、イメージ・テンプレートの作成時点の状態で起動される。したがって、イメージ作成後に、追加・変更されたものは、反映されていない点に注意が必要である。
数分間の内に、急速に負荷が増加する様なものは、オートスケールでは増設が追いつかない。このようなケースでは、前もって増設するべきである。
ピーク時間帯が予測可能な場合は、時刻指定やマニュアル操作で、事前に起動して動作確認することが望ましい。
オートスケールは、ローカル・ロードバランサーに対してのみ連携できる。一方、NetScalerの場合は、振り分け対象を追加するなどの仕掛けを別途作成する必要がある。
参考資料
1.2.2 設定スクリプトの自動実行
1.5.1 仮想サーバーのOSバックアップを取るには?
3.3.1 ローカル・ロードバランサーを使うには?
3.7 オートスケールを利用するには?
NetScalerとAutoScaleを連動させるために必要なAPIのリンク
nsnitro 1.0.31 A simple library to control Citrix Netscaler 9.2+ with NITRO API https://pypi.python.org/pypi/nsnitro
SoftLayer 3.3.1 A library for SoftLayer's API https://pypi.python.org/pypi/SoftLayer