1 つ以上の Always On 可用性グループ リスナーの構成

適用対象:Azure VM 上の SQL Server

ヒント

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

このドキュメントでは、PowerShell を使用して次のいずれかのタスクを実行する方法について説明します。

  • ロード バランサーを作成する
  • SQL Server 可用性グループの既存のロード バランサーに IP アドレスを追加する。

可用性グループ リスナーは、クライアントがデータベース アクセスのために接続する仮想ネットワーク名です。 1 つのサブネットの Azure Virtual Machines では、ロード バランサーによってリスナーの IP アドレスが保持されます。 ロード バランサーは、プローブ ポートでリッスンしている SQL Server のインスタンスにトラフィックをルーティングします。 通常、可用性グループでは内部ロード バランサーが使用されます。 Azure 内部ロード バランサーは、1 つ以上の IP アドレスをホストできます。 各 IP アドレスで、特定のプローブ ポートが使用されます。

内部ロード バランサーに複数の IP アドレスを割り当てる機能は Azure の新機能であり、Resource Manager モデルでのみ利用できます。 この作業を行うには、SQL Server 可用性グループが Resource Manager モデルの Azure Virtual Machines にデプロイされている必要があります。 両方の SQL Server 仮想マシンが同じ可用性セットに属している必要があります。 Microsoft のテンプレート を使用すると、Azure Resource Manager で自動的に可用性グループを作成することができます。 このテンプレートでは、内部ロード バランサーを含む可用性グループが自動的に作成されます。 必要に応じて AlwaysOn 可用性グループを手動で構成することもできます。

この記事の手順を完了するには、可用性グループが既に構成されている必要があります。

関連トピック:

Note

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

PowerShell セッションの開始

Connect-Az Account コマンドレットを実行すると、資格情報を入力するサインイン画面が表示されます。 Azure ポータルにサインインするときと同じ資格情報を使用してください。

Connect-AzAccount

複数のサブスクリプションがある場合は、Set-AzContext コマンドレットを使用して、PowerShell セッションで使用するサブスクリプションを選択します。 PowerShell セッションが現在使用しているサブスクリプションを確認するには、Get-AzContext を実行します。 すべてのサブスクリプションを表示するには、Get-AzSubscription を実行します。

Set-AzContext -SubscriptionId '4cac86b0-1e56-bbbb-aaaa-000000000000'

PowerShell のバージョンを確認する

この記事の例は、Azure PowerShell モジュールのバージョン 5.4.1 を使用してテストされています。

お使いの PowerShell モジュールが 5.4.1 以降であることを確認してください。

Azure PowerShell モジュールのインストールに関するページを参照してください。

Windows ファイアウォールの構成

SQL Server のアクセスを許可するように Windows ファイアウォールを構成します。 ファイアウォール規則では、SQL Server インスタンスによって使用されるポートとリスナー プローブによって使用されるポートへの TCP 接続を許可します。 詳細については、「データベース エンジン アクセスを有効にするための Windows ファイアウォールを構成する」をご覧ください。 SQL Server のポートとプローブ ポート用の受信規則を作成します。

Azure ネットワーク セキュリティ グループを使用してアクセスを制限する場合は、バックエンド SQL Server VM の IP アドレス、AG リスナーのロード バランサー フローティング IP アドレス、および該当する場合はクラスター コア IP アドレスが許可ルールに含まれていることを確認します。

必要なロード バランサーの SKU を決定する

Azure Load Balancer は、Basic と Standard の 2 つの SKU で使用できます。 Basic SKU は 2025 年 9 月 30 日に廃止される予定であるため、Standard ロード バランサーをお勧めします。 可用性ゾーン内の仮想マシンには、Standard ロード バランサーが必要です。 Standard Load Balancer では、すべての VM IP アドレスで標準 IP アドレスが使用されている必要があります。

可用性グループ用の現在の Microsoft テンプレートでは、Basic Load Balancer と基本の IP アドレスが使用されています。

