ラウンドロビン方式のサーバ ロードバランス 負荷分散テスト方法
サーバなどのユーザがアクセスする機器へのアクセス負荷を、同じ機能を持つ複数のサーバ分散し、耐障害性を向上させる機器を、負荷分散装置(Load Balancer)と呼びます。
負荷を分散させることを「ロードバランス」とも呼び、どういった条件(方式)でロードバランスを行うか、をロードバランサーに設定する必要がります。
今回はその方式の1つで、比較的メジャーでかつ構築スキルや費用面で見て導入難易度の低い「ラウンドロビン方式」の仕組みとテスト方法を紹介します。
ロードバランス 負荷分散とは?
何かしらのサーバとしてユーザから1点にアクセスを受ける役割を持たせた機器は、アクセスするユーザの数が多いと動作が不安定になることや、アクセスができない、またはサーバーがダウンしてしまう。といったことが発生してしまいます。
アクセスが集中した際の対策として、同じ機能を持ったサーバを複数台用意し、文字通り負荷を分散させることをロードバランスと呼びます。
複数台のサーバと、ロードバランスを行うことができる装置を導入する必要があるため、サーバ1台構成と比較すると、動作時の費用は高くなります。
耐障害性を向上させることを考慮した設計ということですので、停止することで大きな損益が発生してしまうサーバ(Webサーバやアプリケーションサーバなど)に使用される場面が多いです。
負荷分散方式の種類
サーバへの負荷を分散させる仕組みとして、何を定義として分散させるか、という部分を負荷分散装置(ロードバランサー)に設定します。
各メーカの製品によって行うことができる方法は様々ですが、一般的な負荷の振り分け方式としてどのような種類があるかを下記で紹介します。
ラウンドロビン方式
本ページの最後では、この方式で稼働させたロードバランサーの負荷分散テストの方法を紹介しています。
ラウンドロビン方式は、サーバーのCPUなどの実際の負荷を見て分散する仕組みではなく、クライアントは負荷分散装置の仮想IPアドレスにアクセスを行い、その通をサーバが持つIPへ振り分けを行うというシンプルな仕組みです。
例えば[クライアントA]がWebサーバ(負荷分散装置の仮想IPアドレス)にアクセスをすると、[サーバ1]へ割り振られ、[クライアントB]がアクセスをすると[サーバ2]へ、[クライアントC]がアクセスをすると[サーバ1]へ、といったように均等に割り振られます。
負荷分散装置とサーバ間の通信が途切れると、途切れたサーバへは割り振らないなどの融通を自動で利かせることも可能なため、サーバのメンテナンスを行う際も便利な方式です。
比重(レシオ値)による分散
ルーティングのメトリック値のようなイメージで、あらかじめサーバごとに比重(レシオ値)と呼ばれる値を設定します。その値にお維持手アクセスするサーバを振り分けます。
優先度による分散
こちらもあらかじめサーバに優先度を設定し、その優先度によって振り分けを行います。
優先度を高く設定したサーバから順に振り分けられ、接続コネクション数の上限などを超過した場合に次に優先度高いサーバへと振り分けられます。優先度が同じサーバが存在する場合はラウンドロビン方式によって振り分けられます。
レスポンス時間による分散
イメージが付きやすいかと思いますが、負荷分散装置から見て最もレスポンス時間が早いサーバへ振り分けを行います。
レスポンスによって分散することで負荷を均等化しますが、レスポンス計測を行う際と実際にクライアントが通信を行う際で差が生じることもあるため、完全に均等に分散できるとは言い切れません。
コネクション数による分散
レスポンス時間による振り分けと似たような方式で、最もコネクション数が少ないサーバへ振り分けを行います。しかしコネクション数でしか判断していないため、クライアントが大きなデータの通信を行ってた場合などがあれば、完全に分散はできていないこととなります。
実際のサーバ負荷による分散
各サーバのCPU負荷やIO負荷、ディスク負荷などの状況を負荷分散装置が収集することにより、負荷状況をもとに負荷が最小のサーバを判別し割り振りを行います。
負荷の収集には各サーバに負荷計測を行うソフトウェアの導入が必要となります。
ラウンドロビン方式の負荷分散テスト方法
ラウンドロビン設定後、実際に負荷分散が行えているか確認する必要がありが、実際の本番サーバでのテストを行うことができない際に、比較的簡単に行えるテスト方法を2つ紹介します。
構成は下記の通りでテストを行います。
負荷分散装置(ロードバランサー):仮想IP[10.1.1.1] https、httpの通信のみ分散対象 Webサーバ-A IP[10.1.1.2] Webサーバ-B IP[10.1.1.3] クライアントPC-A IP[10.1.1.10] クライアントPC-B IP[10.1.1.11]
ネットワーク機器を使用した分散テスト方法
まずはhppt通信などでアクセスすることができ、GUIでの操作可能なネットワーク機器を使用した分散テストです。
Cisco製やAruba製のネットワーク機器や家庭用ルータなどはhppt通信で画面にアクセスすることが可能なものが多いです。下記がイメージ画像です。
ネットワーク機器にはIPアドレスの設定のみで、機器の種類もhpptなどでGUI接続可能であればルータ、スイッチ問わずテスト可能です。
ラウンドロビンが正常に設定できていると判断する目標値は「クライアントPC-Aで[10.1.1.1]にアクセスするとサーバ-Aにアクセスされ、クライアントPC-Bでも同じように[10.1.1.1]にアクセスすると、こちらはサーバ-Bにアクセスされる」という内容でテストを行います。
まず上記画像のような構成が完成したら、Pingにて各サーバ当宛てに疎通確認を行います。
今回の場合、ラウンドロビン方式にて分散する通信はhppt、httpsのポート番号80と443のみとしているため、pingはクライアントPCからどちらのサーバのIPアドレス宛にも行うことができます。
client PC-A(sauceIP 10.1.1.10)# ping 10.1.1.1 ---応答あり client PC-A(sauceIP 10.1.1.10)# ping 10.1.1.2 ---応答あり client PC-B(sauceIP 10.1.1.11)# ping 10.1.1.1 ---応答あり client PC-B(sauceIP 10.1.1.11)# ping 10.1.1.2 ---応答あり
疎通確認が問題なければ、ラウンドロビンのテストを開始します。
まず、クライアントPC-Aのブラウザより[http ://10.1.1.1]宛にアクセスします。
サーバAとしているネットワーク機器のログイン画面が表示されれば、ロードバランサーがリダイレクトしているということですので、OKです。
今回の検証ではCiscoのL2スイッチを使用しており、上記画面はCisco Catalyst2960シリーズのログイン画面です。実際にログインを行うとサーバA(10.1.1.2)とした機器にログイン可能です。
次に、クライアントPC-Bのブラウザより、同じように[http ://10.1.1.1]宛にアクセスします。
ラウンドロビンが正常に動作していれば、先ほどのクライアントPC-AがサーバAにアクセスしているので、クライアントPC-Bは、サーバB(10.1.1.3)にリダイレクトされ、ログイン画面が表示されればOKです。
フリーソフトを使用した分散テスト
httpなどブラウザよりアクセス可能なネットワーク機器がない場合はこちらのフリーソフト[BlackJumboDog]を使用し、分散テストを行うことが可能です。
BlackJumboDogはフリーソフトで、PCをDHCPサーバやWebサーバとして使用することができます。
PCをDHCPサーバとして機能させる際の使用方法はこちらで解説しています。
サーバAとサーバBとするPCにソフトをインストールし下記画像のように接続します。
こちらも先ほどのネットワーク機器の場合と同じように、まずはPingにて疎通確認を行い通信が可能なことを確認します。サーバA,BとしたPCへアクセスするにはWindowsFirewallの無効化や、セキュリティソフトの無効化などが必要な場合もあります。
※Windwosファイアウォールなどセキュリティソフトを検証テストために無効にした場合、最後に有効に戻すことを忘れずに
BlackJumboDogを使用しWebサーバを起動
BlackJumboDogを使用したWebサーバの起動方法を解説します。
まず、サーバAとするPCにてWordを起動し適当な分を入力しします。
サーバAであることが一目でわかるような文章のほうが望ましいです。
次に、このファイルを保存しますが、[名前を付けて保存]より、[Webページ.html]を選択し任意の場所に保存します。今回は[ドキュメント]内に[WebServer1]という名前のフォルダを新規作成し、保存しました。(※ファイル名はindex.htmlでもOKです)
そしてBlackJumboDogを起動し、Webサーバの設定を行います。
ソフトを起動し、上部メニュータブの[オプション]を選択、[Webサーバ]より[Webの地下と削除]を選択します。
ホスト名の欄に任意の名前を入力し、[追加]を選択。httpsを使用する場合は証明書の場所を選択します。
設定が完了すると、[Webサーバ]の項目に今回作成したWebサーバが表示されるので選択し編集を行います。
デフォルトではWebサーバの使用がOFFとなっているので、[Webサーバを使用する]にチェックを入れ、画面真ん中あたりの[ドキュメントのルートディレクトリ]の[参照]をクリックし、先ほどWordで作成したhtmlファイルを格納しているフォルダを選択します。
最後に、デフォルトで適応されているACLを解除します。
[指定したアドレスからのアクセスのみを]禁止するにチェックを入れ完了となります。
あとはサーバBにもAと同じようにWebサーバを立ち上げ、クライアントPC-BからはサーバB[10.1.1.3]へリダイレクトされれば正常にラウンドロビンが動作しているといえます