33
はてなでの仮想化技術の使い方 はてな 田中 慎司 stanaka @ hatena.ne.jp

How to use Virtualization Technology in Hatena

Embed Size (px)

Citation preview

Page 1: How to use Virtualization Technology in Hatena

はてなでの仮想化技術の使い方

はてな 田中 慎司

stanaka @ hatena.ne.jp

Page 2: How to use Virtualization Technology in Hatena

アジェンダ

� はてなの紹介

� 仮想化技術

� Xen

� はてなでの取り組み

� Xenの利用ポリシー

� Xenの運用

� Xenのデメリット

� 今後の構想

Page 3: How to use Virtualization Technology in Hatena

はてなの紹介

� 2001年 創業

� 人力検索はてな

� 質問をすると人が答えてくれる

2001年当時 現在

Page 4: How to use Virtualization Technology in Hatena

はてなの紹介

� 歴史� 2001年 有限会社はてな創業 京都 人力検索サイトはてな

� 2002年 はてなアンテナ

� 2003年 はてなダイアリー

� 2004年 東京進出

� 2005年 はてなブックマーク

� 2006年 シリコンバレー

� 2007年 はてなスター はてなハイク

� 2008年 京都移転

� はてなブックマークリニューアル

� うごメモはてな

Page 5: How to use Virtualization Technology in Hatena

はてなのサービス群

Page 6: How to use Virtualization Technology in Hatena

仮想化技術

� ハードウェアを抽象化し、複数のOSが動作できるようにする

� Xen, VMware, QEMU, UML, KVM, OpenVZなど

� 古くは..

� メインフレームの技術

� Linux chroot, FreeBSD jail

Page 7: How to use Virtualization Technology in Hatena

仮想化技術のメリット

� 可用性の向上� 動作中の仮想マシンをほぼ瞬時に別ハードウェアに移動することができるため、ハードウェアのメンテナンスやアップグレードがサービスを停止せずに行える。

� 柔軟性の向上� 仮想マシン間でCPUやメモリなどの資源配分を指定することで、ニーズに応じて適切な資源を無駄なく割り当て活用できる。

� 運用コストの低下� サーバ群において、他のサーバに環境を構築するのが容易である。

� セキュリティの向上� 仮想マシン環境は互いに隔離されており、ある仮想マシンで動作する有害なソフトウェアがほかの環境や仮想マシンモニタに悪影響を与えることはできない。

出典: Wikipedia

Page 8: How to use Virtualization Technology in Hatena

はてなでの仮想化

� Xen

Page 9: How to use Virtualization Technology in Hatena

Xen

� もともとはケンブリッジ大学の研究プロジェクト

� XenSource, Inc

� Citrix Systemsが買収 2007.10.25

Page 10: How to use Virtualization Technology in Hatena

Xenにおける仮想化のモデル

� 準仮想化(ParaVirtualization)� 仮想的なハードウェアを再定義するため、仮想ハードウェアは、操作をするためにはハイパーバイザコールを呼び出す

� エミュレーションのオーバーヘッドを最小限に抑えられる

� OSをXen仮想ハードウェア上に移植することが必要

� 完全仮想化(FullVirtualization)� 実ハードウェア用のOSがそのまま動作

� WindowsなどのOSも動作

� エミュレーションのためのコストが大きくなる

� デバイスドライバのみ準仮想化とすることも可能

Page 11: How to use Virtualization Technology in Hatena

� サーバ 500台 → 仮想化して890台

はてなのサーバ台数

Page 12: How to use Virtualization Technology in Hatena

はてなのシステムの全体像と解説

� 三層構造

� リバースプロキシ

� アプリケーションサーバ

� データベース/ファイルサーバ

Page 13: How to use Virtualization Technology in Hatena

バックエンドシステムの三層構造

proxy proxy

LVS

LVS

mod_perl mod_perl mod_perl mod_perl

LVS

