2017年6月7日水曜日

WSFC / MSFC入門

Windows Serverを使う場合、WSFC (Windows Server Failover Clustering)、別名MSFC (Microsoft Failover Clustering)を使ってクラスターを組む場合が多いと思う。クラスターというと、とっつきにくいイメージがあるかもしれないが、今回、Windows Server 2012 R2を使って、サクッとクラスターサーバーを作ってみたいと思う。

WSFCの呼び方は複数ある

余談だが、WSFCはOSや時期によって名前が変わってきており、以下のようになっている。

 ・MSCS:Windows Server 2003 R2以前
 ・WSFC / MSFC:Windows Server 2008 以降

Windows Server 2012 R2のGUI上では、カタカナでフェールオーバークラスターと表記されていたりする。Microsoftのサイトを見る限りでは、WSFCが公式な略称として使用されているようだ。

・例:Windows Server フェールオーバー クラスタリング (WSFC) と SQL Server
https://msdn.microsoft.com/ja-jp/library/hh270278.aspx

本記事では、WSFCで記載を統一することにする。

WSFCの前提条件と今回の構成

WSFCを構成する上での前提条件を以下に記載する。

・同一ドメインに所属することが必要 (すなわちドメインコントローラーが必要)
・クラスター用にIPが1つ、アプリケーション用にIPが1つ必要
・クラスター通信用のネットワークは2つ用意することが推奨 (必須ではないが可用性の観点から推奨)
・アプリケーション用に共有ディスクが必要 (今回はiSCSIで構築)
・クォーラムディスク用に1GB程度の共有ディスクの用意を推奨 (今回はiSCSIで構築)

条件をふまえて、今回のサーバー構成は以下の通りとした。


それでは、上記を構成する手順を順に追っていこう。

WSFC構成手順

1. 共有ディスクをマウント

今回はiSCSIにて2台のノードで共有するディスクをマウントする。マウントする方法は別記事を参照。マウント後は以下のようになる。Eドライブをクラスター用の共有ディスクとし、Qドライブはクォーラム監視用に使用する。


2. 機能を追加

「サーバーマネージャー」の「役割と機能の追加」から「フェールオーバークラスタリング」の機能を両方のノードに追加する。ここは特に難しい設定はなく、ひたすら次へを押していけばよい。


3. フェールオーバークラスターマネージャーの起動

「サーバーマネージャー」の「ツール」から「フェールオーバークラスターマネージャー」を選択する。


4. クラスターの構成の検証

左ペインの「フェールオーバークラスターマネージャー」を右クリックし、「構成の検証」を選択すると、クラスターを組むにあたって、必要な前提条件の確認を自動で検証してくれる。なお、構成の検証は、クラスター作成が初回時の場合も実施を促されるため、一度は実施する必要がある。


構成の検証が終わると、最後にレポートの表示をすることができる。「カテゴリ別の結果」が、すべて「成功」となっていることを確認しておこう。


5. クラスターの作成

検証が終わったら、再度、左ペインの「フェールオーバークラスターマネージャー」を右クリックし、「クラスターの作成」を選択する。

この際にクラスター管理用のクラスター名とIPアドレスの入力を促されるため、適切に設定する。ここで設定したクラスター名とIPアドレスは、ホスト名としてADに登録される。

「使用可能な記憶域をすべてクラスターに追加する」について、今回は手動でディスクの追加を行うこととするため、チェックは外しておく。


クラスターの作成が完了すると、1点警告が表示されるが、クォーラム監視が設定されていないという内容であり、この後の作業で実施するため無視して問題ない。


6. ディスクの追加

左ペインの「フェールオーバークラスターマネージャー」→「クラスター名」→「記憶域」→「ディスク」を右クリックし、「ディスクの追加」を選択すると、「クラスターへのディスク追加」のポップアップが表示されるため、追加したいディスクを選択して「OK」をクリックする。


ディスクが追加されると、デフォルトではディスクの名前が「クラスター ディスク X」という名前となっており判別しづらいので、右クリック→「プロパティ」から名前を変更しておくと管理が楽になる。


