はてなでの仮想化技術のあれこれ

id:stanakaによる、はてなの仮想化について

はてな

  • 月間ユニークユーザ:1000万 / 月間PV:10億
  • サーバ台数:約500台(仮想化して890台)

仮想化とは?

はてなの仮想化

  • Xenを採用
    • CentOS 5.2 / Xen 3.0.3(CentOS標準バージョン)
    • 準仮想化を使用し、完全仮想化はしていない
      • 完全仮想化はオーバヘッド大きい(そもそも基本的にはLinuxなので、完全仮想化は不要)
  • ストレージはローカルHDD/SSDを採用し、Linux Volume Managerを使用
    • ネットワークストレージは、高価なので使っていない
    • ネットブート(PXEブート、aufsでイメージ展開)は試している(テスト環境で稼働中)

はてなの仮想化の歴史

  • 2007年前半
    • CentOS 5系への移行に伴い、Xenを試し始める
  • 2007年夏
    • スモールスタート
    • 管理ツールの開発を始める
  • 2009年
    • 全面的に採用、安定稼働

仮想化を行う上でのポイント

  • サーバを同居させることで、H/Wリソースの利用率向上を考える
    • 空リソース:CPU -> Webサーバを同居
    • 空リソース:I/O -> DBサーバを同居
    • 空リソース:MEM -> Cacheサーバを同居
  • 同じ傾向、負荷の高い用途同士は、同居させない

はてなの仮想化の運用

  • 新規仮想サーバ作成は、スクリプト一発で
  • 独自開発の管理ツール
    • サーバ構成(親子関係)や負荷状況を表示
    • Railsで開発したらしい
  • xentop
  • ライブマイグレーションは利用していないので、仮想サーバの移動やコピーはddで(結構強引だけど、上手く動いている)
  • MyDNSを利用し、管理ツールと同期
  • monitによる、DomUの強制再起動
  • 運用でのポイント
    • DomUが迷子にならないようにする(親子関係の把握)
    • サーバの単機能化(1OS1機能)
    • 自動設定ツールやpuppetによる仮想サーバの統一化、標準化