Denali CTP3 の AlwaysOn SQL Server Failover Cluster Instances ではマルチネットフェールオーバークラスターが構築できるようになっています。
今回はマルチサブネットフェールオーバークラスターについてまとめてみたいと思います。
参考になる技術情報はこちらです。
Availability Enhancements (Database Engine)
SQL Server Mutli-Subnet Failover Cluster Configuration
■マルチサブネットフェールオーバークラスターの構築
それではマルチサブネットフェールオーバークラスターを構築してみたいと思います。
ベースとなる環境は以前作成したマルチサイトクラスターの環境を使用しています。
まずは CLUSTER-01 でセットアップを行います。
- セットアップを実行して、[SQL Server フェールオーバー クラスターの新規インストール] をクリックします。
- [OK] をクリックします。
- [次へ] をクリックします。
- [ライセンス条項に同意する。] を有効にして、[次へ] をクリックします。
- [次へ] をクリックします。
# 今回の環境はインターネットに接続していないため、アップデートの確認ができません。 - [次へ] をクリックします。
- [次へ] をクリックします。
- インストールする機能を選択して、[次へ] をクリックします。
- [次へ] をクリックします。
# .NET Framework 3.5 SP1 は事前にインストール済みです。 - インスタンスの情報を入力して、[次へ] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
今回は共有フォルダを使用したクラスターで作成してみたいと思います。 - SQL Server のクラスターで使用する IP アドレスを入力して、[次へ] をクリックします。
CLUSTER-01 で使用しているサブネットに対して IP アドレスを設定します。WSFC を組んでいる場合、IP アドレスには各ノードのサブネットが表示されます。
CLUSTER-02 で使用しているサブネットに対して、IP を設定しようとするとインストーラーを起動している CLUSTER-01 で使用しているサブネットでは使えない IP アドレスであるためエラーとなってしまいます。 - サーバーの構成を設定して [次へ] をクリックします。
今回は共有フォルダを使用したクラスターを構築するため、サービスアカウントはドメインユーザーにしています。 - データベースエンジンの構成を設定して [次へ] をクリックします。
今回はデータ ディレクトリんは共有フォルダを指定しています。 - [次へ] をクリックします。
- [次へ] をクリックします。
- [インストール] をクリックします。
- [閉じる] をクリックします。
最初のノードに対してのインストールは以上で完了です。
続いて待機系ノードのインストールを行います。
- セットアップを実行して、[SQL Server フェールオーバー クラスターにノードを追加します] をクリックします。
- [OK] をクリックします。
- [次へ] をクリックします。
- [ライセンス条項に同意する。] を有効にし、[次へ] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
- CLUSTER-02 で使用する SQL Server の仮想 IP アドレスを設定して、[次へ] をクリックします。
次へを押したタイミングでマルチサブネットクラスターとしての情報がメッセージボックスに表示されます。 - アカウントの情報を設定して、[次へ] をクリックします。
- [次へ] をクリックします。
- [次へ] をクリックします。
- [インストール] をクリックしてインストールを開始します。
- [閉じる] をクリックします。
以上で、マルチサブネットフェールオーバークラスターの基本的な構築は完了です。
WSFC のマルチサイトクラスターと同様に IP アドレスをネットワーク名の OR の依存関係で使用することでマルチサブネットフェールオーバークラスターは実装されています。
■DNS 関連の設定
SQL Server Mutli-Subnet Failover Cluster Configuration
に以下の記載があります。
To minimize the client downtime, we recommend setting the HostRecordTTL to 60 seconds for most multi-subnet clustering environment. For information on setting the HostRecordTTL, see Configure DNS settings in a Multi-Site Failover Cluster, and DNS Registration with Network Name Resource.
仮想コンピューター名の DNS の A レコードの TTL ですがデフォルトでは 20 分に設定がされています。
60 秒が推奨とのことですので以下のコマンドをクラスターのノードで実行して TTL を 60 秒に変更します。
変更後リソースを一度オフライン→オンラインにして設定を反映させます。
# IP アドレスのリソースをオフライン→オンラインにしないと DNS のレコードの再設定が行われないようでした。
以上でマルチサブネットフェールオーバークラスターの設定は完了です。
■使用する SQL Serve Native Client のバージョン
アプリケーションが使用する SQL Server Native Client のバージョンにも少し注意が必要となりそうです。
以下は SQL Server 2008 R2 SP1 Feature Pack の SQL Server Native Client をインストールした環境のデータソースの設定画面になります。
こちらが Denali の SQL Server Native Client の設定になります。
Denali の Native Client では、AlwaysOn Availability Groups のセカンダリレプリカへの接続の設定である、[アプリケーションの目的] と AlwaysOn SQL Server Failover Cluster Instances のマルチサブネットフェールオーバークラスターの設定である、[マルチサブネット フェールオーバー] が追加されています。
# Denali の SQL Server Native Client では接続文字列に [MultiSubnetFailover] が追加されています。
Using Connection String Keywords with SQL Server Native Client
SQL Server 2008 R2 の SQL Server Native Client でも AlwaysOn に接続することは可能ですが、最適な状態で接続をするためには、Denali の SQL Server Native Client を使用する必要がありそうですね。
実運用の環境では SAN のレプリケーション機能を使用して以下のような構成で組むことになるのかと。
# この辺の構成は海外で SQL Server 2008 R2 を使用して構築した際の情報がちらほらあります。
SQL Server の災害対策サイトを構築する際の構成として、今まではミラーリングやログ配布で災害対策サイトにデータを保管するということが多かったと思いますが、次のバージョンではマルチサブネットフェールオーバークラスターを組むという案件も出てくるのかもしれないですね。