Note

クラウド監視に Standard Load Balancer と Azure Storage を使用する場合は、サービス エンドポイントを構成する必要があります。

この記事の例では、Standard Load Balancer が指定されています。 例のスクリプトには、-sku Standard が含まれています。

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe -sku Standard

Basic Load Balancer を作成するには、ロード バランサーを作成する行から -sku Standard を削除します。 次に例を示します。

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe

サンプル スクリプト: PowerShell を使用して内部ロード バランサーを作成する

Note

Microsoft テンプレート を使用して可用性グループを作成した場合、内部ロード バランサーは既に作成されています。

次の PowerShell スクリプトでは、内部ロード バランサーを作成し、負荷分散規則を構成した後、ロード バランサーの IP アドレスを設定します。 スクリプトを実行するには、Windows PowerShell ISE を開いてスクリプト ペインにスクリプトを貼り付けます。 Connect-AzAccount を使用して PowerShell にログインします。 複数の Azure サブスクリプションがある場合は、 Select-AzSubscription を使用してサブスクリプションを設定します。

# Connect-AzAccount
# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

$ResourceGroupName = "<Resource Group Name>" # Resource group name
$VNetName = "<Virtual Network Name>"         # Virtual network name
$SubnetName = "<Subnet Name>"                # Subnet name
$ILBName = "<Load Balancer Name>"            # ILB name
$Location = "<Azure Region>"                 # Azure location
$VMNames = "<VM1>","<VM2>"                   # Virtual machine names

$ILBIP = "<n.n.n.n>"                         # IP address
[int]$ListenerPort = "<nnnn>"                # AG listener port
[int]$ProbePort = "<nnnn>"                   # Probe port

$LBProbeName ="ILBPROBE_$ListenerPort"       # The Load balancer Probe Object Name              
$LBConfigRuleName = "ILBCR_$ListenerPort"    # The Load Balancer Rule Object Name

$FrontEndConfigurationName = "FE_SQLAGILB_1" # Object name for the front-end configuration 
$BackEndConfigurationName ="BE_SQLAGILB_1"   # Object name for the back-end configuration

$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName 

$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName 

$FEConfig = New-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.id

$BEConfig = New-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName 

$SQLHealthProbe = New-AzLoadBalancerProbeConfig -Name $LBProbeName -Protocol tcp -Port $ProbePort -IntervalInSeconds 15 -ProbeCount 2

$ILBRule = New-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -Probe $SQLHealthProbe -Protocol tcp -FrontendPort $ListenerPort -BackendPort $ListenerPort -LoadDistribution Default -EnableFloatingIP 

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe 

$bepool = Get-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName -LoadBalancer $ILB 

foreach($VMName in $VMNames)
    {
        $VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName 
        $NICName = ($vm.NetworkProfile.NetworkInterfaces.Id.split('/') | select -last 1)
        $NIC = Get-AzNetworkInterface -name $NICName -ResourceGroupName $ResourceGroupName
        $NIC.IpConfigurations[0].LoadBalancerBackendAddressPools = $BEPool
        Set-AzNetworkInterface -NetworkInterface $NIC
        start-AzVM -ResourceGroupName $ResourceGroupName -Name $VM.Name 
    }

サンプル スクリプト: PowerShell を使用して既存のロード バランサーに IP アドレスを追加する

複数の可用性グループを使用するには、ロード バランサーに追加の IP アドレスを追加します。 各 IP アドレスには、独自の負荷分散規則、プローブ ポート、およびフロント ポートが必要です。 セカンダリ VM の IP アドレスが ローディングIP をサポートしていないため、ロード バランサーのバックエンド プールに VM のプライマリ IP アドレスのみを追加します。

フロントエンド ポートは、アプリケーションが SQL Server インスタンスに接続するために使用するポートです。 複数の異なる可用性グループの IP アドレスで同じフロントエンド ポートを使用できます。

