製品コラム

セイテクエンジニアのブログ  製品コラム  カスタム監視でフェールオーバークラスターの監視を強化-BOM for Windows活用例

 

 

カスタム監視でフェールオーバークラスターの監視を強化-BOM for Windows活用例

2024年11月13日配信
執筆者:セイ・テクノロジーズ エバンジェリスト

 かつて山市良と呼ばれていたおじさんのブログの最近の記事「メモ. 意外と簡単?Hyper-Vホストクラスターの構築と管理」では、Hyper-Vホストクラスターの簡単な構築方法を紹介しています。Hyper-Vホストクラスターは、Windows Serverのフェールオーバークラスタリング機能を用いてフェールオーバークラスターを構築し、Hyper-V仮想マシン(VM)をクラスター化して可用性を高める方法です。

 「BOM for Windows Ver.8.0 SR1」(以下、BOM)には、フェールオーバークラスター(Hyper-Vホストクラスターに限定されません)の監視に対応した監視テンプレートが同梱されています。標準のテンプレートにカスタム監視を追加して、さらに監視を強化する方法を紹介します。

インポートするだけですぐに監視を開始できる監視テンプレート

 

 BOMには、Windows Server 2016以降のフェールオーバークラスターの監視に対応した監視テンプレート(MSFC_*)が同梱されており、これをBOMサーバーにインポートするだけですぐにクラスターの監視を開始することができます(画面1)。監視テンプレートには、Cluster Serviceのサービス監視、フェールオーバークラスタリング機能に関連するイベントログ監視、クラスター対応更新(CAU)のイベントログ監視、リソース失敗やハートビートを監視するためのパフォーマンスカウンター監視などが定義済みとなっており、監視間隔やログの指定、しきい値の設定などせずに、詳しい知識がなくても、高品質な監視が可能です。もちろん、監視間隔やしきい値のカスタマイズも可能です

 

画面1
画面1 フェールオーバークラスターのノードとなっているWindows Serverは、フェールオーバークラスター対応の監視テンプレートをインポートすることで、クラスター環境を効果的に監視できる

 

FailoverClusters PowerShellモジュールで取得した情報をBOMに取り込む

 

 フェールオーバークラスターの各ノードには、フェールオーバークラスタリング機能とともにWindows PowerShellの「FailoverClusters」モジュールがインストールされ、使用可能です。FailoverClustersモジュールのコマンドレットを使用すると、フェールオーバークラスターのノードやリソース、ネットワーク、ストレージに関するさまざまなステータス情報を取得することができます。例えば、「Get-ClusterNode」「Get-ClusterResource」「Get-ClusterNetwork」コマンドレットは、それぞれノードの状態、クラスターリソースの状態、クラスターネットワークの状態を提供します(画面2)。

 

FailoverClusters|Windows PowerShell(Microsoft Learn)

 

画面2
画面2 ステータス情報を返すFailoverClustersモジュールのコマンドレット

 以下は「Get-ClusterNode」「Get-ClusterResource」「Get-ClusterNetwork」の各コマンドレットが返す情報を数値化するPowerShellスクリプトです。

 「downnodes.ps1」はクラスター(クラスターのノードで実行することが前提)に含まれるノードの数と、稼働中(UP)の状態のノード数を調べ、その差、つまり現在ダウンしているノード数を返します。0であれば正常、1以上であればその数だけノードがダウンしていることになります。クラスターに接続できない場合(Get-ClusterNodeがエラーを返す場合)は、-1を返します。BOMは、値-1を失敗(N/A)として扱います。

[downnodes.ps1]プレーンテキストで表示

$totalnodes = 0
$upnodes = 0
$nodes = (Get-ClusterNode -ErrorAction SilentlyContinue)
if($nodes -eq $null) {
  return -1
} else {
  $totalnodes = $nodes.Count
  foreach ($node in $nodes) {
    if ($node.State -eq "Up") {
      $upnodes++
    }
  }
  return $totalnodes - $upnodes
}

 

 「downresources.ps1」はクラスター(クラスターのノードで実行することが前提)に存在するすべてのクラスターリソースの数と、現在オンライン(Online)になっているクラスターリソースの数を調べ、その差を返します。なお、クラスターリソースは常にすべてがオンラインなわけではないことに注意してください。フェールオーバークラスターには、必要時にのみオンラインになるリソースもいくつか存在します。そのため正常時でも結果は1以上の数を返す場合があります。通常稼働時にオンラインになっているリソースの数を把握し、しきい値を決定してください。このスクリプトも、クラスターに接続できないは、-1を返します。

[downresources.ps1]プレーンテキストで表示

$totalresources = 0
$onlineresources = 0
$resources = (Get-ClusterResource -ErrorAction SilentlyContinue)
if($resources -eq $null) {
  return -1
} else {
  $totalresources = $resources.Count
  foreach ($resource in $resources) {
    if ($resource.State -eq "Online") {
      $onlineresources++
    }
  }
  return $totalresources - $onlineresources
}

 

 「downnet.ps1」はクラスター(クラスターのノードで実行することが前提)に存在するすべてのクラスターネットワークの数と、現在稼働中(UP)になっている数を調べ、その差を返します。0であれば正常、1以上であれば何らかの問題が発生していることになります。このスクリプトも、クラスターに接続できない場合は、-1を返します。

[downnet.ps1]プレーンテキストで表示

$totalnets = 0
$upnets = 0
$nets = (Get-ClusterNetwork -ErrorAction SilentlyContinue)
if($nets -eq $null) {
  return -1
} else {
  $totalnets = $nets.Count
  foreach ($net in $nets) {
    if ($net.State -eq "Up") {
      $upnets++
    }
  }
  return $totalnets - $upnets
}

 

 このPowerShellスクリプトを、BOMがインストールされているフェールオーバークラスターのノードのローカルパスに保存し、各スクリプトに対応した「カスタム監視」を追加します。各監視設定のプロパティでは、「設定」タブのプログラム名に「powershell.exe」と入力し、引数にスクリプトのパスを入力します(画面3)。あとは、監視間隔としきい値を環境に合わせて調整すれば監視設定は完了です。例えば平常時にオフラインのクラスターリソースが2つある場合は、「downresources.ps1」の値「2」をしきい値にするなどです。これらのカスタム監視を追加すると、「BOMマネージャー」上でクラスターの現在の状態をより把握しやすくなるでしょう(画面4)。

画面3
画面3 PowerShellスクリプトをカスタム監視設定で定期的に実行するように構成する

 

画面4
画面4 ノードの1つを一時停止すると、カスタム監視設定の1つ(downnodes.ps1)のステータスが「注意」に変化

 BOMによるHyper-Vホストクラスターの監視については、以下の記事もご覧ください。

記憶域スペースダイレクト(S2D)の容量と障害を監視する-BOM for Windows活用例

 

blog_column_subscribe

blog_column_comment

最新記事