BalanceNG:シンプルで軽量な負荷分散システムLinux Hacks

Linuxネットワーク向けの負荷分散ソフトウェアとしてはLinux Virtual Serverが最も有名だが、また別の選択肢としてBalanceNGがある。BalanceNGはシンプルで軽量なユーティリティであり、組織によってはより優れた選択肢にもなり得る。

» 2007年04月11日 08時00分 公開
[Anze-Vidmar,Open Tech Press]
SourceForge.JP Magazine

 負荷分散ソフトウェアとは、複数のハードウェアデバイスを用いて作業を分散させ、その結果として速度的なパフォーマンスを向上させるためのものだ。Linuxネットワーク向けの負荷分散ソフトウェアとしてはLinux Virtual Serverが最も有名だが、また別の選択肢としてBalanceNGがある。BalanceNGはシンプルで軽量なユーティリティであり、組織によってはより優れた選択肢にもなり得る。

 BalanceNG (Balance Next Generation)は、独自のネットワークスタックを持ちLinux上でもSolaris上でも動くユーザーモードの負荷分散ソフトウェアだ。負荷分散に必要となる処理はほとんどすべてBalanceNGによって行なわれ、オペレーティングシステムに依存しない(オペレーティングシステムは物理ネットワークインタフェースにアクセスするためだけに使用される)。

 BalanceNGではラウンドロビン/ランダム/ハッシュ/最小リソースといったさまざまな負荷分散手法がサポートされている。BalanceNGを使用するためには、仮想サーバの役割を果たすマシン上で「負荷分散サービス」を実行し、クラスターを構成する各ノード(BalanceNG用語で「ターゲット」と呼ばれている)上で「負荷分散エージェント」を実行する必要がある。必要となるディスク空間は、負荷分散サービスについては約400Kバイト、負荷分散エージェントについては約100Kバイトだ。また生成するネットワーク(UDP)トラフィックも最小限に抑えられている。なお、BalanceNGで負荷分散を行うことができるのはウェブサーバ(HTTP)だけではない。FTP、SQL、POP3、IMAP、SMTPなどほとんどどんな種類のサービスも対象とすることができる。

 BalanceNGはオープンソースではないものの、仮想サーバ1台/ターゲット2台の環境については無料で利用できる(ベーシックライセンス)。この環境はSOHOなどにおいては十分だと思われるが、より大規模な環境での使用を希望する場合にはベーシックライセンスを有料でアップグレードすることができ、仮想サーバ512台/ターゲット1024台までの環境で利用できる。

BalanceNGの入手とインストール

 それではまず、BalanceNGをダウンロードしよう。ダウンロードするとtarファイルの中にbngという実行ファイルがあるので、このファイルを/etc/init.dディレクトリにコピーし、コマンドラインで「/etc/init.d/bng start」として実行を開始する。BalanceNGサーバ(仮想サーバ)のために起動する必要のあるファイルはこれだけだ。一方もう一つの実行ファイルであるbngagentは、各ターゲットサーバ上にインストールする。負荷分散サービス(bng)や負荷分散エージェント(bngagent)を自動的に起動するようにしたい場合には、ブート時に毎回起動されるように/etc/rc.localかどこかに書いておこう。

 BalanceNGには負荷分散のための設定方法が2種類ある。一つはBalanceNGのデフォルトの設定ファイルである/etc/bng.confを編集するという標準的な方法で、もう一つはコマンドラインで「/etc/init.d/bng control」と実行してbngコンソールを起動し、これを使用してインタラクティブに負荷分散に関する設定を行うという方法だ。なおbngコンソールの機能についてはBalanceNGのUser and Reference Manual(ユーザー/リファレンスマニュアル)に詳しい説明がある。

 今回わたしは既存のネットワーク環境にBalanceNGを統合しなければならなかったため、簡単なシステム構成を選ぶことにした。わたしが使用したのは「シングルレッグ(single-legged)」構成だが、BalanceNGのサイトで紹介されているようにそのほかにも幾つかのシステム構成方法が考えられる。紹介されている例を選んで/etc/bng.confファイル内にコピーし、自分のネットワーク環境に合わせて編集すると良いだろう。

 bngサービスは、設定ファイルに間違い(ネットワーク環境の誤設定)があっても問題なく起動する。エラーメッセージは/var/log/syslogを見ても良いし、bngコンソールで確認することもできる。bngコンソールでは以下のように、BalanceNGの起動中に起こったエラーがすべて表示される。

