Denali ではマルチサブネットクラスターが構築できるようになりました。
その前段として Windows Server 2008 R2 を使用してマルチサイトクラスターの構築を軽くまとめてみたいと思います。
マルチサイトクラスターに関しての参考情報は以下になります。
ステップ バイ ステップ ガイド – フェールオーバー クラスタ : フェールオーバー クラスタ用ハードウェアを検証する
ルーティングされる複数のサブネットに Windows Server 2008 のフェールオーバー クラスタ ノードを展開する際の注意事項
Multi-Site Clustering with Windows Server 2008 Enterprise
Disaster Recovery Cluster Deployment & Demo – Multi-Site Failover Clustering
■ベース環境の構築
マルチサイトクラスターを設定する場合は拠点間のサーバーでクラスターを組むことになると思います。
# ジオクラスターのシナリオで使うことになるかと。
クラスターを構築するために両サーバーとも AD に参加している状態です。
■マルチサイトクラスターの構築
それではマルチサイトクラスターを構築してみたいと思います。
マルチサイトクラスターですがクラスターの構築は同一サブネット上のクラスターとさほど変わりません。
マルチサイトクラスターの場合、拠点間のサーバーでクラスターを組むため共有ディスクは使用せずにストレージのレプリケーション等で、各ノードに接続しているディスクのデータ同期をしクラスターを使用することがあるかもしれません。
そのような場合は、すべてのテストを実施するのではなく、[記憶域] を外してテストを実施したほうが良いかもしれないですね。
検証が終了したら先に進めます。
マルチサイトクラスターの場合、クラスター名を設定する際に各サブネットの IP に対してクラスターの仮想 IP を設定することができます。
# 複数の NIC を接続していて、各 NIC に異なるサブネットを設定している場合と同様の設定ですね。
ここで指定した IP アドレスが各拠点のノードにフェールオーバーした際に使用される仮想 IP アドレスとなります。
クラスターが構築された後のクラスター コア リソースの状態は以下のようになります。
現在は CLUSTER-01 がクラスター コア リソースを所有しているため、CLUSTER-01 の IP で使用しているネットワークである 192.168.150.120 の IP アドレスがオンラインの状態となっています。
CLUSTER-02 にリソースを移動すると以下のようになります。
マルチサイトクラスターの場合、リソースを所有しているノードのネットワークに適した IP アドレスがオンラインになります。
このように柔軟に適切な IP アドレスのリソースをオンラインにできる仕組みですが、依存関係の [OR] を使用することで実装されています。
仮想 IP アドレスはクラスター名に関連付いたリソースとなっているのですが、クラスター名のリソースで依存関係は以下のように設定されています。
クラスター名のリソースをオンラインにする場合には、依存関係として設定されている IP アドレスのどちらかがオンラインになっていれば正常に動作する設定となっています。
このような OR の設定は Windows Server 2008 のクラスターから可能になったため、2008 以降でマルチサイトクラスターがサポートされるようになりました。
■マルチサイトクラスターに関してのパラメーター調整
クラスターのネットワーク名で使用している IP アドレスですが DNS に登録が行われます。
デフォルトの設定では以下のように登録が行われます。
リソースを CLUSTER-02 に移動させると以下のように DNS の内容が変更されます。
デフォルトの設定では、オンラインになっている IP アドレスがクラスター名の IP アドレスとして登録がされ、TTL は 20 分として設定されます。
DNS の登録までは多少タイムラグがあるため変更前のレコードで名前解決がされてしまう、TTL が 20 分になっているためレコードが変更されてもキャッシュされた DNS レコードで名前解決されてしまう場合があるかもしれません。
そのため、クラスター名のプライベートプロパティには [HostRecordTTL] と [RegisterAllProvidersIP] の 2 種類の設定が用意されています。
[HostRecordTTL] は DNS 登録時の TTL となります。デフォルトは [1200 秒] となっているため 20 分が設定されます。
この値を変更することで DNS の TTL の調整をすることが可能です。
[RegisterAllProvidersIP] は DNS に登録をする際の IP アドレスとなります。デフォルトは [0] となっているため、オンラインになっている IP アドレスのみが登録されます。
[1] に変更することで、ネットワーク名と依存関係のある IP アドレスを DNS に登録することが可能です。
各プロパティの設定を変更する場合は、以下のようなコマンドを実行します。
cluster res "<ネットワーク名>" /priv HostRecordTTL=<秒数> cluster res "<ネットワーク名>" /priv RegisterAllProvidersIP=<設定> 設定例 |
設定変更後は対象のリソースを一度オフライン→オンラインにする必要があります。
クラスター コア リソースをオフラインにするとクラスターが停止してしまうかもしれないので [cluster group "クラスター グループ" /moveto] でリソースを移動させることでオフライン→オンラインとした方が良いかもしれないです。
クラスター名に依存関係のある IP が登録され、TTL が設定値となっていることが確認できますね。
Denali のマルチサブネットクラスターの場合は、TTL を短くして、両 IP を登録し接続文字列で [MultiSubnetFailover=Yes] を設定するのが良さそうだったりします。
マルチサイトクラスターの設定としては、クラスターのプロパティの [CrossSubnetDelay] や [CrossSubnetThreshold] [SecurityLevel] 等があるようです。
これらの設定に関しては以下のコマンドで確認することが可能です。
cluster /prop |
SQL Server のマルチサブネットクラスターを試す前に少し Windows Server 2008 R2 のマルチサイトクラスターについて少しまとめてみました。