仮想化技術をテーマとするオペレーターズ・グループVIOPS主催の技術者向けイベント「VIOPS-3 Workshop」が2009年5月29日に開催された。「Webサービスが求める仮想化技術」と題したセッションでは,はてな執行役員の田中慎司氏とライブドアCTOの池邉智洋氏が自社インフラでの仮想化技術の適用事例を披露。サーバー/ストレージ仮想化環境の導入に伴って複雑化する要素を,はてなはDNSによる物理/仮想サーバーの関連付け,ライブドアは分散型ストレージ仮想化ソフトの自作で解消しているという。

仮想マシンとハイパーバイザの親子関係をDNSで管理

 はてなは現在,「はてなブックマーク」や「うごメモはてな」などのWebサービスを展開。「月間で億単位のページ・ビューの多くは大量の単純なリクエスト。これをさばくインフラは,スケーラビリティ,コスト・パフォーマンス,高可用性という三つの指標を満たしつつコストを抑える必要がある」(田中氏)ため,2009年5月時点でXenによる1000個の仮想サーバーを,500台の物理サーバーで運用中だ(写真1)。

 サーバーの自作で知られるはてな(関連記事写真2)だが,管理ツールも小回りのきく自作ツールが中心。新規仮想サーバーの生成や手動マイグレーションを実施するスクリプト,物理サーバーと仮想サーバーの関係,ラックと物理/仮想サーバーの関係を把握するダッシュボードなどを用意している。なおXenは動的に仮想マシンを別の物理サーバーに移動させるライブ・マイグレーション機能を備えているが「失敗することもあると聞いているので利用していない」(田中氏)という。

 特徴的なのは,「DNS連携を活用して物理サーバーと仮想サーバーの親子関係を管理している」(田中氏)こと。ハイパーバイザのホスト名を仮想マシンのホスト名のサブドメインとして定義することで,物理サーバーのハイパーバイザと仮想マシンの関係を把握できるという(写真3)。同種の管理は仮想環境に対応した統合管理ツールなどで実現できるが,コマンドラインでの管理では親子関係を直感的に把握しやすいホスト名が効率的というわけだ。

写真1●仮想サーバー1000個を物理サーバー500台で運用
写真1●仮想サーバー1000個を物理サーバー500台で運用
[画像のクリックで拡大表示]
写真2●サーバーは自作の1Uハーフ・ラックマウント
写真2●サーバーは自作の1Uハーフ・ラックマウント
[画像のクリックで拡大表示]
写真3●ハイパーバイザのホスト名を仮想マシンのホスト名のサブドメインとして定義
写真3●ハイパーバイザのホスト名を仮想マシンのホスト名のサブドメインとして定義
[画像のクリックで拡大表示]

シンプルでスケーラブルな分散ストレージを自社開発したライブドア

 一方ライブドア執行役CTOの池邉智洋氏は,同社のブログや写真投稿サービスなどのインフラで利用中のストレージ仮想化ソフトを自社開発した事例を紹介した。ライブドアのサービス群が求める要件が「いかに安価に容量を追加できるか。過剰な機能と信頼性は不要」(池邉氏)と判断。メーカー製のネットワーク・ストレージの利用を止め,「ファイルのパスがそのままURLになるため,ファイル・システムのパスをURLに変換しなくて済む」HTTPで入出力する分散型仮想ストレージの開発に踏み切ったのだという(写真4)。

 設計思想は「複数ノード間の一貫性はCAP定理に基づいて遅延を妥協し,スケーラビリティと読み出しの速さにこだわった。一方で書き込みはそこそこの速度でよく,認証とアクセス制御はアプリケーションで実装するので不要」(池邉氏)というもの。HTTPサーバーはApache,データベースはMySQLとmemcached,メッセージ・キューイングにそれぞれApache ActiveMQ,Q4Mを組み合わせて実装した。ハードウエアは500Gバイトから1Tバイトのストレージを搭載した汎用サーバーだ。1ファイル当たり3個程度のレプリカを複数ノードに分散保持し,非同期に一貫性を保つ。

 世の中には分散ファイル・システムとして米Six Apartの「MogileFS」,産総研や東京大学らの「Haystack」といったオープンソース・ソフトウエア,さらにはAmazon S3が存在していた。しかし「ソースコードを完全に理解しなければユーザー・データの保管に使うわけにはいかない。Amazon S3の採用は,データセンターを運営する企業としては選べない選択肢だった」(池邉氏)。

写真4●ライブドアが開発したストレージ仮想化ソフトの設計思想
写真4●ライブドアが開発したストレージ仮想化ソフトの設計思想
写真4●ライブドアが開発したストレージ仮想化ソフトの設計思想
[画像のクリックで拡大表示]