Upload
shinji-tanaka
View
7.319
Download
3
Embed Size (px)
Citation preview
はてなでの仮想化技術の使い方
はてな 田中 慎司
stanaka @ hatena.ne.jp
アジェンダ
� はてなの紹介
� 仮想化技術
� Xen
� はてなでの取り組み
� Xenの利用ポリシー
� Xenの運用
� Xenのデメリット
� 今後の構想
はてなの紹介
� 2001年 創業
� 人力検索はてな
� 質問をすると人が答えてくれる
2001年当時 現在
はてなの紹介
� 歴史� 2001年 有限会社はてな創業 京都 人力検索サイトはてな
� 2002年 はてなアンテナ
� 2003年 はてなダイアリー
� 2004年 東京進出
� 2005年 はてなブックマーク
� 2006年 シリコンバレー
� 2007年 はてなスター はてなハイク
� 2008年 京都移転
� はてなブックマークリニューアル
� うごメモはてな
はてなのサービス群
仮想化技術
� ハードウェアを抽象化し、複数のOSが動作できるようにする
� Xen, VMware, QEMU, UML, KVM, OpenVZなど
� 古くは..
� メインフレームの技術
� Linux chroot, FreeBSD jail
仮想化技術のメリット
� 可用性の向上� 動作中の仮想マシンをほぼ瞬時に別ハードウェアに移動することができるため、ハードウェアのメンテナンスやアップグレードがサービスを停止せずに行える。
� 柔軟性の向上� 仮想マシン間でCPUやメモリなどの資源配分を指定することで、ニーズに応じて適切な資源を無駄なく割り当て活用できる。
� 運用コストの低下� サーバ群において、他のサーバに環境を構築するのが容易である。
� セキュリティの向上� 仮想マシン環境は互いに隔離されており、ある仮想マシンで動作する有害なソフトウェアがほかの環境や仮想マシンモニタに悪影響を与えることはできない。
出典: Wikipedia
はてなでの仮想化
� Xen
Xen
� もともとはケンブリッジ大学の研究プロジェクト
� XenSource, Inc
� Citrix Systemsが買収 2007.10.25
Xenにおける仮想化のモデル
� 準仮想化(ParaVirtualization)� 仮想的なハードウェアを再定義するため、仮想ハードウェアは、操作をするためにはハイパーバイザコールを呼び出す
� エミュレーションのオーバーヘッドを最小限に抑えられる
� OSをXen仮想ハードウェア上に移植することが必要
� 完全仮想化(FullVirtualization)� 実ハードウェア用のOSがそのまま動作
� WindowsなどのOSも動作
� エミュレーションのためのコストが大きくなる
� デバイスドライバのみ準仮想化とすることも可能
� サーバ 500台 → 仮想化して890台
はてなのサーバ台数
はてなのシステムの全体像と解説
� 三層構造
� リバースプロキシ
� アプリケーションサーバ
� データベース/ファイルサーバ
バックエンドシステムの三層構造
proxy proxy
LVS
LVS
mod_perl mod_perl mod_perl mod_perl
LVS
MySQL MySQL
LVS
LVS
LVS
リバースプロキシリバースプロキシリバースプロキシリバースプロキシ
アプリケーションサーバアプリケーションサーバアプリケーションサーバアプリケーションサーバ
データベースサーバデータベースサーバデータベースサーバデータベースサーバ
ロードバランサロードバランサロードバランサロードバランサ
全体像
� 三層構造がサービス毎に
� サーバー台数の割合
� Web : DB = 4 : 6 ~ 6 : 4
� 全体の 6 ~ 7 割が Web or DB
� それ以外
� ネットワーク関連、ファイルサーバ、管理用、メール、分散ストレージサーバなど
� 非同期システムが増量中
� MapReduce計算クラスタなど
仮想化サーバの構築ポリシー
� ハードウェアリソースの利用率の向上
� 空いているリソースを主に利用するDomUを投入
� CPUが空いている → ウェブサーバ
� IOが空いている → DBサーバ
� メモリが空いている → キャッシュサーバ
� 同居を避ける組み合わせ
� 同じ傾向、かつ、負荷の高い用途同士� 別サーバのウェブサーバ同士など..
ハードウェア
仮想化サーバ
� ウェブサーバ
ウェブサーバ
メモリ量: 4GBDom0: 0.5GBウェブサーバ 3.5GB
ハードウェア
ウェブサーバ
メモリ量: 8GBDom0: 0.5GBウェブサーバ 5.5GBキャッシュサーバ 2GB
キャッシュサーバ主にCPU-bound
主にメモリを消費CPUは消費しない
仮想化サーバ
� データベースサーバ
ハードウェア
DBサーバ
メモリ量: 4GBDom0: 0.5GBDBサーバ 3.5GB
ハードウェア
DBサーバ
メモリ量: 8GBDom0: 0.5GBDBサーバ 3.5GBウェブサーバ 4GB
ウェブサーバ主にIO-bound
主にCPU-bound
仮想化サーバ
� 雑用サーバ
ハードウェア
メールサーバ
メモリ量: 8GBDom0: 0.5GBメールサーバ 1GBファイルサーバ 1GB監視サーバ 1GBバッチサーバ 1GB空き 3.5GB
いずれもCPU・IOともに軽い
ファイルサーバ
監視サーバ
バッチサーバ
はてなでのXen
� CentOS 5.2
� Xen 3.0.3
� LVM上にパーティション作成
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
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
Xenの運用2
� 負荷の監視
� サーバ管理ツールサーバの親子関係と、子サーバの負荷を一覧
Xenの運用2 その2あるラックに含まれるサーバの構成を負荷とともに一覧
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
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
Xenの使っていない機能
� ライブマイグレーション
� 信頼性の高いストレージが必要
� 完全仮想化
� オーバーヘッドが大きすぎる
Xenのデメリット1
� ホスト数の増加
� Dom0の台数分は増加
Xenのデメリット2
� 不可解なバグの発生
� NICのドライバ不具合
� rebootでMACアドレスがリセットされる
� 物理的な再起動で回復
� e1000を利用することで回避
� 突然ネットワークに接続できなくなる� 過去2回発生 → Dom0 再起動で解消
Xenのデメリット3
� パフォーマンスの低下
� メモリアクセス� ランダムアクセス時に顕著 10%程度
� IO性能
� IO処理でバッファのメモリコピーが発生
� ディスク性能� 2,3%の低下
Xenの運用上の注意ポイント
� DomUが迷子にならないようにする
� 探すのに苦労
� DomUからDom0の情報は得られない
� サーバの単機能化
� サーバの管理・制御が容易となる
� 不具合の影響範囲を最小化できる
仮想化によって得られるもの
� 物理的なリソース制約からの解放
� リソースの動的な変更
� VMのマイグレーション・複製
� 異常動作時の局所化
� ホストの制御が容易となる
� VM環境の統一化・標準化
� 自動設定ツール puppet
� VMの自動的なインストールを可能に
� 冗長化によるリソース利用効率の低下を最小限に
今後の構想
� 仮想ホストの自動制御
� 再起動
� 負荷に応じた増殖・移動・削減
� イメージの自動バックアップ
まとめ
� はてなの紹介
� 仮想化技術
� Xen
� はてなでの取り組み
� Xenの利用ポリシー
� Xenの運用
� Xenのデメリット
� 今後の構想