1. ビジネスの継続性
複数の仮想マシンが1つの物理マシン上で動く仮想化環境では、物理マシンが障害になってしまうと多くの仮想マシンが停止するため、ビジネスインパクトが大きくなってしまいます。このため、仮想環境ではビジネスの継続性を高めることが非常に重要です。
XenServerでは、仮想マシンを停止することなくハードウェアメンテナンスを可能にするライブマイグレーション機能をXenMotionとして以前より提供していましたが、新バージョンでは、よりビジネスの継続性を高めるために、仮想マシンのハイアベイラビリティ(HA)機能とディザスターリカバリー(DR)機能を追加しました。
1.1. Citrix XenServer HA機能
XenMotionは、稼働中の仮想マシンを他のXenServer物理サーバに移動します。このため、移動元のXenServer自体は稼動状態である必要があります。万が一、物理サーバがダウンをしてしまった場合には、XenMotionは仮想マシンを他のサーバに移動させることができません。その上で動いていた仮想マシンも全てダウンしてしまいます。
XenServer HAは、物理サーバがダウンした際に、その上で動いていた仮想マシンを他の物理サーバで自動的に再起動させます。各々のXenServerは、他のXenServerが動いているかどうかを定期的に調べます。もし、いずれかのXenServerが動いていなければ(すなわち障害となりダウンしてしまった場合には)、そのサーバ上で動いていた仮想マシンを稼働中の物理サーバで再起動します。
サーバの生存チェックは、ネットワークを使用して行われます。各XenServerは、ハートビートパケットを他のXenServerに5秒間隔で送信します。あるハートビートパケットが40秒間途絶えた場合、他のサーバはそのXenServerはダウンしたとみなします。
この方式には一つ問題があります。ハートビートパケットが途絶えた場合に、サーバダウンが原因なのか、ネットワーク障害が原因なのか区別がつかないということです。ネットワーク障害になった場合に仮想マシンを起動させてしまうと、同じ仮想マシンが2つ起動してしまう所謂スプリットブレーンの状態となり、データが破損してしまいます。よって、スプリットブレーンにならない仕組みが必要です。
XenServer HAでは、ハードウェア障害かネットワーク障害かを判断するためにハートビート用の共有ディスクを使用します。各々のXenServerは、ネットワーク上にハートピートのパケットを送信するのと同じように、定期的に共有ディスク上の自分に割り当てられたブロックにデータを書き込みます。
ネットワークからハートビートのデータが来なくなった時に、ハートビートディスクにそのサーバからのデータが書かれていればネットワーク障害と判断します。また、ディスクにデータが書かれていなければサーバ障害と認識します。そして、サーバ障害の時のみ仮想マシンのフェールオーバー(他のXenServerで仮想マシンが自動的に再起動される)処理を実行します。
このハートビート用のディスクは、iSCSIまたはFC-SANで接続されている必要がありますが、仮想マシンの共有ディスクと同じである必要はありません。HA構成にする場合には、共有ディスクを用意し、その上に仮想マシンが使用するディスク(仮想ディスク)を保持する必要があります。共有ディスク自体はNFS、iSCSI、FC-SANと一部のSASストレージをサポートしていますが、ハートビート用ディスクにはiSCSIまたはFC-SANのストレージを使用する必要があります。
XenServerは利用者が容易に仮想環境を管理できることを目指しています。HAの機能を使用する場合でもその思想は引き継がれていなければなりません。HAのセットアップはウィザード形式でわずか2つのステップにすぎません。最初のステップでハートビート用ストレージを選択し、次のステップで仮想マシンに対する保護レベルを設定するだけです。
仮想マシンの保護レベルは、「保護する」「可能なら再起動」「再起動しない」の3段階で設定します。「保護する」を設定すると、ハードウェア障害時に必ず再起動されます。「可能なら再起動」は、XenServerにその仮想マシンを起動するだけのリソースがある場合に再起動されます。そして、「再起動しない」はハードウェア障害時に再起動されない仮想マシンとなります。
全ての仮想マシンに保護レベルの設定を行うと、「許容障害数」が自動的に計算され表示されます。XenServer HAでは、複数台のXenServerでハイアベイラビリティのグループを作成します。許容障害数は、「保護する」と設定された仮想マシンが必ず再起動される環境を保つことを考えた場合に、グループ(プール)に属しているXenServerのハードウェア障害を何台まで許容できるかを表示しています。
XenServer HAの機能は、ハードウェア障害時に仮想マシンを自動的に再起動する機能です。よって、ゲストOSの中で動いているExchange ServerやSQL Serverのようなアプリケーション(サービス)レベルのフェールオーバー機能を提供しているわけではありません。アプリケーションレベルでの保護が必要な場合には、別途クラスタソフトウェアを検討する必要があります。
また、ハードウェア障害時には仮想マシンもダウンし、サービスの停止やクライアントとのセッションが切れてしまいます。ハードウェア障害時に仮想マシンを停止させたくないミッションクリティカルなシステムはフォールトトレラントシステムを検討してください。