WSFC(フェールオーバークラスター)とは?前提条件と代表的な2つの構成例

    フェールオーバークラスターとは、Microsoftのサーバー向けOSであるWindows Serverに搭載されている、可用性を高めるための機能です。WSFCと略されるこの機能を使うことで、サーバーをクラスター構成にすることができます。

    この記事では、フェールオーバークラスターを利用するための前提条件や、共有ディスクタイプ・データミラータイプといった種類について詳しく解説します。

    WSFC(フェールオーバークラスター)とは?

    WSFC(フェールオーバークラスター)とは、Windows Serverの機能で、正式名称は「Windows Server Failover Cluster」です。過去はMSFC(Microsoft Failover Cluster)、それ以前(Windows server 2003まで)はMSCS(Microsoft Cluster Service)と呼ばれていました。

    フェールオーバークラスターは、稼働している複数台のサーバーをまるで1つのサーバーが稼働しているかのように使うことができる機能です。複数台のサーバーを全体で1台のサーバーとして動作させることを「クラスター構成」や「クラスタリング」と呼びます。この構成にすることで、いずれかのサーバーに障害が発生しても他のサーバーが処理を引き継ぎ、システム停止を防ぐことが可能になります。利用者側で特に作業をする必要はなく、数十秒の処理中断のあと、それまでと変わりなくシステムを利用できます。この、障害が発生したサーバーから別のサーバーに自動で切り替える仕組みをフェールオーバーといい、フェールオーバークラスターとはその名の通り「クラスター構成を実現し、障害時にフェールオーバーを行う機能」ということです。

    障害対策の重要性

    WSFCのように、システムの停止時間を最小とすることを目的としたクラスター構成を「HAクラスター」と呼びます。HAはHigh Availabilityの略で、「高可用性」といわれることもあります。企業のシステムにおいて、HAクラスターなどの障害対策を行っておくことは、非常に重要です。サーバーなどの物理的な環境は消耗品のため、メンテナンスを行っていても障害が発生しないとは言い切れません。「障害は発生するもの」と捉えて、障害が発生してもシステム停止時間を最小にする環境をあらかじめ用意しておくことが大切です。

    企業のシステムが停止することは、様々な影響があります。業務に支障が出ることはもちろん、取引先に迷惑がかかったり、ビジネスチャンスを逃したりする可能性もあります。例えば、取引先と受発注データをやりとりしているシステムに障害が発生すると、取引先のシステムにデータが送られなかったり、不正なデータを送ってしまったりすることが考えられます。ECサイトを運営している企業では、そのサイトがダウンしてしまうと大きな売上損失に繋がります。そのため、適切に障害対策を行い、システムの可用性を高めることは非常に重要です。

    クラスターを構成するノード

    クラスターを構成する1台1台のサーバーを「ノード」と呼び、WSFC内のノードは物理ケーブルとソフトウェアで接続されています。WSFCは「アクティブ-パッシブ型」というHAクラスター構成をとります。これは「アクティブ-スタンバイ型」と呼ばれることもあり、稼働しているノード以外は、平常時は使われず待機させている構成のことです。このクラスター構成はシンプルで、どんなシステムにも比較的容易に適用できるというメリットもあります。

    ノードの役割

    WSFC内のノードは、連携していくつかの役割を担っています。ひとつは、メタデータの保存と通知です。アプリケーションに関するメタデータはクラスター内の各ノードで維持されます。このメタデータにはアプリケーションの設定に加え、WSFCの構成と状態が含まれます。これらに変更があった場合は、WSFC内の他のノードに自動で反映されます。

    ノードは、正常性の監視も行います。ノード間およびプライマリノードの状態は、ハートビートと呼ばれる接続の正常性を確認するための通信と、リソース監視の組み合わせによって判断されます。WSFCの全体的な正常性状態は、ノードによるクォーラムの投票によって決定します。そのほか、リソース管理やフェールオーバーの調整もノードが役割を担っており、WSFCの機能を維持しています。

    Always OnとWSFC

    Always Onとは、SQL Serverが提供する高可用性を実現するための機能です。Always Onの機能として提供されているAlways On可用性グループとAlways Onフェールオーバークラスターインスタンスは、どちらもWSFCをプラットフォームとして使用していて、コンポーネントをWSFCクラスターリソースとして登録します。WSFCは、SQL Serverを再起動する必要がある場合にはこれを検知して通知したり、WSFC内の他のノードに自動的にフェールオーバーしたりすることが可能です。

    フェールオーバークラスターの前提条件

    フェールオーバークラスターを作成するには、まずMicrosoftでサポートされるためのハードウェア構成になっている必要があります。また、サーバーは同一または類似したコンポーネントで構成された一連のコンピューターを使用することが推奨されています。そのほかにもいくつか前提条件があり、ここではその条件について解説します。

    ネットワークアダプターおよびケーブル

    通信規格にiSCSIを使用する場合、各ネットワークアダプターをネットワーク通信とiSCSIで共有させるのではなく、いずれか専用にする必要があります。クラスター構成において、ノード同士を接続するネットワークインフラは単一障害点を作らないようにしなければなりません。単一障害点とは、その箇所に問題が発生するとシステム全体の障害となるような箇所のことです。この単一障害点を回避する方法として、複数の個別のネットワークを使用してノードを接続するという方法があります。もしくは、チーム化されたネットワークアダプター、冗長スイッチ、冗長ルーターなど、単一障害点を作らないよう構成されたネットワークにノードを接続するという方法もあります。

    記憶域用のデバイスコントローラーまたはアダプター

    iSCSIを使用する場合、クラスター化されたサーバーごとにクラスター記憶域専用のネットワークアダプターまたはホストバスアダプタが1つ以上必要です。先述の通り、iSCSIに使用するネットワークは専用にする必要があり、ネットワーク通信には使用できません。そのため、クラスター化されたすべてのサーバーでiSCSI記憶域ターゲットへの接続に同一のネットワークアダプターを利用する必要があります。その際、ギガビットイーサネット以上の通信規格を使用することが推奨されています。

    記憶域

    Windows Server 2012 R2またはWindows Server 2012と互換性のある記憶スペースダイレクト、もしくは共有記憶域を使用する必要があります。また、フェールオーバークラスターで構成されているHyper-vを実行しているサーバーの共有記憶域としてSMB3.0ファイル共有を使用することも可能です。

    通常、アタッチされる記憶域にはハードウェアレベルで構成される複数の個別ディスクが含まれている必要があり、一部のクラスターではこれらのディスクのうち1つがディスク監視として機能します。

    フェールオーバークラスターに含まれる規定のディスクサポートを利用するには、ダイナミックディスクではなくベーシックディスクを使用しなければなりません。また、Microsoft標準のファイルシステムであるNTFSでパーティションをフォーマットすることが推奨されています。クラスターの共有ボリュームを使用する場合は、すべてのパーティションがNTFSである必要があります。

    Hyper-vのハードウェア要件

    クラスター化された仮想マシンが含まれるフェールオーバークラスターを作成する場合、サーバーはHyper-vのハードウェア要件を満たしている必要があります。Hyper-vのハードウェア要件とは、ハードウェア補助による仮想化と、ハードウェアによるデータ実行防止(DEP)が使用可能で有効になっていることです。これらを含む64ビットプロセッサが必要とされています

    記憶域ネットワーク展開時のガイドライン

    フェールオーバークラスターを備えた記憶域ネットワークを展開するときのガイドラインとして、「記憶域の互換性を確認する」「1つのクラスターで1つの記憶装置を使用する」「マルチパスI/Oソフトウェアまたはチーム化されたネットワークアダプターの使用を検討する」という3つが設定されています。

    フェールオーバークラスターの種類

    障害時にフェールオーバーを行う目的で構成されたクラスターには、共有ディスクタイプとデータミラータイプという種類があります。この2つはサーバーの構成やデータ保持の仕方などが異なります。ここでは、共有ディスクタイプとデータミラータイプについて、それぞれ解説します。

    共有ディスクタイプ

    クラスター構成をとっているシステムでは、ノード間でデータを引き継ぐ必要があります。データを共有ディスクに保存し、ディスクを複数のサーバーで利用する構成を共有ディスクタイプと呼びます。稼働系も待機系も同じディスクのデータを参照するため、サーバーごとに読み取るデータに不整合は生じません。稼働系に障害が発生した場合は、共有ディスクに破損がないことを確認し、必要に応じて修復したうえで同じデータがそのまま引き継がれます。

    複数のサーバーでディスクを共有するため、意図しないデータの上書きなどが発生しないようにする必要があります。共有ディスクタイプでは、1つのサーバーが共有ディスクの特定領域を使用しているときは、他のサーバーからはアクセスできないようになっています。データ書き込みにおける性能劣化がないため、データベースサーバーなど、大量のデータを扱うシステムに向いている構成です。

    共有ディスクタイプで障害が発生してフェールオーバーした場合、フェールオーバー先でそのまま業務を継続するケースと、障害が発生したサーバーを復旧させて稼働系に戻すフェールバックを行うケースがあります。フェールオーバー先のサーバーのスペックが低かったり、双方向スタンバイ構成で1台のサーバーに負荷が偏ったりする場合は、フェールバックが行われます。

    共有ディスクタイプの場合、サーバー側の障害であればフェールオーバーしてシステムの利用を継続できますが、共有ディスクに障害が発生した場合はデータにアクセスできなくなるなど、システムが利用できなくなる可能性が高いため注意が必要です。1つのディスクを共有するため、そのディスクが単一障害点になってしまうのです。このような事態を防ぐために、共有ディスク自体を冗長化するなど、あらかじめ対策をしておく必要があります。

    共有ディスクタイプのデメリットは、一般的に設備のコストが高くなる傾向にあることです。複数のサーバーから書き込みできる大容量のストレージは、高価なものが多いです。また、システムの拡張などでノードを追加する場合、必ずしも追加数に見合った性能をディスクが発揮できるとは限らないというデメリットもあります。

    データミラータイプ

    データミラータイプとは、共有ディスクを使用せずに各サーバーのディスクを同期するクラスター構成のことをいいます。ノード間でデータに不整合が生じないように、稼働系のディスクに書き込みが生じたときは差分を待機系のサーバーの送信し、データを常に同期させるようになっています。高価になりがちな共有ディスクを使用しないため、同じ機能をより安価に実現できる構成です。このように、常に同期されたデータをそれぞれのサーバーで持つため、大容量のデータを扱う大規模システムには適さないというデメリットもあります。

    共有ディスクタイプと同様に、稼働系に障害が発生した場合、待機系が処理を引き継ぎます。その際、各サーバー間でデータは常に同期されているため、そのままシステムを継続利用できます。サーバーごとにディスクは独立しているため、ディスクが単一障害点になることもありません。稼働系のディスクに障害があった場合は、データミラーエンジンは障害発生ディスクへの読み書きは行わず、待機系のディスクに対してのみ読み書きを実行します。

    データミラーの応用として、スナップショットバックアップの利用があります。スナップショットとは、ある瞬間のデータを保存することです。データミラータイプのクラスター構成では2つ以上のサーバーで共有のデータを持っているため、待機系のサーバーをクラスターから切り離すだけでスナップショットバックアップとしてディスクを保存することが可能になります。

    データミラータイプのようにサーバーごとにデータを保持することは、災害対策にも役立ちます。遠隔地に待機系を配置することで、停電などでデータセンターごと被害を受けるような障害が発生した場合でも、待機系は影響を受けずにフェールオーバー先として機能することができます。共有ディスクタイプではこのようなことは不可能なため、災害対策にはデータミラータイプが採用されています。

    まとめ

    フェールオーバークラスターとは、MicrosoftのWindows Serverに搭載されている高可用性クラスターを構成する機能です。複数のサーバーを連携して使用することで、まるで1台のサーバーが稼働しているかのように見せることができ、障害が発生してもシステム停止の可能性を低くすることができます。障害発生時に稼働系から待機系に処理を引き継ぐことをフェールオーバーといい、フェールオーバーを可能にするために共有ディスクタイプやデータミラータイプなどの構成をとります。それぞれメリット・デメリットや適したシステムがあるため、導入検討の際は注意が必要です。

    ご紹介したWSFC以外に、システムの障害を監視し、フェールオーバーを実現する製品としてLifeKeeperがあります。LifeKeeperは、Windowsだけでなく、Linuxの環境でも利用が可能です。LifeKeeperを活用することで、クラウド環境でも可用性の高いシステムを実現できます。また、WSFCと連携し、共有ストレージなしに高可用性を実現できるDataKeeperという製品もあります。共有ストレージを構成することが難しいクラウド環境での利用が進んでおります。特にMicrosoft Azure上では、正式に動作認定されている、唯一のHAクラスターソリューションです。システムの可用性を高めたい場合は、これらの製品も活用してみてはいかがでしょうか。

    SNSでもご購読できます。