Windows Server 2008 R2 でのフェールオーバークラスター(WSFC) 実践めも その3

Windows Server 2008 R2 でのフェールオーバークラスターについて学びなおしたので、
整理してメモしておく。
目次は以下の通り。
 0.概要
 1.物理設計
 2.論理設計
 3.運用管理

【0.概要】

物理面

複数のノードからなる。
ホットスタンバイ構成であり、基本は1ノードのみアクティブで残りのノードはパッシブである。
(もちろん、クラスター関連モジュールは全ノードで常に動作している。各ノードは、ローカルのレジストリクラスタ構成データベース(CLUSDB)を持っており、常に同期をとっている)
ただし、どのノードで動作するかはグループ単位で決まるため、複数ノードがアクティブ状態になることもある。
また、共有ストレージやIPアドレスなどのリソースについても、グループ単位で割り当てる。
死活監視はノードレベル(ハートビート(UDPユニキャスト、ポート:3343))とリソースレベル(リソースDLL)で行われる。

クラスタのカテゴリ
  • シェアード デバイス クラスタ:ディスク自体には同時アクセス可。データの整合性確保の仕組みが必要⇒オーバーヘッド。
  • シェアード ナッシング クラスタ:ディスク自体に同時アクセス不可。ディスクレベルで所有権切替。

Windows Server 2008 R2クラスタは、「シェアード ナッシング クラスタ」。
ディスクの所有権をもっているノードが、そのディスクに紐づくグループを動作させる。

論理面

複数のグループ(≒サービス)からなる。
グループには複数のリソース(IPアドレスリソースやディスクリソースなど)が所属する。

クォーラムモード

以下の4つのモードがある。

  • ノードマジョリティ(ノード数が奇数の場合のデフォルト)
  • ノードおよびディスクマジョリティ(ノード数が偶数の場合のデフォルト)⇒この場合のみクォーラムディスク(Witness Disk)を用いる
  • ノードおよびファイル共有マジョリティ
  • マジョリティなし:ディスクのみ

【1.物理設計】

一般的な構成

  • ノード数:2 (※一般的には、2ノードで稼働率99.99%」を達成できるため。「99.999%」を達成するためにはノードを増やす必要がある)
  • ノード間のネットワーク、共有ディスクへのパスを2重化(※ネットワーク機器は(サーバと違って)可用性がかなり高いので、2重にすれば99.999…になる)
  • 電源装置の2重化
  • 共有ディスクは、ベーシックディスク(ダイナミックディスク未対応のため)、FC-SAN接続、RAID10で構成
  • フェールバックしない
  • IPアドレスは(DHCPではなく)手動設定

なお、災害対策も視野に入れるなら、マルチサイトクラスタを検討する。

マルチサイトクラスタ

一つのグループに複数のIPアドレスリソースをORで登録することで実現。
ディスクは拠点毎に配置し、レプリケーションを行う。
クォーラムモードは「ノードおよびファイル共有マジョリティ」にし、各拠点には均一にノードを配置し、第3の拠点に監視用ファイル共有を配置する。

【2.論理設計】
以下、論理設計項目を列挙する。

クラスタ

グループ

全般(プロパティ)
  • 名前
  • 優先所有者(デフォルト:ランダム):フェールオーバー先が複数ある場合の行き先ノードの優先順
  • 永続的なモードを有効にする(デフォルト:OFF):前回クラスター停止時に動作していたノードで(なるべく)起動する
  • 自動開始(デフォルト:ON):クラスターサービス起動時に自動的にこのグループを起動するか
フェールオーバー(プロパティ)
  • 指定した期間内の最大エラー数(デフォルト:ノード数-1):このグループの不具合時、この指定回数分の再起動またはフェールオーバーを試みる
  • 期間(時間)(デフォルト:6):(上記の期間を指定)
  • フェールバックを許可する(デフォルト:禁止):上記で設定した最優先所有者が復活した際に、動作ノードをそちらに戻す場合はONにする
  • フェールバックのタイミング(デフォルト:今すぐ):今すぐ OR 時間帯指定