Note

SQL Server 可用性グループの場合は、各 IP アドレスに特定のプローブ ポートが必要です。 たとえば、ロード バランサー上の 1 つの IP アドレスでプローブ ポート 59999 が使用されている場合、そのロード バランサー上の他の IP アドレスではプローブ ポート 59999 を使用できません。

次のスクリプトは、既存のロード バランサーに新しい IP アドレスを追加します。 ILB では、負荷分散フロントエンド ポート用のリスナー ポートが使用されます。 このポートには、SQL Server がリッスンしているポートを使用できます。 SQL Server の既定のインスタンスでは、このポートは 1433 です。 バックエンド ポートがフロントエンド ポートと同じになるように、可用性グループの負荷分散規則ではフローティング IP (Direct Server Return) が必要です。 環境に合わせて変数を更新してください。

# Connect-AzAccount
# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

$ResourceGroupName = "<ResourceGroup>"          # Resource group name
$VNetName = "<VirtualNetwork>"                  # Virtual network name
$SubnetName = "<Subnet>"                        # Subnet name
$ILBName = "<ILBName>"                          # ILB name                      

$ILBIP = "<n.n.n.n>"                            # IP address
[int]$ListenerPort = "<nnnn>"                   # AG listener port
[int]$ProbePort = "<nnnnn>"                     # Probe port 

$ILB = Get-AzLoadBalancer -Name $ILBName -ResourceGroupName $ResourceGroupName 

$count = $ILB.FrontendIpConfigurations.Count+1
$FrontEndConfigurationName ="FE_SQLAGILB_$count"  

$LBProbeName = "ILBPROBE_$count"
$LBConfigrulename = "ILBCR_$count"

$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName 
$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName

$ILB | Add-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.Id 

$ILB | Add-AzLoadBalancerProbeConfig -Name $LBProbeName  -Protocol Tcp -Port $Probeport -ProbeCount 2 -IntervalInSeconds 15  | Set-AzLoadBalancer 

$ILB = Get-AzLoadBalancer -Name $ILBname -ResourceGroupName $ResourceGroupName

$FEConfig = get-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -LoadBalancer $ILB

$SQLHealthProbe  = Get-AzLoadBalancerProbeConfig -Name $LBProbeName -LoadBalancer $ILB

$BEConfig = Get-AzLoadBalancerBackendAddressPoolConfig -Name $ILB.BackendAddressPools[0].Name -LoadBalancer $ILB 

$ILB | Add-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig  -BackendAddressPool $BEConfig -Probe $SQLHealthProbe -Protocol tcp -FrontendPort  $ListenerPort -BackendPort $ListenerPort -LoadDistribution Default -EnableFloatingIP | Set-AzLoadBalancer   

リスナーの構成

