フェールオーバー クラスターの異なるネットワーク セグメント間通信について

こんにちは。Windows プラットフォーム サポートの古谷です。

日々のサポート業務の中で、お問い合わせを頂く内容についてご紹介します。

本日は、フェールオーバー クラスターが行うクラスター ノード間の異なるネットワーク セグメント間通信についてご紹介します。

フェールオーバー クラスターでは、既定でクラスター ノード間で別ネットワーク セグメントが存在する場合、別ネットワーク セグメントに対して定期的に通信 (UDP 3343) を行っております。

【発生する通信】
・UDP 通信
・サービス:ms-cluster-net(3343ポート)

これは、マルチサイト クラスター構成のための重要な通信であり、異なるネットワーク セグメントに対してハートビート通信ができるかルート検出を行う動作となります。

例えば、本動作によりクラスター ノード間で以下の通信が発生します。

フェールオーバー クラスター  2 ノード(WSFC1、WSFC2)環境において、クラスター ノード間に 2 つのネットワークが存在している。

① Public 用ネットワーク(クライアント アクセスポイントが割り当てられたパブリック ネットワーク)
② HeartBeat用ネットワーク (クラスター ノード間を結ぶ Closed なプライベート ネットワーク)

本環境で、WSFC1 の Publicnet から WSFC 2 の HeartBeatnetに対して、また、WSFC2 の Publicnet からWSFC1 の HeartBeatnet に対して UDP 3343 のパケットが送信されます。

パブリック ネットワークにファイアウォール装置が存在する場合は、本通信は検出されます。

PlumbAllCrossSubnetRoutes

ローカルサイト クラスターで本通信の検出を抑止したい場合は、
以下の対処を実施することで対処可能でございます。

==========================================================================
クラスター ノード間で発生する異なるネットワーク セグメント間通信の抑止方法
==========================================================================

異なるネットワークセグメントに対しての UDP 3343 を抑止したい場合は、
クラスターのプロパティ PlumbAllCrossSubnetRoutes により制御可能です。

PlumbAllCrossSubnetRoutes

https://msdn.microsoft.com/ja-jp/windows/jj151934%28v=vs.80%29
このプロパティの値は 0 - 2 がございます。

0 ローカルルートが発見された場合はクロス サブネットルートを検索しない。(既定)

1 必ずサブネットを横断するルートを検索します。

2 ノードが正常に参加した後、クロス サブネットルートを検出する動作を無効にします。

既定は 0 であるため、サービスの起動時にはクロス サブネットのルートは検索されませんが、
ノードが参加した後に、クロス サブネットルートを検出する動きが定期的に発生します。

抑止したい場合は値を 2 に変更していただくことで、クロス サブネットルートを検出する
動作 (UDP 3343) を完全に無効にする必要があります。

UDP 3343 の対処方法
====================

変更方法は以下の PowerShell コマンドを実施します。

[作業対象]
任意のクラスター ノード 1台

1. 管理者権限の PowerShell を起動します。

2. 以下のコマンドで、"PlumbAllCrossSubnetRoutes" の値を確認します。

> Get-Cluster | fl *

3. 以下のコマンドで、"PlumbAllCrossSubnetRoutes" の値を変更します。

> (Get-Cluster). PlumbAllCrossSubnetRoutes = 2

[作業対象]
全クラスター ノード

4. クラスター サービスを再起動します。
<設定変更による影響>
ローカルサイト クラスターの場合、本設定変更により影響などはございません。

本設定変更は、クラスター ノード間で発生する異なるセグメントに対する送信パケット
(ファイアウォールにてブロックされる通信) を無効にしているためです。

以上、どうぞよろしくお願い申し上げます。