MySQL MySQL

LVS

LVS

LVS

リバースプロキシリバースプロキシリバースプロキシリバースプロキシ

アプリケーションサーバアプリケーションサーバアプリケーションサーバアプリケーションサーバ

データベースサーバデータベースサーバデータベースサーバデータベースサーバ

ロードバランサロードバランサロードバランサロードバランサ

Page 14: How to use Virtualization Technology in Hatena

全体像

� 三層構造がサービス毎に

� サーバー台数の割合

� Web : DB = 4 : 6 ~ 6 : 4

� 全体の 6 ~ 7 割が Web or DB

� それ以外

� ネットワーク関連、ファイルサーバ、管理用、メール、分散ストレージサーバなど

� 非同期システムが増量中

� MapReduce計算クラスタなど

Page 15: How to use Virtualization Technology in Hatena

仮想化サーバの構築ポリシー

� ハードウェアリソースの利用率の向上

� 空いているリソースを主に利用するDomUを投入

� CPUが空いている → ウェブサーバ

� IOが空いている → DBサーバ

� メモリが空いている → キャッシュサーバ

� 同居を避ける組み合わせ

� 同じ傾向、かつ、負荷の高い用途同士� 別サーバのウェブサーバ同士など..

Page 16: How to use Virtualization Technology in Hatena

ハードウェア

仮想化サーバ

� ウェブサーバ

ウェブサーバ

メモリ量: 4GBDom0: 0.5GBウェブサーバ 3.5GB

ハードウェア

ウェブサーバ

メモリ量: 8GBDom0: 0.5GBウェブサーバ 5.5GBキャッシュサーバ 2GB

キャッシュサーバ主にCPU-bound

主にメモリを消費CPUは消費しない

Page 17: How to use Virtualization Technology in Hatena

仮想化サーバ

� データベースサーバ

ハードウェア

DBサーバ

メモリ量: 4GBDom0: 0.5GBDBサーバ 3.5GB

ハードウェア

DBサーバ

メモリ量: 8GBDom0: 0.5GBDBサーバ 3.5GBウェブサーバ 4GB

ウェブサーバ主にIO-bound

主にCPU-bound

Page 18: How to use Virtualization Technology in Hatena

仮想化サーバ

� 雑用サーバ

ハードウェア

メールサーバ

メモリ量: 8GBDom0: 0.5GBメールサーバ 1GBファイルサーバ 1GB監視サーバ 1GBバッチサーバ 1GB空き 3.5GB

いずれもCPU・IOともに軽い

ファイルサーバ

監視サーバ

バッチサーバ

Page 19: How to use Virtualization Technology in Hatena

はてなでのXen

� CentOS 5.2

� Xen 3.0.3

� LVM上にパーティション作成

Page 20: How to use Virtualization Technology in Hatena

DellサーバとAMD製プロセッサ

� AMDの仮想化支援機能と省電力を重視

� 10%程度電流コストを抑えられる

� 性能面でも遜色なし� CPUの性能差よりメモリ搭載量を重視

� RVI*1などの支援機能も貢献

1.77

1.43

アイドル時[A]

1.820.2PE2970

2.170.14PE1950

stress時[A] コードは差さっているが, 電源off時[A]

http://global.phoronix-test-suite.com/index.php?k=profile&u=rsakamot-14435-6560-5900

*1 Rapid Virtualization Indexing

Page 21: How to use Virtualization Technology in Hatena

Xenの運用1

� 新規サーバ作成

� install_xen.sh

� コマンド一発

% ./install_xen.shhostname:ip addr:mem size: 2048MBroot size: 10GBhostname must be specified../install_xen.sh: -h hostname -i ip_addr -m size_memory[MB] -s size_root[GB]

% ./install_xen.sh -h test -i 192.168.0.1 -m 1024 -s 20

Page 22: How to use Virtualization Technology in Hatena

Xenの運用2

� 負荷の監視

� サーバ管理ツールサーバの親子関係と、子サーバの負荷を一覧

Page 23: How to use Virtualization Technology in Hatena

Xenの運用2 その2あるラックに含まれるサーバの構成を負荷とともに一覧

Page 24: How to use Virtualization Technology in Hatena

Xenの運用3

xentop - 18:43:20 Xen 3.0.3-rc5-8.1.15.e4 domains: 1 running, 3 blocked, 0 paused, 0 crashed, 0 dying, 0shutdownMem: 8387168k total, 8386812k used, 356k free CPUs: 4@2000MHz

NAME STATE CPU(sec) CPU(%) MEM(k) MEM(%) MAXMEM(k).. Domain-0 -----r 1461082 0.0 925840 11.0 no limithaikuback1 --b--- 4017856 0.0 3145536 37.5 3145728haikudb1 --b--- 608099 0.0 3145520 37.5 3145728 wwwback1 --b--- 2072610 0.0 1048380 12.5 1048576

� xentop

Page 25: How to use Virtualization Technology in Hatena

Xenの運用4

� 仮想OSの移動・コピー

� ddでイメージコピー

dom0a$ time dd if=/dev/mapper/vg00-commondb02root_snapshot | gzip -c | nc 192.168.0.2 921020971520+0 records in20971520+0 records out10737418240 bytes (11 GB) copied, 1096.59 seconds, 9.8 MB/s

real 18m16.651suser 9m5.082ssys 0m59.292s

dom0b$ nc -l 9210 | gunzip -c | dd of=/dev/vg00/domu2root20971520+0 records in20971520+0 records out10737418240 bytes (11 GB) copied, 1111.61 seconds, 9.7 MB/s

Page 26: How to use Virtualization Technology in Hatena

Xenの使っていない機能

� ライブマイグレーション

� 信頼性の高いストレージが必要

� 完全仮想化

� オーバーヘッドが大きすぎる

Page 27: How to use Virtualization Technology in Hatena

Xenのデメリット1

� ホスト数の増加

� Dom0の台数分は増加

Page 28: How to use Virtualization Technology in Hatena

Xenのデメリット2

� 不可解なバグの発生

� NICのドライバ不具合

� rebootでMACアドレスがリセットされる

� 物理的な再起動で回復

� e1000を利用することで回避

� 突然ネットワークに接続できなくなる� 過去2回発生 → Dom0 再起動で解消

Page 29: How to use Virtualization Technology in Hatena

Xenのデメリット3

� パフォーマンスの低下

� メモリアクセス� ランダムアクセス時に顕著 10%程度

� IO性能

� IO処理でバッファのメモリコピーが発生

� ディスク性能� 2,3%の低下

Page 30: How to use Virtualization Technology in Hatena

Xenの運用上の注意ポイント

� DomUが迷子にならないようにする

� 探すのに苦労

� DomUからDom0の情報は得られない

� サーバの単機能化

� サーバの管理・制御が容易となる

� 不具合の影響範囲を最小化できる

Page 31: How to use Virtualization Technology in Hatena

仮想化によって得られるもの

� 物理的なリソース制約からの解放

� リソースの動的な変更

� VMのマイグレーション・複製

� 異常動作時の局所化

� ホストの制御が容易となる

� VM環境の統一化・標準化

� 自動設定ツール puppet

� VMの自動的なインストールを可能に

� 冗長化によるリソース利用効率の低下を最小限に

Page 32: How to use Virtualization Technology in Hatena

今後の構想

� 仮想ホストの自動制御

� 再起動

� 負荷に応じた増殖・移動・削減

� イメージの自動バックアップ

Page 33: How to use Virtualization Technology in Hatena

まとめ

� はてなの紹介

� 仮想化技術

� Xen

� はてなでの取り組み

� Xenの利用ポリシー

� Xenの運用

� Xenのデメリット

� 今後の構想