Hyper-V レプリカ機能のフェールオーバーとレプリケーションの反転 (計画外フェールオーバー編)

こんにちは、Windows プラットフォーム サポートの鎌滝です。
今回は、Hyper-V レプリカ機能のフェールオーバーとレプリケーションの反転についてご紹介いたします。

最近、お問い合わせをいただく中で、フェールオーバーは実施されたものの、レプリケーションの反転が行われていない状況を
多数お伺いすることが多いため、本ブログでは、"フェールオーバー" だけでなく、"レプリケーションの反転" についても、
あわせてご紹介させていただきます。

Hyper-V レプリカは、Windows Server 2012 以降の Hyper-V 環境で利用可能となった仮想マシンのレプリケーション ソリューションです。
定期的に仮想マシンのデータのコピーを別の Hyper-V ホストに送信し、業務提供中の Hyper-V ホスト ( プライマリ サーバー ) が災害などで利用できなくなった場合でも、レプリカ サーバーで複製されたデータを利用して仮想マシンを起動し、業務を継続することができます。

このように、Hyper-V レプリカ機能のフェールオーバーは、主に災害対策などの目的で利用される機能のため、
ホスト OS の障害時に自動でフェールオーバーを実行する機能ではありません。
Hyper-V レプリカ機能のフェールオーバーの実行は、人が判断する必要があります。
 
Hyper-V レプリカのフェールオーバーには "計画フェールオーバー" と計画外の"フェールオーバー" の 2 種類があります。
 

計画フェールオーバー
データセンターの計画停電や物理サーバーのメンテナンスなど、計画されたサーバーの停止時に行われるフェールオーバーで、プライマリ サーバーとレプリカ サーバーのどちらも利用可能な状態で行います。
プライマリ サーバーの最新の状態をレプリカ サーバーに送り、データの損失なくフェールオーバーを行うことが可能です。

計画外フェールオーバー
プライマリ サーバーがダウン状態の際に行われるフェールオーバーで、レプリカ サーバーにすでに送られたデータを利用して行います。Hyper-V レプリカでは、複数の回復ポイントを維持することができます。
フェールオーバーの際、どの回復ポイントを利用するかを選択できますが、選択した回復ポイントから現在にいたるまでにプライマリ サーバーで行われた更新は、レプリカ サーバー側に反映されないため、最新の回復ポイントを選択した場合でも、データの損失が発生します。

 
この 2 種類のフェールオーバーのうち、本ブログでは、計画外フェールオーバーと、それに伴うレプリケーションの反転の
具体的な処理内容についてご紹介いたします。
 
計画フェールオーバーについては、Hyper-V レプリカ機能のフェールオーバーとレプリケーションの反転 ( 計画フェールオーバー編 ) をご参照ください。
 
 


計画外フェールオーバーの処理内容


計画外フェールオーバーは、プライマリ サーバーがダウンした状態で行われることが想定されているため、レプリカ サーバー側から作業を行います。
 
具体的な作業手順については、以下に公開情報がございますので、ご参照ください。
 
手順 5: 計画外のフェールオーバーに対応する
 
計画外のフェールオーバーおよびその反転を GUI から行った場合、PowerShell コマンドレットで行う場合の複数の操作が連続して行われます。
先述の公開情報を参考にした PowerShell コマンドレットによる計画外のフェールオーバーおよびレプリケーションの反転の操作は、以下の通りです。
ここでは説明のためにコマンドの順番を入れ替えておりますが、PowerShell コマンドレットで実行する場合でも、以下の順番で実行いただいても問題はありません。
 
 
(1) 計画外フェールオーバーの実行

Start-VMFailover -VMName $VMName -ComputerName $Replic

(2) 仮想マシンの起動

Start-VM -VMName $VMName -ComputerName $Replica

(3) フェールオーバーの完了

Complete-VMFailover -VMName $VMName -ComputerName $Replica

 
以下は、プライマリ サーバーの復旧後に実施
 
(4) レプリカ モードの反転 (プライマリ サーバー)

Set-VMReplication -VMName $VMName -AsReplica -ComputerName $Primary

(5) レプリケーションの反転

Set-VMReplication -VMName $VMName -Reverse -ReplicaServerName $Primary -ComputerName $Replica

(6) レプリケーションの再開

Start-VMInitialReplication -VMName $VMName -ComputerName $Replica

※ 変数はそれぞれ以下の値を設定します。
 $VMName = フェールオーバー対象の VM 名
 $Primary = プライマリ サーバー名
 $Replica = レプリカ サーバー名

 
 
本操作を GUI で行った場合、レプリカ サーバーにて仮想マシンの右クリックのレプリケーション メニューから、"フェールオーバー" を実行すると、PowerShell コマンドレットの場合の (1) (2) が実行されます。
この時点では、まだ "フェールオーバー" が完了していないため、メニューから "フェールオーバーの取り消し" を実施することができます。
 
しかし、PowerShell コマンドレットの (3) もしくは GUI 操作の "回復ポイントの削除" を実行することで、レプリカ サーバー側で業務提供することが決定されたことになり、フェールオーバーの取り消しを行うことができなくなります。
 
また、フェールオーバー後、レプリケーションの反転を GUI から行った場合、(3) - (6) の操作が実施されます。
このときの注意点として、本操作は 1 つの GUI 操作にて複数の処理を実施する操作であるため、なんらかの原因でレプリケーションの反転に失敗した場合においても、いくつかの操作がすでに実行されている場合があります。
本操作の失敗時には、レプリケーションの反転ウィザードを "キャンセル" する必要がありますが、すでに一部の処理が実行されているため、その後にフェールオーバーの取り消しなどを行った場合でも、レプリケーションの開始に失敗します。
まずは、レプリケーションの反転が失敗した要因を解消してから、再度レプリケーションの反転を行ってください。

これらの操作がすべて完了した時点で、プライマリ サーバーとレプリカ サーバーの役割が入れ替わります。
再度、プライマリ サーバーとレプリカ サーバーの役割を反転させるためには、計画フェールオーバーを実施する必要があります。
計画フェールオーバーについては、Hyper-V レプリカ機能のフェールオーバーとレプリケーションの反転 ( 計画フェールオーバー編 ) にて紹介しておりますので、こちらもご参考としていただければ幸いです。
 
 


まとめ


Hyper-V レプリカのフェールオーバーには、"計画フェールオーバー" と計画外の "フェールオーバー" の 2 種類あり、それぞれの役割や操作手順が異なります。
Hyper-V レプリカの利用を検討する際には、計画フェールオーバー、および計画外フェールオーバーを利用する状況や手順だけでなく、フェールオーバーの反転を行う手順、再フェールオーバーによる切り戻しの手順も併せてご検討ください。
また、フェールオーバーの実行とレプリケーションの反転をそれぞれ PowerShell コマンドレットと GUI 操作を併用して行う運用を計画をされている場合は、実行される操作の対応をご確認ください。
 
 
本ブログが少しでも皆様のお役に立てば幸いです。