可用性グループ リスナーとは、SQL Server 可用性グループがリッスンする IP アドレスとネットワーク名のことです。 可用性グループ リスナーを作成するには、次の手順を実行します。

  1. クラスター ネットワーク リソースの名前を取得します。

    a. プライマリ レプリカのホストとなっている Azure 仮想マシンに RDP で接続します。

    b. フェールオーバー クラスター マネージャーを開きます。

    c. Networks ノードを選択し、クラスター ネットワーク名をメモします。 この名前は、PowerShell スクリプトの $ClusterNetworkName 変数に使用します。 次の図で、クラスター ネットワーク名は Cluster Network 1 です。

    Screenshot that shows a cluster network name in Failover Cluster Manager.

  2. クライアント アクセス ポイントを追加します。 クライアント アクセス ポイントは、アプリケーションが可用性グループ内のデータベースに接続するために使用するネットワーク名です。

    a. [フェールオーバー クラスター マネージャー] で、クラスター名を展開し、[ロール] を選択します。

    b. [ロール] ペインで、可用性グループ名を右クリックし、[リソースの追加]>[クライアント アクセス ポイント] の順に選択します。

    Screenshot of Failover Cluster Manager that shows selecting the Client Access Point command on the shortcut menu for the availability group.

    c. [名前] ボックスで、この新しいリスナーの名前を指定します。 新しいリスナーの名前は、アプリケーションが SQL Server 可用性グループ内のデータベースへの接続に使用するネットワーク名です。

    d. リスナーの作成を完了するには、[次へ] を 2 回選択し、[完了] を選択します。 この時点では、リスナーまたはリソースをオンラインにしないでください。

  3. 可用性グループのクラスター ロールをオフラインにします。 [フェールオーバー クラスター マネージャー][ロール] で、ロールを右クリックし、[ロールの停止] を選択します。

  4. 可用性グループの IP リソースを構成します。

    a. [リソース] タブを選択し、作成したクライアント アクセス ポイントを展開します。 クライアント アクセス ポイントはオフラインになっています。

    Screenshot of Failover Cluster Manager that shows an offline status for a client access point.

    b. IP リソースを右クリックし、[プロパティ] を選択します。 この IP アドレス名はメモしておき、PowerShell スクリプトの $IPResourceName 変数に使用します。

    c. [IP アドレス][静的 IP アドレス] を選択します。 静的 IP アドレスを、Azure Portal でロード バランサーのアドレス設定時に使用したものと同じアドレスに設定します。

    Screenshot of Failover Cluster Manager that shows the selection of an IP address.

  5. SQL Server 可用性グループ リソースがクライアント アクセス ポイントに依存するように設定します。

    a. [フェールオーバー クラスター マネージャー] で、[ロール]、可用性グループの順に選択します。

    b. [リソース] タブの [その他のリソース] で、可用性グループのリソースを右クリックし、[プロパティ] をクリックします。

    c. [依存関係] タブで、クライアント アクセス ポイント (リスナー) の名前を追加します。

    Screenshot of Failover Cluster Manager that shows adding a name on the Dependencies tab.

    d. [OK] を選択します。

  6. クライアント アクセス ポイントが IP アドレスに依存するように設定します。

    a. [フェールオーバー クラスター マネージャー] で、[ロール]、可用性グループの順に選択します。

    b. [リソース] タブの [サーバー名] で、クライアント アクセスポイント リソースを右クリックし、[プロパティ] を選択します。

    Screenshot of Failover Cluster Manager that shows the Properties menu option for the listener's name.

    c. [依存関係] タブを選択します。IP アドレスが依存関係の要素であることを確認します。 そうでない場合は、IP アドレスへの依存関係を設定します。 複数のリソースが一覧表示される場合は、IP アドレスに (AND ではなく) OR 依存関係があることを確認します。 [OK] をクリックします。

    Screenshot of the Dependencies tab that shows an IP resource for an availability group.

    ヒント

    依存関係が正しく構成されていることを確認できます。 [フェールオーバー クラスター マネージャー][ロール] に移動し、可用性グループを右クリックし、[その他の操作][依存関係レポートの表示] の順に選択します。 依存関係が正しく構成されると、可用性グループはネットワーク名に依存し、ネットワーク名は IP アドレスに依存します。

  7. PowerShell でクラスターのパラメーターを設定します。

    a. いずれかの SQL Server インスタンスに次の PowerShell スクリプトをコピーします。 環境に合わせて変数を更新してください。

    • $ClusterNetworkName は、フェールオーバー クラスター マネージャー[ネットワーク] を選択し、ネットワークを右クリックして [プロパティ] を選択することで、名前を見つけることができます。 $ClusterNetworkName は [全般] タブの [名前] にあります。

    • $IPResourceName は、フェールオーバー クラスター マネージャーの IP アドレス リソースに指定された名前です。 これはフェールオーバー クラスター マネージャー[ロール] を選択し、SQL Server AG または FCI 名を選択し、[サーバー名][リソース] タブを選択し、IP アドレス リソースを右クリックして [プロパティ] を選択することで見つけることができます。 正しい値は [全般] タブの [名前] にあります。

    • $ListenerILBIP は、Azure Load Balancer に対して作成した、可用性グループ リスナーの IP アドレスです。 フェールオーバー クラスター マネージャーの SQL Server AG または FCI リスナー リソース名と同じプロパティ ページで、$ListenerILBIP を見つけることができます。

    • $ListenerProbePort は、Azure Load Balancer に対して構成した、可用性グループ リスナーのポート (59999 など) です。 未使用の TCP ポートが有効です。

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "<IPResourceName>" # The IP address resource name.
    $ListenerILBIP = "<n.n.n.n>" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ListenerProbePort = <nnnnn>
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. いずれかのクラスター ノード上で PowerShell スクリプトを実行して、クラスター パラメーターを設定します。

    Note

    SQL Server インスタンスが別個のリージョンに存在する場合は、PowerShell スクリプトを 2 回実行する必要があります。 1 回目の実行では、1 番目のリージョンの $ListenerILBIP$ListenerProbePort を使用します。 2 回目の実行では、2 番目のリージョンの $ListenerILBIP$ListenerProbePort を使用します。 クラスター ネットワーク名とクラスター IP リソース名も、リージョンごとに異なります。

  8. 可用性グループのクラスター ロールをオンラインにします。 [フェールオーバー クラスター マネージャー][ロール] で該当するロールを右クリックし、[ロールの起動] を選択します。

