EX-CLOUDの仮想化運用術
データホテルで展開しているEX-CLOUDの仮想化には、Parallels Virtuozzo Containers(OpenVZの商用版)を使用しています。 Virtuozzoには特徴的な機能が色々ありますので、今日はその中から2点取り上げてみたいと思います。
■ストレージ不要のライブマイグレーション
他の仮想化技術では、二次記憶装置に外部ストレージを使用して、サーバに演算と一次記憶のみを任せることで、 ライブマイグレーションを実現させていますが、Virtuozzoではマイグレーション時にデータなどを移行先に同期させることで、 ストレージ不要のライブマイグレーション実現させています。 この機能は最初かなりビビッて使っていましたが、乗りこなしてしまえば実用に耐えますので、紹介したいと思います。
マイグレーションはおおまかに、以下のような流れで実行されます。
--------------------------------- 1.移行先へデータ、プロセスの移行 2.メモリ内容の移行 3.IP付け替え ---------------------------------マイグレーションはVirtuozzoカーネルが提供しているチェックポイント機能で実現されています。 マイグレーション時のプロセスを見ると、データ自体のやり取りはrsyncが使われています。
移行時は以下内容も保持されるので、無停止での移行と言って良いと思います。
--------------------------- 起動プロセスとステータス オープンファイル ネットワークソケットと接続 ---------------------------IP付け替えの時にパケットが少し落ちますが、許容範囲内です。
注意点として、移行対象のVPSが作成されたテンプレートと全く同じテンプレートを移行先に用意しなければなりません。 これはOSテンプレートからキャッシュしたOSイメージを読み込んで、VPSを起動しているためです。
▽OSテンプレートとOSイメージについて
EX-CLOUDではEZテンプレートというテンプレートを使用しています。 EZテンプレートにはrpmなどのファイルは含まれておらず、リポジトリ、インストールパッケージ名などが書かれたテキストで構成されています。 このテキスト情報を元に、OSイメージ作成しています。
▽OSテンプレートcentos-5-x86_64の構成
Virtuozzoはディレクトリパスで、OSテンプレートを判別しています。
/vz/template/[OS名]/[バージョン]/[アーキテクチャ]/config/os/default/
centos-5-x86_64の場合以下のようなパスになります。
/vz/template/centos/5/x86_64/config/os/default/
このディレクトリ以下にテンプレート構成ファイルが配置されていて、 代表的なファイルは以下の2ファイルです。
packages:インストールするパッケージが記述されています。
------------------ authconfig bash crontabs diffutils rootfiles info ・・・ ・・・ ・・・ ------------------repositories:レポジトリのリストが記述されています。
------------------ http://mirror.centos.org/centos/5/os/x86_64 http://mirror.centos.org/centos/5/updates/x86_64 ------------------以下を実行してテンプレートをキャッシュします。
# vzpkg create cacheすると、repositoriesからpackagesに記述されているパッケージが取得され、 OSイメージとしてtarボールに固められます。
/vz/template/cache/centos-5-x86_64.tar.gzこのOSイメージを元にVPSが作成されます。 実際に作成する場合はこんな感じです。
# vzctl create [VEID] --ostemplate centos-5-x86_64ここでキャッシュしたOSイメージを消すとどうなるか? VPS内部では、OSイメージをリンクのような形で読み込んでいますので、 全構成ファイルがリンク切れファイルのような動きをします。 rm -rf / と同じ効果です。
■無停止でのリソース値変更
VirtuozzoはOS仮想化ですので、当然と言えばそれまでなのですが、 無停止でリソース値変更が可能です。 EX-CLOUDでは主に以下設定をプラン別に用意して、プラン変更があった場合は 無停止で割り当てリソースを上下させています。
--------------------------- CPU 使用量の制限値(cpulimit) コンテナが消費するディスク容量の総サイズ(diskspace) ディスク iノード数(diskinodes) メモリの制限値(slmmemorylimit) ---------------------------最近ではハイパーバイザ型もホットアド機能が実装されているので、 この優位性は無くなりつつありますが、気軽に設定変更出来る点では まだOS仮想化に分があるように思います。
▽CPU
Virtuozzoのcpulimitは%単位で設定を行います。 CPUコア数×100%が全体の処理能力になりますので、QuadCore+HTのサーバだと 8*100=800%が全体の処理能力です。CPU使用量の制限値されたVPS内部では/proc/cpuinfoのcpu MHzが変化します。
制限なし cpu MHz : 1862.037 25%制限 cpu MHz : 352.768VirtuozzoがMHz単位でCPUリソースを割り振ってるわけでは無いのですが、 表現としてはわかりやすくて良いと思います。
▽ディスク
ディスクを100GB使っているVPSのディスク容量を50GBに縮小するとどうなるか?Size:50GB、Used:50GB、Avail:0GBもちろんディスクフルになりますが、100GBのデータにはフルアクセス出来ます。 50GB以下にディスクを減らすと50GBでキャップされます。 良く出来てます。
▽メモリ
メモリを2GB使っているのVPSのメモリ容量を1GBに縮小するとどうなるのか?OOM Killerにプロセスがバッサリkillされます。 こっちは容赦無いです。
このような機能を使いながらEX-CLOUDの運用をしているのですが、 そのEX-CLOUDから低価格VPSプランEX-LITE(エクスライト)を先日リリースしました。
http://ex-cloud.jp/ex-lite/
■EX-LITE(エクスライト)の特徴
・1U(SASディスク 30GB、メモリ1GB)あたり月額1,050円・1U〜5Uまで無停止スケールアップ可能
・WebDAV設定済みですぐ使える
・LANも使える(別料金)
低価格VPSのこのプラン、初期無料&最低利用期間が1ヶ月となっています。 サーバーエンジニアの方々による検証環境や開発環境としての活用事例が増えてきていますので、 皆さんも機会があれば是非ご検討いただければと思います。
