社内のサーバ事情

1台のサーバを複数人が気ままに設定する—地獄の始まりです。どこに何があって誰が使っているかなんて把握のしようがありません。手順書を残す? そんな勤勉なことをやるぐらいならもっと抜本的な解決策を講じるべきです。

プログラミングの基本原則、「分割して統治せよ」。サーバも一緒で、用途ごとに適切に分割してやればいい。そこでサーバ仮想化の出番です。

一口にサーバ仮想化といっても様々なプロダクトがあります。下手にVMwareなんとかみたいなのを買ってロックインされたくはありません。自由なソフトウェアであるKVMを使いたいところですが、libvirt経由だとしても台数が増えてくると破綻するのは目に見えています。

そんな悩める微妙な規模のSIerにぴったりなのがGanetiです。これは元々Google社内で開発されていた仮想サーバクラスタ管理ツールで、仮想サーバを実行する複数の物理サーバをまとめて管理できる優れものです。Ganetiを使うと2つの物理サーバでそれぞれLVMボリュームを切り出し、DRBDでレプリケーションした上に仮想マシンを構築できます。ライブマイグレーションもフェイルオーバーも思いのまま、単一障害点がほぼ存在しないという素晴らしいソリューション。基盤となる技術はKVM or Xen、LVM、DRBDとどれも一般的なものです。

一般的な仮想サーバクラスタでは共有ディスク上に仮想マシンのディスク領域を設けますが、これだと共有ディスクが全体のボトルネックとなる可能性が極めて高いです。もちろんディスクが死ぬと全滅するので、SANを冗長化するなどのエンタープライジーな構成を取る必要があります。で、これを実際にやると百万円ぐらいあっという間に飛んでいくという。Ganetiなら安いマシンが数台と追加のNIC、バックエンド用のスイッチがあれば事足ります。

そういうわけで、弊社の基幹サーバクラスタはLenovo ThinkCentre M91pを4台構成で運用しています。ごく普通のデスクトップマシンですが、どうせ束ねて使うので個々の信頼性はあまり重要ではありません。1台あたり12万円以下でCore i7-2600Kプロセッサ、16GB RAM、500GB HDDが積めるんだから大したものです (おまけにIntel AMT付き)。

こうして必要なときに必要なだけ仮想サーバを立てられるようになったのでした。めでたしめでたし。