必要に応じて前の手順を繰り返し、Windows Server フェールオーバー クラスターの IP アドレスのクラスター パラメーターを設定します。

  1. Windows Server フェールオーバー クラスターの IP アドレス名を取得します。 [フェールオーバー クラスター マネージャー][クラスター コア リソース] で、[サーバー名] を見つけます。

  2. [IP アドレス] を右クリックし、[プロパティ] を選択します。

  3. [名前] から IP アドレスの名前をコピーします。 これはクラスター IP アドレスである可能性があります。

  4. PowerShell でクラスターのパラメーターを設定します。

    a. いずれかの SQL Server インスタンスに次の PowerShell スクリプトをコピーします。 環境に合わせて変数を更新してください。

    • $ClusterCoreIP は、Azure Load Balancer に対して作成した、Windows Server フェールオーバー クラスターのコア クラスター リソースの IP アドレスです。 これは、可用性グループ リスナーの IP アドレスとは異なります。

    • $ClusterProbePort は、Azure Load Balancer に対して作成した、Windows Server フェールオーバー クラスターの正常性プローブのポートです。 これは、可用性グループ リスナーのプローブとは異なります。

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "<ClusterIPResourceName>" # The IP address resource name.
    $ClusterCoreIP = "<n.n.n.n>" # The IP address of the cluster IP resource. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ClusterProbePort = <nnnnn> # The probe port from WSFCEndPointprobe in the Azure portal. This port must be different from the probe port for the availability group listener.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ClusterCoreIP";"ProbePort"=$ClusterProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. いずれかのクラスター ノード上で PowerShell スクリプトを実行して、クラスター パラメーターを設定します。

49152 から 65536 までのポート (TCP/IP の既定の動的ポート範囲) を使用するように SQL リソースが構成されている場合は、各ポートの除外を追加します。 このようなリソースとしては、次のものがあります。

  • SQL Server データベース エンジン
  • AlwaysOn 可用性グループ リスナー
  • フェールオーバー クラスター インスタンスの正常性プローブ
  • データベース ミラーリング エンドポイント
  • クラスター コア IP リソース

除外を追加することにより、他のシステム プロセスが同じポートに動的に割り当てられるのを防ぐことができます。 このシナリオでは、すべてのクラスター ノードで次の除外を構成します。

  • netsh int ipv4 add excludedportrange tcp startport=58888 numberofports=1 store=persistent
  • netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent

