ここから本文です

Hyper-Vホストクラスタの新機能とは

@IT 7月25日(月)6時10分配信

●ありそうでなかった機能、仮想マシンの開始順序の制御

 Windows Server 2016 Technical Preview 5(TP5)のフェイルオーバークラスタリング機能には、「仮想マシンの開始順序(Virtual Machine Start Order)」という新機能が追加されました。これは、Hyper-Vホストクラスタ上で稼働する仮想マシンや仮想マシンのグループを、あらかじめ定義しておいた依存関係に基づいて順番に開始できるというオーケストレーション機能です。

【図解】アプリ層の仮想マシンが開始するように構成する仕組み

 これまで、クラスタ化されていないHyper-Vホストでは、仮想マシンごとに「自動開始アクション」の設定で「自動起動待ち時間」を構成することができました。これは、物理コンピュータの起動時に仮想マシンを自動開始させる場合、仮想マシン間のリソースの競合を減らす目的で行う調整です。クラスタ化されたHyper-Vホストクラスでは、クラスタサービスの開始時に仮想マシンを自動的にオンラインにする(開始する)か、しないかを選択できるだけでした。

 そのため、依存関係にある仮想マシンを適切な順番で開始するためには、Hyper-VやHyper-Vホストクラスタの仮想マシンの自動開始機能をオフにして、適切な順序で手動で開始するか、あるいはスクリプトを記述して自動化するなどの運用で対処する必要がありました。あるいは、System Center OrchestratorのRunbookを利用して自動化するという方法もあります。

 Windows Server 2016では、標準機能として新たに「仮想マシンの開始順序」が利用可能になることで、大規模なHyper-Vホストクラスタ上に展開した多階層アプリケーションを効率よく開始できそうです。ただし、筆者が実際に検証してみた限りでは、これはオフライン状態のシステムを開始する際に利用できるものであり、障害発生時のフェイルオーバー時には考慮されないのではないかと思います。その点には留意してください。

 多階層アプリケーション全体のフェイルオーバーについては、「Microsoft Azure Site Recovery」を利用したオンプレミスの2つのサイト間、またはオンプレミスとAzure間のフェイルオーバーの利用をお勧めします。Azure Site Recoveryでは「復旧計画」を事前に定義しておくことで、仮想マシンや仮想マシンのグループを適切な順番で開始したり、スクリプトの自動実行などの追加のタスクを組み込んだりすることができます。

●Windows PowerShellで依存関係を構成する

 Windows Server 2016 TP5では、「仮想マシンの開始順序」の設定は、全て「New-ClusterGroupSet」「Add-ClusterGroupToSet」「Add-ClusterGroupSetDependency」「Add-ClusterGroupDependency」などのWindows PowerShellコマンドレットで構成する必要があります。GUI管理ツールの「フェイルオーバークラスターマネージャー」は、この機能に対応したものは用意されていません。

 現時点で、この機能に関して公開されている情報は極めて少ないため、試行錯誤して何とか構成してみました。結論から言うと、“何となく”動作させることはできました。しかし、仮想マシンと仮想マシングループの使い分けの分かりにくさ、コマンドレットの不具合と思われる挙動があり、まだまだ開発途上の機能という感じでした。今後、コマンドレット名やパラメータが変更される可能性も高いため、以降は「こんなことができるようになるんだ」という参考程度に見てください。

 今回は、以下の画面1に示す5つの仮想マシンをHyper-Vホストクラスタ上に作成し、図1のような3階層のシステムとして構成します。ただし、仮想マシンの中身は全てOSをインストールしただけのダミーであり、実際のアプリケーションやビジネスロジック、データベースなどは存在しません。

 この構成でアプリ層の仮想マシンを開始すれば、依存関係にあるデータベース層グループ(DbTier)、ミドル層グループ(MidTier)の順番で仮想マシンが自動的に開始するように設定することを目指します。

 本当ならば、アプリ層もグループ化(多重化)したかったのですが、依存関係の最上位は単一の仮想マシンでないとうまく構成できませんでした。筆者の工夫が足りなかったのかもしれませんし、現状では、そのような仕様なのかもしれません。

 試行錯誤の結果、Windows PowerShellコマンドレットで、次のように構成することができました(画面2)。

$cim = New-CimSession cluster01
New-ClusterGroupSet -Name MidTier -CimSession $cim
New-ClusterGroupSet -Name DbTier -CimSession $cim
Add-ClusterGroupToSet -Name MidTier -Group havm01 -CimSession $Cim
Add-ClusterGroupToSet -Name MidTier -Group havm02 -CimSession $cim
Add-ClusterGroupToSet -Name DbTier -Group havm-db01 -CimSession $Cim
Add-ClusterGroupToSet -Name DbTier -Group havm-db02 -CimSession $Cim
Add-ClusterGroupSetDependency -Name MidTier -ProviderSet DbTier -CimSession $cim
Add-ClusterGroupDependency -Name havm-myapp -ProviderSet MidTier -CimSession $cim

 仮想マシンのグループ(ClusterGroupSet)を作成するには「New-ClusterGroupSet」コマンドレットを使用し、「Add-ClusterGroupToSet」コマンドレットでグループ(ClusterGroupSet)に仮想マシンを追加します。また、仮想マシンのグループ(ClusterGroupSet)間の依存関係は、「Add-ClusterGroupSetDependency」コマンドレットで定義します。さらに、単一の仮想マシンと仮想マシングループ(ClusterGroupSet)の依存関係は、「Add-ClusterGroupDependency」コマンドレットで定義します。

 以上のように、現状、Windows PowerShellコマンドレットの使い分けもパラメータも、非常に分かりにくいという印象です。2016年9月末に予定されている正式リリース版では、この辺りが改善されることを期待しています。なお、改善に伴い、この構成方法は大きく変更される可能性もありますので、本稿の構成例は参考程度にしてください。

●依存関係の最上位の仮想マシンを開始すると……

 Windows PowerShellコマンドレットで依存関係を定義したら、依存関係の最上位としたアプリ層の仮想マシン「havm-myapp」だけを開始します。すると、開始した仮想マシン「havm-myapp」は“オフ状態”のまま、データベース層グループ「DbTier」に追加した「havm-db01」と「havm-db02」が開始中になって、その後、実行中となりました(画面3)。

 続いて、「DbTier」に依存するミドル層グループ「MidTier」の仮想マシン「havm01」と「havm02」が開始中、実行中となりました。ただし、「MidTier」の仮想マシンが開始中の状態で、既に依存関係の最上位とした「havm-myapp」が開始中となり、実行中の状態になってしまいました(画面4)。

 この動作には疑問が残りますが、開発途中の機能ということですので、よしとしましょう。恐らく、2段階の依存関係に対応しきれていないのだと思います。こちらも正式リリースまでに改善されることを期待しましょう。

●定義済みの依存関係を確認するには

 GUI管理ツール「フェイルオーバークラスターマネージャー」には、依存関係レポートを作成する機能がありますが、現状、これには「仮想マシンの開始順序」の依存関係は含まれません。

 仮想マシンのグループと、定義済みの依存関係を確認するには、「Get-ClusterGroupSet」および「Get-ClusterGroupSetDependency」コマンドレットを使用します。仮想マシングループと単一の仮想マシンの依存関係については、「ClusterGroupDependency」コマンドレットで確認できるはずでしたが、残念ながらパラメータがエラーとなって確認できませんでした(画面5)。

●筆者紹介 山市良:岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。

最終更新:7月25日(月)6時10分

@IT