LVS検証

サーバ単位での冗長化を実現すべく、以前から気になっていたロード・バランスの方法を検討してみる。一般的に考えて、自宅環境で実現可能なロード・バランスは、DNSラウンドロビンかLVSといったところ。専用ハードの導入は当然ながら無理。障害時のホット・スタンバイやダウンしたサーバの自動切り離しを実施したい場合はLVSが現実的である。うちのDNSはmydnsなので動的な変更も難しくはないが、機能の本質を考えてLVSを採用する。いまどきのlinuxであれば特に障壁もなく使えてしまう、というのもLVSを使い易くなった理由の一つである。

早速LVSの構築に入るが、CentOS 5系で必要な作業はipvsadmとkeepalivedのインストール。今回は実績のあるipvsadm-1.24とkeepalived-1.1.13を使用する。この2つの導入については特に何の問題もなく、いつものmake;make installでインストール出来た。ちょっと特殊な点としては、keepalivedに幾つかパッチを当てた。1つはkeepalivedのヘルスチェックを強化するパッチ(keepalived-extcheck.patch)と、もう1つはkeepalivedの設定ファイルをインクルードで別ファイル化できるようにするパッチ(keepalived-include.patch)である(幾つかのサービスを扱う場合、設定ファイルを別ファイルに整理できる方がベター)。

ロードバランスするための環境としてDSRを前提とする。DSRの特徴として戻りパケットをLB通さないで済む、というメリットがあるのも見逃せないが、それよりもサービスからの切り離しを容易に行えるのが採用のポイント。DSRを利用するサーバでは、バーチャルなループバック・インターフェースを使用するので、余計なarpを投げないように設定をする必要がある。実際にラウンドロビンの設定で動きを試したところ、ループバックVIPをダウンさせてもサービスから切り離されなかった事を除いて、あとは期待通りの動作をしてくれた。ループバックVIPの動きについては、よくあるLBとは異なる動きなので気を付ける事。

最後に簡単な負荷試験をしてみた。MySQLサーバ2台(ラウンドロビン)を使って負荷をかけてみたところ、軽く秒間3万クエリーは捌いていた。差し当たって性能面に不安点はなさそうだ。しかし、LVSサーバのリソースをウォッチしていると、リクエスト量に応じてCPUのsysは変動するが、usrは微動だにしない(常にゼロ)。何を以ってLVSサーバの限界点を見極めるかにもよるが、運用上において注意が必要そうだ。総論として、シンプルな使い方をするのであればLVS構築は非常に容易なので、積極的に使用を検討すべきである(但し、運用面で幾つか注意点あり)。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)