リソース

全般(プロパティ)
  • リソース名
  • (その他、リソース毎の独自設定)
依存関係(プロパティ)
  • リソース間の依存関係を定義する。ANDかORで指定できる。オンライン-オフライン切替時に、依存関係を考慮して切替順番が決定される。また、リソース間のバインディングの定義でもある。
ポリシー(プロパティ)
詳細なポリシー(プロパティ)
  • 実行可能な所有者(デフォルト:全ノード):このリソースを実行可能なノードを指定する
  • 基本的なリソース正常性チェックの間隔(デフォルト:リソースの種類間隔)
  • 完全なリソース正常性チェックの間隔(デフォルト:リソースの種類間隔)
  • このリソースを別のリソースモニターで実行する(デフォルト:OFF):(基本的には2つのリソースモニタープロセスでリソースの死活監視をしているが、)このリソース専用に第3のリソースモニタープロセスを立ち上げて監視する場合は設定する

※リソースの死活監視は以下の構成で実施される。

リソース コントロール マネージャー⇔リソースホストサブシステム(リソースモニター(rhs.exe))⇔リソースDLL⇔リソース

リソースDLLは、リソース毎に独自のステータスチェック方法を定義したプログラムである。
なお、クラスター未対応のリソース(特定のミドルウェア製品など)については、リソースDLLを自作するか、プロセス有無での判定のみとする(=汎用アプリとして登録する)しかない。

【3.運用管理】

管理ツール

GUI
  • フェールオーバー クラスター マネージャー
コマンド
  • Cluster.exe
    • group グループ一覧
    • resource リソース一覧
    • /prop 各種設定の確認および設定
    • group /moveto 手動フェールオーバー(※既定のグループ(「クラスター グループ」、「使用可能記憶域」)の移動はGUIからはできない(Windows Server 2012 では可能))
  • PowerShellのモジュール「FailoverClusters」

ログ

概要ログ

イベントビューアで以下を確認できる

  • 重大、エラー、警告ログ:システムログ(FailoverClusteringで絞ると見易い)に記録される
  • 情報:アプリケーションとサービスログに記録される

ただし、ログは、そのイベントが起こったノードのローカルにしか記録されていないため、イベントビューアで参照した場合は、そのノードで起こったイベントのログしか確認できない。
そこで、
フェールオーバー クラスター マネージャー>クラスターイベント>クエリー を用いれば、選択した全てのノードのログを収集して参照できる。

詳細ログ

以下の通り、イベントトレース ログが出力されている。

(※上記パスは、パフォーマンスモニタ>データコレクタセット>システム>イベントトレースセッション>EventLog-Microsoft-Windows-FailoverClustering-Diagnostic のプロパティで確認できる)

  • ログサイズ:100MB(デフォルト)
  • ログファイルの世代:3世代(001〜003)
  • ログレベル:6段階(0〜5)(デフォルトは3)

バイナリファイルであるため、以下の方法で変換して参照する。

  • Tracerpt.exe を用いて、イベントビューアで参照できる形式で出力
tracerpt -lr <ログファイル名> -o <出力ファイル名> -of <出力形式(evtx など)>
cluster [クラスタ名] log /gen /copy

各種レポート

  • %windir%\Windows\Cluster\Reports 配下

バックアップ

ポイントは以下の通り。

バックアップ
  • バックアップは全ノードで取得する必要がある
  • システム状態のバックアップが必要
復元
  • 権限のない復元(Non-authoritative Restore):1つのノードのみを復元。クラスタに復帰後、他のノードから最新の情報を受け取る
  • 権限のある復元(Authoritative Restore):全ノードを復元。全ノードのクラスタを停止後、復元操作をするノードで復元、クラスタサービスを再開すると、他のノードへ復元内容を送信する