フェールオーバー クラスター インスタンス用に DNN を構成する

適用対象:Azure VM 上の SQL Server

ヒント

可用性グループをデプロイする方法は多数あります。 デプロイを簡略化し、Always On 可用性グループに対して Azure Load Balancer または分散ネットワーク名 (DNN) を不要にするには、同じ Azure 仮想ネットワーク内の複数のサブネットに SQL Server 仮想マシン (VM) を作成します。 可用性グループを 1 つのサブネットに既に作成している場合は、マルチサブネット環境に移行できます。

Azure Virtual Machines では、分散ネットワーク名 (DNN) によって、クラスター化された適切なリソースにトラフィックがルーティングされます。 これにより、仮想ネットワーク名 (VNN) よりも簡単に SQL Server フェールオーバー クラスター インスタンス (FCI) に接続することができます。Azure Load Balancer は必要ありません。

この記事では、DNN リソースを構成して、高可用性とディザスター リカバリー (HADR) のために Azure VM 上の SQL Server を使用するフェールオーバー クラスター インスタンスにトラフィックをルーティングする方法について説明します。

代替の接続オプションとしては、代わりに仮想ネットワーク名と Azure Load Balancer を検討してください。

概要

分散ネットワーク名 (DNN) は、SQL Server VM 上の Always On フェールオーバー クラスター インスタンスで使用される場合、接続ポイントとして仮想ネットワーク名 (VNN) を置き換えます。 これにより、VNN へのトラフィックのルーティングに Azure Load Balancer が不要になり、デプロイと保守が簡素化され、フェールオーバーが向上します。

FCI デプロイでは、VNN は引き続き存在しますが、クライアントは VNN 名ではなく DNN DNS 名に接続されます。

前提条件

この記事の手順を完了するには、次のものが必要です。

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 が既にあり、クライアント接続文字列を更新したくない場合は、クライアントで既に使用されている現在の VNN を使用するように DNN を構成できます。 これを行うには、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 の名前変更には、いくつかの制限が適用されます。 詳細については、FCI の名前変更に関するページをご覧ください。

お客様のビジネスにおいて現在の VNN を使用する必要がない場合は、このセクションを省略してください。 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 の実行可能な所有者の一覧から除外する必要があります。

実行可能な所有者を更新するには、次の手順に従います。

  1. フェールオーバー クラスター マネージャーで DNN リソースに移動します。

  2. DNN リソースを右クリックし、 [プロパティ] を選択します。

    Shortcut menu for the DNN resource, with the Properties command highlighted.

  3. フェールオーバー クラスター インスタンスに参加していないすべてのノードのチェック ボックスをオフにします。 DNN リソースの実行可能な所有者の一覧は、SQL Server インスタンス リソースの実行可能な所有者の一覧と一致している必要があります。 たとえば、Data3 が FCI に参加していないとすると、次の図は DNN リソースの実行可能な所有者の一覧から Data3 を削除する例を示しています。

    Clear the check box next to the nodes that do not participate in the FCI for possible owners of the DNN resource

  4. [OK] を選択して設定を保存します。

SQL Server インスタンスを再起動する

フェールオーバー クラスター マネージャーを使用して、SQL Server インスタンスを再起動します。 次の手順に従います。

  1. フェールオーバー クラスター マネージャーで SQL Server リソースに移動します。
  2. SQL Server リソースを右クリックして、オフラインにします。
  3. 関連付けられているすべてのリソースがオフラインになったら、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 をプレースホルダーに置き換える必要があります。

[テスト フェールオーバー]

クラスター化されたリソースのフェールオーバーをテストして、クラスターの機能を検証します。

フェールオーバーをテストするには、次の手順に従います。

  1. SQL Server クラスター ノードの 1 つに RDP を使用して接続します。
  2. フェールオーバー クラスター マネージャーを開きます。 [役割] を選びます。 SQL Server FCI ロールを所有しているノードを確認します。
  3. SQL Server FCI ロールを右クリックします。
  4. [移動] を選択し、 [最適なノード] を選択します。

フェールオーバー クラスター マネージャーで、ロールとそのリソースがオフラインになったことが示されます。 リソースは移動し、もう一方のノードでオンラインに戻ります。

接続をテストする

接続をテストするには、同じ仮想ネットワーク内の別の仮想マシンにサインインします。 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 の相互運用性に関する記事をご覧ください。

次のステップ

詳細については、以下をご覧ください。