最終的にディスクの状態は以下のようになる。EドライブとQドライブが「使用可能記憶域」という状態で追加されている。


7. クォーラムの設定

「フェールオーバークラスターマネージャー」→「クラスター名」を右クリックし、「他のアクション」→「クラスタークォーラム設定の構成」を選択する。


クォーラム監視にはいくつか方式があるようだが、「標準のクォーラム構成を使用する」を選択しておけば、自動的に最適なものが選択される模様。


クォーラム監視のオプションの説明はMicrosoftのサイトに記載があるため、詳細はそちらを参照すること。

・Windows Server 2012 フェールオーバー クラスターでクォーラムを構成および管理する
https://technet.microsoft.com/ja-jp/library/jj612870(v=ws.11).aspx

標準構成で選ばれた構成は以下の通りとなった。

 ------------------------------
 ・監視の種類     :ディスク監視
 ・監視リソース    :Qドライブ
 ・クラスターの管理投票:有効
 ------------------------------

8. 汎用アプリケーションの追加

以上でクラスターの準備は整ったので、実際にアプリケーションをクラスター化してみよう。

今回は簡易的なWebサーバとして、MiniWeb HTTP serverをクラスター化してみることにする。

まず、事前準備として、解凍したMiniWeb HTTP serverのフォルダをEドライブ直下に配置し、コマンドプロンプトで使い方を確認しておく。

E:\miniweb>miniweb.exe -h
------------------------------
MiniWeb (build 300, built on Feb 28 2013)
(C)2005-2013 Written by Stanley Huang <stanleyhuangyc@gmail.com>

Usage: miniweb -h | -u  : display this help screen
               -v       : log status/error info
               -p       : specifiy http port [default 8000]
               -r       : specify http document directory [default .]
               -l       : specify log file
               -m       : specifiy max clients [default 32]
               -M       : specifiy max clients per IP
               -n       : disallow multi-part download
               -d       : disallow directory listing [default ON]
------------------------------

ポート番号は80番にしたいので、実行コマンドは以下の通りとなる。

E:\miniweb\miniweb.exe -p 80

「フェールオーバークラスターマネージャー」→「クラスター名」→「役割」を右クリックし、「役割の構成」を選択する。「高可用性ウィザード」が表示されるので、以下のように設定する。

 ------------------------------
 ・役割の選択          :汎用アプリケーション
 ・汎用アプリケーションの設定
  ・コマンドライン       :E:\miniweb\miniweb.exe
  ・パラメーター        :-p 80
 ・クライアントアクセスポイント
  ・名前            :t1192wsfc
  ・アドレス          :192.168.11.192
 ・記憶域の選択         :Eドライブを割り当て
 ・レジストリ設定のレプリケート :設定なし
 ------------------------------


上記を設定し、構成を終えると最後にレポートが表示される。以下2つの警告が表示されるが、フェールオーバー可能であり、動作には影響なさそうだった。

 ・この役割をサポートしているリソースの種類があるノードは t1121w12r のみです。
 ・この役割をホストできないノードは t1122w12r です。


これでMiniWeb HTTP serverがクラスターに組み込まれた。試しに適当なHTMLファイル(タイトルとブラウザのUser-agentを表示するだけ)を配置して、ブラウザでクラスター用IPアドレス(192.168.11.192)にアクセスすると、正常にHTMLが表示された。


9. フェールオーバーの動作確認

動作確認のため、実際にフェールオーバーさせてみよう。タスクマネージャーから、miniweb.exeを終了させればよい。なお、1回は再起動を試みて復活するので、2回終了させるとフェールオーバーする。

以下は切り替わり後の状態となるが、所有者ノードがt1122w12rになっていることがわかる。当然、Webサーバにも問題なくアクセスできた。


以上でクラスターの構成は終了となる。実際は細かい設定(エラー時の再起動の試行回数や、各クラスターリソースの依存関係の設定)など、いろいろチューニングする要素はあるものの、比較的少ない手順でクラスターを組むことができた。

参考

・MiniWeb HTTP server
https://sourceforge.net/projects/miniweb/