2013/07/25

Windows Server 2012 R2 Preview > Linux 仮想マシンでフェールオーバー TCP/IP (NG)

Windows Server 2012 R2 Preview > Linux ゲスト サポートに関する情報』(2013/7/25) でお伝えしたように、今月上旬にリリースされた SUSE Linux Enterprise Server (SLES) 11 SP3 には、Hyper-V 対応の最新の Linux Integration Services (LIS) がビルトインされていて、これまで Linux ゲストで利用できなかった動的メモリやライブ バックアップに対応しました。

SLES 11 SP3 のリリース ノートによると、KVP (Key Value Pair) データ交換サービスに GET/SET IP アドレスの機能が実装されたみたいに書いています。Hyper-V レプリカのフェールオーバー TCP/IP に対応したもののようです。試してみました。


Release Notes for SUSE Linux Enterprise Server 11 Service Pack 3 (SP3)
[URL] https://www.suse.com/releasenotes/x86_64/SUSE-SLES/11-SP3/


"12.5.5 Hyper-V: KVP IP Injection
Hyper-V now supports the KVP (Key Value Pair) functionality to implement the mechanism to GET/SET IP addresses in the guest. This functionality is used in Windows Server 2012 to implement VM replication functionality."


プライマリ仮想マシンの設定はこうです。IP アドレスは 192.168.10.91 の固定。

レプリカ仮想マシンでフェールオーバー TCP/IP を設定します。フェールオーバー時、192.168.20.91 に書き換えるように設定します。ゲストがネットワーク インターフェイスを見失わないように、MAC アドレスは静的に固定割り当てし、レプリカとプライマリで同じにしました。
フェイルオーバーを実行...

だめでした。IP アドレスは上書きされません。
ホスト側のイベントログにもエラーが...

IP アドレスの設定に関係してそうな /usr/lib/hyper-v/bin/hv_set_ifconfig スクリプトの中身をのぞいて見ました。また、インターネット上にある hv_kvp_daemon.c のソース コードも見てみました。/usr/sbin/hv_kvp_daemon は SET IP 要求に対して、このスクリプトの引数に構成ファイルを付けて呼び出すようです。

ここからは想像です。

この機能はどうやらフェールオーバー時のネットワーク インターフェイスの違い (MAC アドレスの違い、デバイス名 ethX の違い) を利用して、IP 構成の存在しないネットワークの出現を KVP デーモンが検出し、外部スクリプト (hv_set_ifconfig <構成ファイル>) でフェールオーバー用の IP 設定を行うようになっているみたいです。構成ファイルを事前に仕込んでおく必要があるのかは、レプリカ仮想マシンのフェールオーバー TCP/IP の設定に基づいて自動的に作成されるのかはわかりません。

この想像どうりとすれば、私がやった同じ MAC アドレスの静的な固定割り当ては NG ということに。hv_kvp_daemon のソースコード (インターネットを検索すると見つかります) を見ると /var/lib/hyperv の下の ifcfg-<インターフェイス名> を見るようになってそうなので、プライマリ側に事前に配置してみましたがこれも NG でした。ちなみに、構成ファイルをマニュアルで hv_set_ifconfig に指定して実行すると、IP アドレスの構成とインターフェイスのアップができました。




































この機能、SLES 11 SP2 向けの推奨更新 (Recommended update for Hyper-V: "This update to hyper-v adds support for KVP IP injection, a feature to set the clients IP address from the host.
"
) として昨年から実装されているようなのですが、もしかして Windows Server 2012 Hyper-V だとうまくいったりして。(← 7/26 追記: このもしかしてでした!)

想像はここまで。とりあえずこの件は棚上げ。

← Linux 仮想マシンをライブ バックアップLinux 仮想マシンでフェールオーバー TCP/IP (OK) →

0 件のコメント: