LennyでiSCSI 【その5】クラスタ+GFSでライブマイグレーション | 雲の上はいつも青空

雲の上はいつも青空

不思議な経歴をもつエンジニア!?の徒然なブログです。
お仕事関係の話が多いと思いますが、コメントとかもらえると中の人はとても喜びます(^O^)/

$雲の上はいつも青空-stopちょっと間が空いてしまいましたが、久しぶりに更新です。
クラスタ+GFSの構築と検証に、ずいぶん時間がかかってしまいました。

再度、与件と環境を整理しておきます。

【目的】
xen環境における仮想化において、複数の物理的に異なるサーバ間でライブマイグレーションを実現する。
この際、stableなDebianパッケージだけで環境を構築し、動作検証を行う。

【環境】
物理的に異なる3台のマシンで検証環境を構築する。
1.すべてのサーバは、Debian GNU 5.0 lenny + 標準Debianパッケージで構築する。
2.仮想サーバが利用するストレージは共有ストレージとし、iSCSIでDomain0と接続する。
3.iSCSIのターゲットとして1台、イニシエーターとしてDomain0を2台構築する。
4.ファイルシステムはGFS2を利用し、cmanでクラスタ化及び排他制御を行う。
※GFS2は以前は評価レベルでしたが、最新版のRed Hat Enterprise Linux 5.3から正式サポートになったようです。
http://ftp.wustl.edu/pub/centos5/NOTES/RELEASE-NOTES-U3-ja.html

【結果】
1.仮想サーバの起動、及びライブマイグレーションは完動。
2.クラスターを安定して構成・維持が難しい(一度動いてしまえば安定)。
3.スループットについては注意が必要(後述)。

クラスタ+GFSが思ったより癖があるので、ストレージ用に1台、Domain0で2台構成の場合、iSCSIだけを使った構成の方が運用は楽かもしれません。
この場合は、Domain0の一方がマスター(すべての仮想サーバを起動)として、残りはホットスタンバイとして待機し、マスター機に障害が発生した場合や、メンテナンス時だけにライブマイグレーションですべての仮想サーバを移動させるという運用になります。

また、cmanを使ってクラスタを組む場合には、本来、障害発生機をクラスタから切り離すための仕組み(フェンスデバイス)を持つ必要がありませす。
例えば、UPSに指示して電源を強制的に落とすとか、スイッチに指示してネットワークから切り離すとか…
しかし、今回は検証用なのでフェンスデバイスは手動となっています。
本格的にクラスタを業務用に使うには、なんらかのフェンスデバイスと仮想サーバを移動、もしくは再立ち上げを自動で行うシステムが必要です。
このような自動的なHA構成は商業用の仮想化システム(VMware、CiTRIX等)ではサポートされています。

つまり、今回実験したような構成は、あくまで手動で管理・運用していて、複数のDomain0を動かしているときに、ライブマイグレーションを使いたい場合にのみ適用という事になります。
自動的に障害対応をするわけではないので、HA構成とは違います。
あくまで、運用が快適・迅速になる事を期待するシステムです。

〇Domain0で障害が発生しても、仮想サーバのイメージは別のストレージにあるので再立ち上げが早い。
〇仮想サーバのイメージはハードウェアから独立しているので、Domain0のサーバはすべて同じである必要はない。
〇ライブマイグレーションが可能なので、Domain0の機器交換・再起動等でサービスを停止しなくて良い。
〇仮想サーバの負荷に応じて、ライブマイグレーションを使いDomain0間を無停止で移動できる。

【IOのスループット】
LinuxのHDDベンチマークの定番であるbonnie++を使い、IOとしてのスループットを計測しました。
※キャッシュの影響をなくすため、約5GB(5528MB)のファイルを読み書きしています。
※単位はMB/secです。
※キャラクター:1バイトづつ処理、ブロック:一番効率の良いブロック単位で処理
          シーケンシャル 5532MB
write キャラクター  % ブロック % read キャラクター % ブロック %
local 53060 55058         40772 69871
iSCSI 24483 46.1 20497 37.2 45914 112.6  50451 72.2
iSCSI+GFS 17874 33.7 23600 42.9 28471 69.8  38011 54.4
このデータを見る限り、スループットの低下は思ったよりはげしいものです。
おおざっぱに見ても、iSCSI+GFSではlocalのHDDに比べて、スループットが半分以下になることが解ります。
※iSCSIとSANの比較については、オラクルの中嶋さんのブログが詳しいです。
 とても参考になります。

5GBのファイルを扱うというのは、純粋にIOのスループットを見るには良いのですが、もうすこし現実的なデータでスループットを見てみると、ちょっと感じが変わってきます。
以下のデータはVM(仮想サーバ)上でのスループットです。
                        write                   read
ファイルサイズ キャラクター ブロック キャラクター ブロック
VM local 512M 63627 193607 75285 441319
VM iSCSI+GFS 512M 63350 257508 76071 365103
VM iSCSI+GFS 1024M 62207 234266 77055 395390

このデータを見る限り、実用域にあるように思えます。
※実際に触ってみても体感的に遅い感じはしません。
※特にキャッシュが効いているようでwriteが早い!

あとは一番大切な信頼性ですが、これはベンチマークでは解りませんのでしばらくテスト運用してみるつもりです。

■検証結果の考察が長くなったので、具体的な設定方法等は別に書くことにします。