ロードバランサとサーバクローンで簡単スケールアウト¶
[更新: 2015年07月22日]
さくらのクラウドでは、既存のサーバから同じ仕様のサーバを複製できるクローン機能や、同じ内容のディスクを複製するコピー機能が簡単に利用できます。今回は、急激にサーバへのアクセスが増加しサーバを追加するケースを例に、「ロードバランサ」アプライアンスと「クローン機能」を組み合わせたスケールアウトの手順を解説します。
1. 今回の構成¶
今回は、初期状態として以下の構成を想定します。
「スイッチ+ルータ」を作成し、その配下に1台のロードバランサと1台のウェブサーバが接続されています。
※「スイッチ+ルータ」の作成やネットワーク構成の操作方法については、公式マニュアルやさくらのナレッジ「 ルータ+スイッチを使ったネットワークを構築してみよう 」が参考になります。
アクセスが閑散としている場合はこの構成で運用しますが、アクセスの増大により1台のウェブサーバでは捌ききれなくなった場合は平行してウェブサーバを追加し、ロードバランサによる負荷分散を図ります。
このように、同一の性能を持つ機器を追加して負荷を分散させることを「スケールアウト」と呼びます。さくらのクラウドでは仮想的にスイッチやサーバを組み合わせてネットワークを作成することができるので、スケールアウトさせる場合も素早く構成が可能であり、物理環境のようにあらかじめ機材を用意する必要もありません。スケールアウトによる負荷分散は、クラウドのメリットをより活用することができる手法と言えます。
2. ロードバランサの設定¶
最初にロードバランサの設定を行います。作成したロードバランサは、上部メニュー「アプライアンス」をクリックし、左側のメニューから「ロードバランサ」を選択します。ここで作成済みのロードバランサの一覧が表示されるので、該当のロードバランサ行をダブルクリックします。
ロードバランサの情報画面が表示されるので、上部の「VIP設定」タブをクリックします。VIPは外部からの接続を受け持つ仮想IPアドレス(Virtual IP address)のことで、このIPアドレスへの接続がロードバランサにより配下の複数のサーバに分散されます。
初期状態では何も設定されていないので、右下の「追加」ボタンをクリックし、VIPの追加作業を始めます。
設定ダイアログボックスが表示されるので、ここでVIPを設定します。今回の構成例では以下の値を入力しました。
VIPアドレス | 「ルータ+スイッチ」で払い出されたIPアドレスのうち1個をロードバランサが受け持つ仮想IPアドレスに割り当て、そのIPアドレスを入力します。 |
---|---|
ポート番号 | 仮想IPアドレスで着信を受けるポート番号を設定します。今回はロードバランシング先はウェブサーバのため「80」を設定します。 |
チェック間隔 | 実サーバの死活監視を実行する間隔を秒数で設定します。今回はデフォルトの「10」(10秒)を設定しました。 |
設定が完了すると、VIP設定のリストに今回設定したVIP設定が追加されます。続いて、VIPに着信した接続の振り分け先となる実サーバを設定します。VIPごとにタブが追加されるので、今回設定したVIPのタブをクリックします。
この画面では設定済みの実サーバのリストが表示されますが、こちらも初期状態ではひとつも設定されていないので「追加」ボタンをクリックして追加を行います。
設定ダイアログボックスが表示されるので、ここで実サーバの情報を設定します。今回の構成例では以下の値を入力しました。
IPアドレス | ロードバランシング先のサーバ(今回はルータ+スイッチ配下のウェブサーバ)のIPアドレスを設定します。 |
---|---|
監視方法 | IPアドレス、ポート番号で指定したロードバランシング先サーバの監視方法を設定します。この監視設定で異常のあるサーバは振り分け先から除外されます。今回はウェブサーバなので監視方法に「http」を指定し、監視対象パスとレスポンスコードはそれぞれ「/」と「200」を設定しました。 |
設定が完了すると、VIP設定のリストに今回設定したVIP設定が追加されます。
なお、ロードバランサはコントロールパネルでの一連の設定後に実際のロードバランサに設定を投入する仕組みとなっているので、「反映」ボタンをクリックして設定内容を反映させます(まだ起動していない場合は電源操作メニューより「起動」を選択してください)。
設定完了後、仮想IPアドレスとして設定したIPアドレスに接続すると、実サーバとして登録した1台のウェブサーバからの応答としてウェブページが表示されます。
3. 1台目のウェブサーバの設定¶
さくらのクラウドで提供するロードバランサはDSR方式で動作するため、ロードバランシング先のサーバではループバックアドレスに仮想IPアドレスを設定する必要があります。1台目のウェブサーバでは、クローンにより追加するウェブサーバのテンプレートも兼ねてこの設定を投入しておきます。
※以下の例では、CentOS6系を想定した手順とします。
sysctl.confへの設定追加¶
ループバックアドレスに設定した仮想IPアドレスでARPリクエストに応答しないようにカーネルパラメータを設定します。/etc/sysctl.confファイルに以下の2行の設定を追記します。
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
設定後、”sysctl -p”コマンドで設定を反映します。
lo:0デバイスの作成¶
新たにlo:0デバイスを作成し、仮想IPアドレス(今回の構成例では203.0.113.8)を設定します。/etc/sysconfig/network-scripts/ifcfg-lo:0ファイルを新規に作成し、以下の内容を記載します。
DEVICE=lo:0
IPADDR=仮想IPアドレス
NETMASK=255.255.255.255
設定後、”ifup lo:0″コマンドで設定を反映します。
3. ウェブサーバを追加(スケールアウト)してみる¶
さて、これまでの作業で冒頭の図の通りの最小構成の準備が整いました。ここからはウェブサーバを追加し、スケールアウトを行います。
サーバのクローン¶
クローン機能により、現在は1台のみとなっているウェブサーバをクローンし、2台、3台と増やします。クローンしたいサーバ(ここでは作成済みのウェブサーバ)のサーバ詳細画面を開き、上部にある「クローン」ボタンをクリックします。
クローンボタン押下後は新規サーバ作成時と似た画面が表示されますが、サーバのスペックや接続するディスクのソース、NICの接続先などはクローン元のサーバと同じものがあらかじめ指定されています(もちろん、環境に応じて変更することも可能です)。
ただし、ディスクは同じ内容のものがコピーされるとは言え、ネットワーク設定も同様にコピーされてしまうのでこのまま起動するとIPアドレスが重複したサーバが2台存在してしまうことになります。
そこで、サーバ新規作成時と同様にクローン作成画面でもディスク修正機能が使用できるので、今回は「ルータ+スイッチ」で使用可能なIPアドレス帯から未使用のものを割り当てることにします。もちろん、ホスト名やrootパスワードもクローン元のものから変更することが可能です。
各項目を入力後、「作成」ボタンをクリックし、クローンしたサーバの作成を開始します。
ロードバランサへの実サーバの登録¶
クローンしたサーバを起動し、1台目のサーバと同様にロードバランサに実サーバとして登録します。登録後は「反映」ボタンをクリックし、ロードバランサへの設定内容の反映を行います。しばらくして、2台目のサーバのステータス欄も「UP」状態になれば成功です。
ロードバランシングの確認¶
では早速、仮想IPアドレス宛てにウェブブラウザからアクセスし、ロードバランシングされることを確認してみましょう。
ここでは実際に応答している実サーバがどちらか分かるように、以下のようなCGIスクリプトを公開ディレクトリ以下に設置しました(あらかじめ公開ディレクトリ内のCGIスクリプト実行を許可しておく必要があります)。
#!/bin/sh
echo “Content-Type: text/html”
echo
echo \<h1\>`hostname`\</h1\>
このスクリプトにアクセスするたびに表示されるホスト名(web01、web02)が変化し、ロードバランシングされていることが確認できました。あとは同様にクローン作成・ロードバランサへの実サーバ登録の操作でどんどんスケールアルトすることが可能になります。