BalanceNG: connected to PID 872

*WARNING*: Errors in /etc/bng.conf, type "show log" for details


 ここで「show log」と入力すると、問題を詳しく見ることができる:

2007/03/08 00:57:59 3 ERROR /etc/bng.conf line 14: gateway address not directly reachable

2007/03/08 00:58:00 3 ERROR /etc/bng.conf line 22: WARNING: server 1 has no matching network


 このBalanceNGのエラー報告機能では、エラーがある行番号とうまく行かなかった内容とが表示される。前記の場合、ゲートウェイのアドレスに誤設定があったことが分かる。間違いを修正するには「Ctrl-D」を入力してbngコンソールから抜け、/etc/bng.confファイルを修正し、サービスを再起動する。そしてほかにもエラーがないかどうかを確認するために再びbngコンソールで確認する。エラーがなければ負荷分散のための設定が正しくできていることになり、以下のようなログが表示されるはずだ。

2007/03/08 00:57:47 6 BalanceNG 1.795: starting background operation

2007/03/08 00:57:47 6 loading /etc/bng.conf

2007/03/08 00:57:47 6 configuration taken Wed Mar 7 00:57:08 2007

2007/03/08 00:57:47 6 configuration saved by BalanceNG 1.795 (created 2007/02/26)

2007/03/08 00:57:48 6 /etc/bng.conf successfully loaded


 次に、各ターゲットサーバ上のコマンドラインで「bngagent 439」としてbngagentを実行する。ここで指定した439はBalanceNGのデフォルトのUDPポート番号だが、UDPで通信を行うために利用可能なポート番号をどれでも選ぶことができる。bngagentは小さなUDPサーバプログラムで、BalanceNGサーバとの通信を行う。bngagentのソースコードは公開されているため、配布物に入っているバイナリファイルでうまく行かなかった場合には、bngagentを自分でコンパイルすることもできる。

 なお仮想サーバが負荷分散をちゃんと行なっているかどうかを確認するには、仮想サーバのIPアドレス(わたしの場合192.168.1.100)をWebブラウザで入力してみれば良い。そうするとターゲットサーバでホストされている通常のウェブページが表示されるはずだ。そして次に各ターゲットサーバにほかのマシンから接続して、各ターゲットサーバのApacheのログを見てみよう。すると仮想サーバが、受け付けたリクエストを各ターゲットサーバに平等に振り分けていることが分かるはずだ。もしそうなっていなければ設定を確認して誤動作の原因を解明しよう。

 例からも分かるように、BalanceNGの設定ファイルはシンプルで、適度に構造化されていて、文書化もきちんとされている。また負荷分散を行うために何らかのコマンドラインユーティリティを使っての作業などを行う必要はなく、設定はすべて/etc/bng.confファイルを編集することで行える。

 今回わたしがBalanceNGをダウンロードしてインストールし、シングルレッグ(ターゲットからの直接応答)アプリケーションとして設定し終わるまでには、たった20分しかかからなかった。

 BalanceNGには警告通知スクリプトがついているため、ノードが落ちた場合、直ちに通知が電子メールで管理者に届く。あるいはSNMPトラップを使用してネットワーク管理システムに対しメッセージを送ることもできる。

 なおBalanceNGでは、Professional Software Maintenance and Support(プロフェッショナルソフトウェア管理/サポート)サービスに加えて、1年間のメールサポートが無料で提供されている。

 BalanceNGは使い始めも使いこなしも簡単な、信頼性の高い負荷分散アプリケーションだ。BalanceNGは負荷分散を申し分なく行ない、家庭からエンタープライズに至るまでさまざまな環境での使用に適している。

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