はじめに
OpenBlockS 600の最大の特長は堅牢性にあります。筐体のみで排熱するよう設計されており、ファンなどの可動部品は搭載していません。CPUをはじめすべての部品を1枚の基板に実装した単純な構造で、故障の要因を徹底的に排除しています。このように故障しにくいハードウェアこそ、ロードバランサに向いていると言えましょう。
本記事では、OpenBlockS 600とオープンソースソフトウェア(OSS)を利用した、堅牢で安価なロードバランサの構築をめざします。前編では、OpenBlockS 600へのDebianのインストールから、Webサーバとクライアントの準備までを説明をします。後編では、LVS(Linux VirtualServer)の設定と動作確認、性能測定をする予定です。
LVS
LVSは、Linuxで動いているロードバランサとサーバの集まりです。サービスの受け手側からは、1台のサーバに見えます。このサーバを仮想サーバ、仮想サーバ内のサーバをリアルサーバと呼びます。
ネットワーク構成図(図1)をご覧ください。3台のリアルサーバrealserver1、realserver2、realserver3とロードバランサobs600(OpenBlockS 600)で仮想サーバとなっています。クライアントclientはobs600の仮想IPアドレス(192.168.253.120)へ接続して、サービスを受けます。
ロードバランサobs600は、クライアントからの要求をリアルサーバに振り分けます。つまり、リアルサーバの負荷分散をしています。また、ダウンしたリアルサーバからは応答しないようにします。リアルサーバがすべてダウンしない限り、サービスを受けることができます。
これからWebサーバのLVSをIPVSとKeepalivedで作ってみましょう。
- IPVS
- IPVS(IP Virtual Server)はLinuxカーネルに実装されたロードバランサです。OpenBlockS 600のカーネルはIPVSを有効にしているので、カーネルの再構築は必要ありません。IPVSを使うためには、ipvsadmユーティリティが必要です。
- Keepalived
- Keepalivedはリアルサーバがダウンしていないか監視します。IPVSと連携して、ダウンしたリアルサーバを除いた他のリアルサーバでサービスするようにします。
OpenBlockS 600にDebianをインストール
それでは、ネットワーク構成図(図1)中のホストを作っていきましょう。まずはOpenBlockS 600から始めます。
OpenBlockS 600の標準OSはSSD/Linuxですが、その他のOSとしてDebian、Fedora、Ubuntuで動作させることもできます。ここではDebianをインストールします。
コンパクトフラッシュの用意
Debianはコンパクトフラッシュ(CF)にインストールします。標準添付のCFを利用するか、専用オプションのCFを用意してください。標準添付のCFを使う場合はCF上のデータが消えますので、バックアップをとることをお勧めします。
Webインターフェースの[システム]-[メンテナンス]-[CF内データのバックアップ]からバックアップできます。
ファイルのダウンロード
必要なファイル(表1)をぷらっとホームのWebページからダウンロードしてください。
USBメモリの準備
容量128Mバイト以上のUSBメモリを用意してください。
フォーマット
ファイルシステムはFAT、ext3、ext2のいずれかでフォーマットしてください(図2はext3の例)。
ボリュームラベル
ボリュームラベルを「MSF」に設定してください。WindowsではUSBメモリのプロパティで設定できます(図3はext3の例)。
ファイルのコピー
USBメモリのルートディレクトリにディレクトリ「msf」を作成します。ディレクトリ「msf」に、上でダウンロードしたファイル(表1)をコピーしてださい。
表1 Debianのインストールに必要なファイル
ファイル | ファイル名 |
OS イメージ(Debian) | lenny-powerpc-obs600-20100119-00.tar.gz |
カーネル | uImage.initrd-cfboot |
カーネルモジュール | kern.tgz |
半自動インストール用スクリプト | msf_init.sh |
シリアル接続
Tera Termやminicomなどの端末エミュレータソフトウェアの動作するホストを用意してください。OpenBlockS 600にシリアル接続します。端末エミュレータの設定値は表2のとおりです。
表2 端末エミュレータの設定値
項目 | 設定値 |
Baud rate | 115,200bps |
Data | 8bit |
Parity | none |
Stop bits | 1bit |
Flow Control | none |
インストールの実行
OpenBlockS 600の電源が切れていることを確認し、USBメモリを挿入します。電源を入れてください。数分して、ステータスインジケータが全色点滅したら、Debianのインストールはおしまいです。OpenBlockS 600の電源を切って、USBメモリを抜いてください。
端末エミュレータの画面にインストール中の様子が出力されていることを確認してください。何も出力されていなかったり、文字化けしている場合には、設定値を確認したり、端末エミュレータを再起動してみましょう。
再起動後の操作
OpenBlockS 600の電源を入れ、ログインプロンプトが表示されたらrootでログインします。パスワードはrootです。カーネルモジュールの依存性リストを更新します(図4)。
カーネルとカーネルモジュールの更新
これでOpenBlockS 600がDebianで動くようになりました。これからはDebianの作法にしたがって、パッケージのインストール、削除、アップデートなどが実行できます。しかしながら、カーネルとカーネルモジュールはぷらっとホームが提供しているもので、Debianのパッケージではありません。
カーネルにセキュリティフィックスなどがあった場合には、ぷらっとホームのページからカーネルとカーネルモジュール(表1)をダウンロードしてください。
カーネル(uImage.initrd-cfboot)をルートディレクトリに置き、カーネルモジュール(kern.tgz)はルートディレクトリで展開して、再起動してください。
OpenBlockS 600へのipvsadmとkeepalivedの導入
一時的なネットワークの設定
Debianのパッケージを取得するために、一時的にインターネットに接続できるよう設定してください。イーサネットインターフェースeth0でDHCPサーバからIPアドレスを取得し、プロキシサーバを設定する例を図5に示します。
Debianの更新
すでにインストールされているパッケージを更新します(図6)。
ipvsadmとkeepalivedパッケージのインストール
ipvsadmとkeepalivedパッケージをインストールします(図7)。keepalivedパッケージをインストールすると、依存性によりipvsadmパッケージもインストールされます。
OpenBlockS 600のネットワーク設定
一時的なネットワークの設定の無効化
上記の一時的なネットワークの設定を無効にしてください。
- /etc/resolv.conf
ファイル/etc/resolv.confを空にします。
- /etc/network/interfaces
イーサネットインターフェースeth0とeth1をdownします(図8)。
ファイル/etc/network/interfacesをリスト1のとおり変更してください。eth0はクライアント側です。eth0:120は仮想IPアドレスです。eth1は仮想サーバ側です。ゲートウェイは設定しません。
イーサネットインターフェースeth0、eth0:120、eth1をupします(図9)。
- /etc/hostname
- ファイル/etc/hostnameにホストobs600を設定します。
IPフォワーディングの有効化
IPフォワーディングを有効にするために、ファイル/etc/sysctl.confのnet.ipv4.ip_forward=1のコメントをはずします(リスト2)。システムに反映するために図10のとおりsysctlコマンドを実行します。
IPフォワーディングが有効か無効か確認するには図11のとおりsysctlコマンドを実行します。変数net.ipv4.ip_forwardの値が1なら有効、0なら無効です。
パケットフィルタの設定をしていないので、OpenBlockS 600は素通しのローカルルータとなっています。LVSが動作するまで、パケットフィルタは設定しないほうがよいでしょう(LVS-mini-HOWTO: 2.4. Test without filter(iptables)rules)。
リアルサーバの構築
リアルサーバを3台用意してください。ここではOSはDebianとします。ホスト名はrealserver1、realserver2、realserver3です。参考までに、リアルサーバのハードウェア仕様を表3に示しました。
表3 ハードウェア仕様
CPU | Intel Core2 Quad Q9300 2.50GHz |
メモリ | 1Gバイト |
イーサネット | 1000Base-T(Intel 82573L) |
ネットワーク設定
リアルサーバのネットワーク設定は表4のとおりです。デフォルトゲートウェイがobs600のeth1のIPアドレスになっていることに注意してください。
表4 リアルサーバのネットワーク設定
ホスト名 | IPアドレス | デフォルトゲートウェイ |
realserver1 | 172.16.14.121/255.255.255.0 | 172.16.14.120 |
realserver2 | 172.16.14.122/255.255.255.0 | 172.16.14.120 |
realserver3 | 172.16.14.123/255.255.255.0 | 172.16.14.120 |
Apacheのインストール
apache2パッケージをインストールします。
クライアントの構築
クライアントを1台用意してください。OSはリアルサーバと同じDebianとします。ホスト名はclientです。ハードウェア仕様はリアルサーバと同じです(表3)。
ネットワーク設定
クライアントのネットワーク設定は表5のとおりです。デフォルトゲートウェイはobs600のeth0のIPアドレスになります。
表5 クライアントのネットワーク設定
ホスト名 | IPアドレス | デフォルトゲートウェイ |
client | 192.168.253.1/255.255.255.0 | 192.168.253.254 |
cURLのインストール
ブラウザの代わりとしてcURLを使います。もちろんブラウザを使ってもかまいません。curlパッケージをインストールします。
ApacheBenchのインストール
Apacheに付属しているベンチマークツールApacheBenchを使います。apache2-utilsパッケージをインストールします。
接続確認
クライアントclientからcurlコマンドでリアルサーバに接続して応答があるか確認してみましょう。
リアルサーバのコンテンツ
リアルサーバのコンテンツは、実運用時には、同じでなければなりません。そうでないと、ロードバランサの振り分け先によって表示されるページが異ってしまいます。この段階では、どのリアルサーバからの応答か区別したいので、別々のコンテンツを用意します。
ドキュメントルートに、ホスト名を記入したファイルindex.htmlを置きました。
cURLでの接続と応答
クライアントclientで図12のとおりcurlコマンドを実行してください。指定したURLのホストのホスト名が表示されれば、ネットワークの設定は正常です。
応答がない場合、obs600のIPフォワーディングが有効になっているか(図11)、リアルサーバのデフォルトゲートウェイがobs600のイーサネットインターフェースeth1に向いているか(図1、表4)、確認してください。
前編のまとめ
前編では、LVSのロードバランサとなるOpenBlockS 600にDebianをインストールする手順を説明をしました。また、リアルサーバとクライアントも用意しました。リアルサーバをWebサーバとして動作させ、クライアントから接続して、応答のあることを確認しました。残るはLVSの設定だけです。
後編では、LVSの設定をして、どのように動作するかを確認し、性能の測定をする予定です。
参考ページ
- The Linux Virtual Server Project
- URL:http://www.linuxvirtualserver.org/
- IPVS Software
- URL:http://www.linuxvirtualserver.org/software/ipvs.html
- Keepalived
- URL:http://www.keepalived.org/
- 他OSのインストール方法(OBS600)
- URL:http://openblocks.plathome.co.jp/support/documentation/other_os.html
- LVSで実現するロードバランサ
- URL:http://lab.klab.org/wiki/LVSで実現するロードバランサ