Azure Virtual Machines (VM) では、分散ネットワーク名 (DNN) によって、適切なクラスター化されたリソースにトラフィックがルーティングされます。 これにより、仮想ネットワーク名 (VNN) よりも簡単に SQL Server フェールオーバー クラスター インスタンス (FCI) に接続することができます。Azure Load Balancer は必要ありません。
この記事では、DNN リソースを構成して、高可用性とディザスター リカバリー (HADR) のために Azure VM 上の SQL Server を使用するフェールオーバー クラスター インスタンスにトラフィックをルーティングする方法について説明します。
別の接続オプションについては、代わりに 仮想ネットワーク名 (VNN) と Azure Load Balancer を検討してください。
概要
分散ネットワーク名 (DNN) は、SQL Server VM 上の Always On フェールオーバー クラスター インスタンスで使用される場合、接続ポイントとして仮想ネットワーク名 (VNN) を置き換えます。 DNN を構成すると、Azure Load Balancer が VNN にトラフィックをルーティングする必要性が無効になり、デプロイ、メンテナンス、およびフェールオーバーの改善が簡素化されます。
FCI デプロイでは、VNN は引き続き存在しますが、クライアントは VNN 名ではなく DNN DNS 名に接続されます。
ヒント
展開を簡略化し、フェールオーバー クラスター インスタンスに対して Azure Load Balancer または分散ネットワーク名 (DNN) を不要にするには、同じ Azure Virtual Network 内の複数のサブネットに SQL Server Virtual Machines (VM) を作成します。
前提条件
この記事の手順を完了するには、次のものが必要です。
- SQL Server (SQL Server 2019 CU8 以降、SQL Server 2017 CU25 以降、または Windows Server 2016 以降の SQL Server 2016 SP3 以降)。
- 分散ネットワーク名がお客様の HADR ソリューションに適切な接続オプションであると判断済みであること。
- フェールオーバー クラスター インスタンスを構成しました。
- 最新バージョンの PowerShell をインストール済みであること。
Note
同じクラスター上の各可用性グループまたはフェールオーバー クラスター インスタンスには、VNN リスナーでも DNN リスナーでも、独自の独立した接続ポイントが必要です。
DNN リソースを作成する
DNN リソースは、SQL Server FCI と同じクラスター グループに作成されます。 PowerShell を使用して、FCI クラスター グループ内に DNN リソースを作成します。
次の PowerShell コマンドを実行すると、リソース名 <dnnResourceName> で、SQL Server FCI クラスター グループに DNN リソースが追加されます。 このリソース名は、リソースを一意に識別するために使用されます。 自分にとってわかりやすく、クラスター全体で一意であるものを使用してください。 リソースの種類は Distributed Network Name である必要があります。
-Group 値には、分散ネットワーク名を追加する SQL Server FCI に対応するクラスター グループの名前を指定する必要があります。 既定のインスタンスの場合、通常の形式は SQL Server (MSSQLSERVER) です。
Add-ClusterResource -Name <dnnResourceName> `
-ResourceType "Distributed Network Name" -Group "<WSFC role of SQL Server instance>"
たとえば、既定の SQL Server FCI に対して DNN リソース dnn-demo を作成する場合は、次の PowerShell コマンドを使用します。
Add-ClusterResource -Name dnn-demo `
-ResourceType "Distributed Network Name" -Group "SQL Server (MSSQLSERVER)"
クラスター DNN の DNS 名を設定する
クラスター内の DNN リソースのドメイン ネーム システム (DNS) 名を設定します。 その後、クラスターではこの値を使用して、現在 SQL Server FCI をホストしているノードにトラフィックがルーティングされます。
クライアントでは、SQL Server FCI に接続するために DNS 名が使用されます。 一意の値を選択できます。 もしくは、既存の FCI があり、クライアント接続文字列を更新するつもりがない場合。 DNN は、クライアントが既に使用している現在の VNN を使用するように構成できます。 これを行うには、DNS で DNN を設定する前に、VNN の名前を変更する必要があります。
次のコマンドを使用して、DNN の DNS 名を設定します。
Get-ClusterResource -Name <dnnResourceName> | `
Set-ClusterParameter -Name DnsName -Value <DNSName>
DNSName 値は、SQL Server FCI に接続するためにクライアントで使用されるものです。 たとえば、クライアントが FCIDNN に接続するには、次の PowerShell コマンドを使用します。
Get-ClusterResource -Name dnn-demo | `
Set-ClusterParameter -Name DnsName -Value FCIDNN
SQL Server FCI に接続するときに、クライアントは接続文字列に FCIDNN を入力する必要があります。
警告
現在の仮想ネットワーク名 (VNN) は FCI インフラストラクチャの必要なコンポーネントであるため、削除しないでください。
VNN の名前を変更する
既存の仮想ネットワーク名があり、SQL Server FCI に接続するためにクライアントで引き続きこの値が使用されるようにしたい場合は、現在の VNN の名前をプレースホルダーの値に変更する必要があります。 現在の VNN の名前を変更したら、DNN の DNS 名の値を VNN に設定できます。 現在の VNN をビジネスに使用する必要がない場合は、このセクションをスキップしてください。
VNN の名前変更には、いくつかの制限が適用されます。 詳細については、FCI の名前変更に関するページをご覧ください。
VNN の名前を変更した後、 クラスター DNN DNS 名を設定します。
DNN リソースをオンラインに設定する
DNN リソースに適切な名前が付けられ、クラスターで DNS 名の値を設定したら、PowerShell を使用してクラスター内の DNN リソースをオンラインで設定します。
Start-ClusterResource -Name <dnnResourceName>
たとえば、DNN リソース dnn-demo を開始するには、次の PowerShell コマンドを使用します。
Start-ClusterResource -Name dnn-demo
実行可能な所有者を構成する
既定では、クラスターでは DNN の DNS 名がクラスター内のすべてのノードにバインドされます。 ただし、SQL Server FCI の一部ではないクラスター内のノードは、DNN の所有者の一覧から除外する必要があります。
実行可能な所有者を更新するには、次の手順に従います。
フェールオーバー クラスター マネージャーで DNN リソースに移動します。
DNN リソースを右クリックし、 [プロパティ] を選択します。
フェールオーバー クラスター インスタンスに参加していないすべてのノードのチェック ボックスをオフにします。 DNN リソースの実行可能な所有者の一覧は、SQL Server インスタンス リソースの実行可能な所有者の一覧と一致している必要があります。 たとえば、Data3 が FCI に参加していないと仮定すると、次の図は、DNN リソースの実行可能な所有者の一覧から Data3 を削除する例です。
[OK] を選択して設定を保存します。
SQL Server インスタンスを再起動する
フェールオーバー クラスター マネージャーを使用して、SQL Server インスタンスを再起動します。 次の手順に従います。
- フェールオーバー クラスター マネージャーで SQL Server リソースに移動します。
- SQL Server リソースを右クリックして、オフラインにします。
- 関連付けられているすべてのリソースがオフラインになるまで待ちます。 次に、SQL Server リソースを右クリックし、もう一度オンラインにします。
接続文字列を更新する
SQL Server FCI DNN に接続しているアプリケーションの接続文字列を更新し、接続文字列に MultiSubnetFailover=True を含めます。 クライアントが MultiSubnetFailover パラメーターをサポートしていない場合、DNN と互換性がありません。
次に示すのは、DNS 名が FCIDNN の SQL FCI DNN の接続文字列例です。
Data Source=FCIDNN, MultiSubnetFailover=True
さらに、DNN が元の VNN を使用していない場合、SQL Server FCI に接続する SQL クライアントは、接続文字列を DNN DNS 名に更新する必要があります。 この要件を回避するために、DNS 名の値を VNN の名前に更新することができます。 ただし、最初に 既存の VNN をプレースホルダーに置き換える 必要があります。
[テスト フェールオーバー]
クラスター化されたリソースのフェールオーバーをテストして、クラスターの機能を検証します。
フェールオーバーをテストするには、次の手順に従います。
- Bastion を使用して、SQL Server クラスター ノードのいずれかに接続します。
- フェールオーバー クラスター マネージャーを開きます。 [役割] を選びます。 SQL Server FCI ロールを所有しているノードを確認します。
- SQL Server FCI ロールを右クリックします。
- [移動] を選択し、 [最適なノード] を選択します。
フェールオーバー クラスター マネージャーで、ロールとそのリソースがオフラインになったことが示されます。 リソースは移動し、もう一方のノードでオンラインに戻ります。
接続をテストする
接続をテストするには、同じ仮想ネットワーク内の別の仮想マシンにサインインします。 SQL Server Management Studio を開き、DNN の DNS 名を使用して SQL Server FCI に接続します。
必要に応じて、SQL Server Management Studio をダウンロードできます。
IP の競合を回避する
FCI リソースによって使用される仮想 IP (VIP) アドレスが Azure 内の別のリソースに割り当てられないようにするには、このオプションの手順を実行します。
お客様は DNN を使用して SQL Server FCI に接続するようになりましたが、仮想ネットワーク名 (VNN) と仮想 IP は FCI インフラストラクチャの必要なコンポーネントであるため削除できません。 ただし、Azure に仮想 IP アドレスを予約するロード バランサーはなくなりました。 そのため、仮想ネットワーク上の別のリソースに、FCI で使用される仮想 IP アドレスと同じ IP アドレスが割り当てられるリスクがあります。 この状況により、IP 競合の問題が重複する可能性があります。
IP アドレスを予約するために、APIPA アドレスまたは専用のネットワーク アダプターを構成します。
APIPA アドレス
重複 IP アドレスの使用を回避するには、APIPA アドレス (リンクローカル アドレスとも呼ばれます) を構成します。 これを行うには、次のコマンドを実行します。
Get-ClusterResource "virtual IP address" | Set-ClusterParameter
–Multiple @{"Address"="169.254.1.1";"SubnetMask"="255.255.0.0";"OverrideAddressMatch"=1;"EnableDhcp"=0}
このコマンドにおいて、"virtual IP address" はクラスター化された VIP アドレス リソースの名前であり、"169.254.1.1" は VIP アドレス用に選択される APIPA アドレスです。 お客様のビジネスに最も適したアドレスを選択します。
OverrideAddressMatch=1 を設定します。これにより、IP アドレスを、APIPA アドレス空間を含む任意のネットワーク上に指定できるようにします。
専用のネットワーク アダプター
または、仮想 IP アドレス リソースで使用される IP アドレスを予約するように Azure でネットワーク アダプターを構成することもできます。 ただし、この構成ではサブネット のアドレス空間内のアドレスが使用され、ネットワーク アダプターが他の目的で使用されないようにするための追加のオーバーヘッドが必要です。
制限事項
- DNN リスナーに接続するクライアントは、接続文字列の
MultiSubnetFailover=Trueパラメーターをサポートする必要があります。 - DNN を使用してその他の SQL Server 機能と FCI を操作する場合は、さらなる考慮事項が存在する場合があります。 詳細については、FCI と DNN の相互運用性に関する記事をご覧ください。