ポートが使用されていないときにポート除外を構成することが重要です。 それ以外の場合、コマンドは失敗し、"ファイルは別のプロセスで使用されているため、このプロセスでアクセスすることはできません" のようなメッセージが返されます。除外が正しく構成されていることを確認するには、コマンド netsh int ipv4 show excludedportrange tcp を使用します。

警告

可用性グループ リスナーの正常性プローブのポートは、クラスター コア IP アドレスの正常性プローブのポートとは異なっている必要があります。 これらの例で、リスナー ポートは 59999 で、クラスター コア IP アドレスの正常性プローブ ポートは 58888 です。 どちらのポートにも、"受信許可" ファイアウォール規則が必要です。

SQL Server Management Studio でリスナー ポートを設定する

  1. SQL Server Management Studio を起動し、プライマリ レプリカに接続します。

  2. [Always On 高可用性]>[可用性グループ]>[可用性グループ リスナー] の順に移動します。

  3. フェールオーバー クラスター マネージャーで作成したリスナー名が表示されます。 リスナー名を右クリックし、 [プロパティ] を選択します。

  4. [ポート] ボックスで、以前に使用した $EndpointPort (既定値は 1433) を使用し、可用性グループ リスナーのポート番号を指定して、 [OK] を選択します。

リスナーへの接続をテストする

接続をテストするには、次の手順に従います。

  1. リモート デスクトップ プロトコル (RDP) を使用して、同じ仮想ネットワークに存在する、レプリカを所有していない SQL Server に接続します。 クラスター内の別の SQL Server がそれに該当します。

  2. sqlcmd ユーティリティを使用して接続をテストします。 たとえば次のスクリプトは、Windows 認証を使用し、リスナー経由でプライマリ レプリカとの sqlcmd 接続を確立しています。

    sqlcmd -S <listenerName> -E
    

    リスナーが既定のポート (1433) 以外のポートを使用している場合は、そのポートを接続文字列で指定します。 たとえば、次の sqlcmd コマンドは、ポート 1435 でリスナーに接続します。

    sqlcmd -S <listenerName>,1435 -E
    

SQLCMD 接続では、プライマリ レプリカをホストしている SQL Server インスタンスに対して自動的に接続されます。

Note

指定したポートは、両方の SQL Server のファイアウォールで必ず開放してください。 使用する TCP ポートに対する入力方向の規則が両方のサーバーに必要となります。 詳しくは、「ファイアウォール規則を追加または編集する」をご覧ください。

セカンダリ レプリカ VM を使用していて、リスナーに接続できない場合は、プローブ ポートが正しく構成されていない可能性があります。

次のスクリプトを使って、プローブ ポートが可用性グループ用に正しく構成されていることを検証できます。

Clear-Host
Get-ClusterResource `
| Where-Object {$_.ResourceType.Name -like "IP Address"} `
| Get-ClusterParameter `
| Where-Object {($_.Name -like "Network") -or ($_.Name -like "Address") -or ($_.Name -like "ProbePort") -or ($_.Name -like "SubnetMask")}

ガイドラインと制限

内部ロード バランサーを使用した Azure の可用性グループ リスナーに関する次のガイドラインを確認してください。

  • 内部ロード バランサーでは、同じ仮想ネットワーク内からしかリスナーにアクセスできません。

  • Azure ネットワーク セキュリティ グループを使用してアクセスを制限する場合は、許可規則に次のものが含まれていることを確認します。

    • バックエンド SQL Server VM の IP アドレス
    • AG リスナーのロード バランサーの フローティング IP アドレス
    • クラスター コア IP アドレス (該当する場合)。
  • クラウド監視に Standard Load Balancer と Azure Storage を使用する場合は、サービス エンドポイントを作成します。 詳細については、仮想ネットワークからのアクセスの許可に関するページを参照してください。

PowerShell コマンドレット

Azure Virtual Machines 用の内部ロード バランサーを作成するには、次の PowerShell コマンドレットを使用します。

次の手順

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