1 つ以上の AlwaysOn 可用性グループ リスナーの構成 - Resource ManagerConfigure one or more Always On availability group listeners - Resource Manager

このトピックでは、以下のことを行う方法を示します。This topic shows how to:

  • PowerShell コマンドレットを使用して、SQL Server 可用性グループ用の内部ロード バランサーを作成します。Create an internal load balancer for SQL Server availability groups using PowerShell cmdlets.
  • 複数の可用性グループをサポートするために、ロード バランサーに追加の IP アドレスを追加します。Add additional IP addresses to a load balancer for more than one availability group.

可用性グループ リスナーは、クライアントがデータベース アクセスのために接続する仮想ネットワーク名です。An availability group listener is a virtual network name that clients connect to for database access. Azure 仮想マシンでは、ロード バランサーによってリスナーの IP アドレスが保持されます。On Azure virtual machines, a load balancer holds the IP address for the listener. ロード バランサーは、プローブ ポートでリッスンしている SQL Server のインスタンスにトラフィックをルーティングします。The load balancer routes traffic to the instance of SQL Server that is listening on the probe port. 通常、可用性グループでは内部ロード バランサーが使用されます。Usually, an availability group uses an internal load balancer. Azure 内部ロード バランサーは、1 つ以上の IP アドレスをホストできます。An Azure internal load balancer can host one or many IP addresses. 各 IP アドレスで、特定のプローブ ポートが使用されます。Each IP address uses a specific probe port. このドキュメントでは、PowerShell を使用してロード バランサーを作成したり、SQL Server 可用性グループ用の既存のロード バランサーに IP アドレスを追加したりする方法を説明します。This document shows how to use PowerShell to create a load balancer, or add IP addresses to an existing load balancer for SQL Server availability groups.

内部ロード バランサーに複数の IP アドレスを割り当てる機能は Azure の新機能であり、Resource Manager モデルでのみ利用できます。The ability to assign multiple IP addresses to an internal load balancer is new to Azure and is only available in Resource Manager model. この作業を行うには、SQL Server 可用性グループが Resource Manager モデルの Azure 仮想マシンにデプロイされている必要があります。To complete this task, you need to have a SQL Server availability group deployed on Azure virtual machines in Resource Manager model. 両方の SQL Server 仮想マシンが同じ可用性セットに属している必要があります。Both SQL Server virtual machines must belong to the same availability set. Microsoft のテンプレート を使用すると、Azure Resource Manager で自動的に可用性グループを作成することができます。You can use the Microsoft template to automatically create the availability group in Azure Resource Manager. このテンプレートでは、内部ロード バランサーを含む可用性グループが自動的に作成されます。This template automatically creates the availability group, including the internal load balancer for you. 必要に応じて AlwaysOn 可用性グループを手動で構成することもできます。If you prefer, you can manually configure an Always On availability group.

このトピックは、可用性グループの構成が既に済んでいることを前提としています。This topic requires that your availability groups are already configured.

関連トピック:Related topics include:

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

PowerShell セッションの開始Start your PowerShell session

Connect-Az Account コマンドレットを実行すると、資格情報を入力するサインイン画面が表示されます。Run the Connect-Az Account cmdlet and you will be presented with a sign-in screen to enter your credentials. Azure ポータルにサインインするときと同じ資格情報を使用してください。Use the same credentials that you use to sign in to the Azure portal.

Connect-AzAccount

複数のサブスクリプションがある場合は、Set-AzContext コマンドレットを使用して、PowerShell セッションで使用するサブスクリプションを選択します。If you have multiple subscriptions use the Set-AzContext cmdlet to select which subscription your PowerShell session should use. PowerShell セッションが現在使用しているサブスクリプションを確認するには、Get-AzContext を実行します。To see what subscription the current PowerShell session is using, run Get-AzContext. すべてのサブスクリプションを表示するには、Get-AzSubscription を実行します。To see all your subscriptions, run Get-AzSubscription.

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

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

この記事の例は、Azure PowerShell モジュールのバージョン 5.4.1 を使用してテストされています。The examples in this article are tested using Azure PowerShell module version 5.4.1.

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

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

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

SQL Server のアクセスを許可するように Windows ファイアウォールを構成します。Configure the Windows Firewall to allow SQL Server access. ファイアウォール規則では、SQL Server インスタンスによって使用されるポートとリスナー プローブによって使用されるポートへの TCP 接続を許可します。The firewall rules allow TCP connections to the ports use by the SQL Server instance, and the listener probe. 詳細については、「データベース エンジン アクセスを有効にするための Windows ファイアウォールを構成する」をご覧ください。For detailed instructions, see Configure a Windows Firewall for Database Engine Access. SQL Server のポートとプローブ ポート用の受信規則を作成します。Create an inbound rule for the SQL Server port and for the probe port.

Azure ネットワーク セキュリティ グループを使用してアクセスを制限する場合は、バックエンド SQL Server VM の IP アドレス、AG リスナーのロード バランサー フローティング IP アドレス、および該当する場合はクラスター コア IP アドレスが許可ルールに含まれていることを確認します。If you are restricting access with an Azure Network Security Group, ensure that the allow rules include the backend SQL Server VM IP addresses, and the load balancer floating IP addresses for the AG listener and the cluster core IP address, if applicable.

必要なロード バランサーの SKU を決定するDetermine the load balancer SKU required

Azure Load Balancer は、2 つの SKU (Basic と Standard) で利用できます。Azure load balancer is available in 2 SKUs: Basic & Standard. Standard Load Balancer をお勧めします。The standard load balancer is recommended. 仮想マシンが可用性セット内にある場合は、Basic Load Balancer が許可されます。If the virtual machines are in an availability set, basic load balancer is permitted. Standard Load Balancer では、すべての VM IP アドレスで標準 IP アドレスが使用されている必要があります。Standard load balancer requires that all VM IP addresses use standard IP addresses.

可用性グループ用の現在の Microsoft テンプレートでは、Basic Load Balancer と基本の IP アドレスが使用されています。The current Microsoft template for an availability group uses a basic load balancer with basic IP addresses.

この記事の例では、Standard Load Balancer が指定されています。The examples in this article specify a standard load balancer. 例のスクリプトには、-sku Standard が含まれています。In the examples, the script includes -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 を削除します。To create a basic load balancer, remove -sku Standard from the line that creates the load balancer. 次に例を示します。For example:

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

サンプル スクリプト: PowerShell を使用して内部ロード バランサーを作成するExample Script: Create an internal load balancer with PowerShell

注意

Microsoft テンプレート を使用して可用性グループを作成した場合、内部ロード バランサーは既に作成されています。If you created your availability group with the Microsoft template, the internal load balancer was already created.

次の PowerShell スクリプトでは、内部ロード バランサーを作成し、負荷分散規則を構成した後、ロード バランサーの IP アドレスを設定します。The following PowerShell script creates an internal load balancer, configures the load balancing rules, and sets an IP address for the load balancer. スクリプトを実行するには、Windows PowerShell ISE を開いてスクリプト ウィンドウにスクリプトを貼り付けます。To run the script, open Windows PowerShell ISE, and paste the script in the Script pane. Connect-AzAccount を使用して PowerShell にログインします。Use Connect-AzAccount to log in to PowerShell. 複数の Azure サブスクリプションがある場合は、 Select-AzSubscription を使用してサブスクリプションを設定します。If you have multiple Azure subscriptions, use Select-AzSubscription to set the subscription.

# 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 アドレスを追加するExample script: Add an IP address to an existing load balancer with PowerShell

複数の可用性グループを使用するには、ロード バランサーに追加の IP アドレスを追加します。To use more than one availability group, add an additional IP address to the load balancer. 各 IP アドレスには、独自の負荷分散規則、プローブ ポート、およびフロント ポートが必要です。Each IP address requires its own load balancing rule, probe port, and front port.

フロントエンド ポートは、アプリケーションが SQL Server インスタンスに接続するために使用するポートです。The front-end port is the port that applications use to connect to the SQL Server instance. 複数の異なる可用性グループの IP アドレスで同じフロントエンド ポートを使用できます。IP addresses for different availability groups can use the same front-end port.

注意

SQL Server 可用性グループの場合は、各 IP アドレスに特定のプローブ ポートが必要です。For SQL Server availability groups, each IP address requires a specific probe port. たとえば、ロード バランサー上の 1 つの IP アドレスでプローブ ポート 59999 が使用されている場合、そのロード バランサー上の他の IP アドレスではプローブ ポート 59999 を使用できません。For example, if one IP address on a load balancer uses probe port 59999, no other IP addresses on that load balancer can use probe port 59999.

次のスクリプトは、既存のロード バランサーに新しい IP アドレスを追加します。The following script adds a new IP address to an existing load balancer. ILB では、負荷分散フロントエンド ポート用のリスナー ポートが使用されます。The ILB uses the listener port for the load balancing front-end port. このポートには、SQL Server がリッスンしているポートを使用できます。This port can be the port that SQL Server is listening on. SQL Server の既定のインスタンスでは、このポートは 1433 です。For default instances of SQL Server, the port is 1433. バックエンド ポートがフロントエンド ポートと同じになるように、可用性グループの負荷分散規則ではフローティング IP (Direct Server Return) が必要です。The load balancing rule for an availability group requires a floating IP (direct server return) so the back-end port is the same as the front-end port. 環境に合わせて変数を更新してください。Update the variables for your environment.

# 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   

リスナーの構成Configure the listener

可用性グループ リスナーとは、SQL Server 可用性グループがリッスンする IP アドレスとネットワーク名のことです。The availability group listener is an IP address and network name that the SQL Server availability group listens on. 可用性グループ リスナーを作成するには、次の手順を実行します。To create the availability group listener, do the following:

  1. クラスター ネットワーク リソースの名前を取得します。Get the name of the cluster network resource.

    a.a. プライマリ レプリカのホストとなっている Azure 仮想マシンに RDP で接続します。Use RDP to connect to the Azure virtual machine that hosts the primary replica.

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

    c.c. Networks ノードを選択し、クラスター ネットワーク名をメモします。Select the Networks node, and note the cluster network name. この名前は、PowerShell スクリプトの $ClusterNetworkName 変数に使用します。Use this name in the $ClusterNetworkName variable in the PowerShell script. 次の図では、クラスター ネットワーク名は Cluster Network 1 です。In the following image the cluster network name is Cluster Network 1:

    クラスター ネットワーク名

  2. クライアント アクセス ポイントを追加します。Add the client access point.
    クライアント アクセス ポイントは、アプリケーションが可用性グループ内のデータベースに接続するために使用するネットワーク名です。The client access point is the network name that applications use to connect to the databases in an availability group. クライアント アクセス ポイントは、フェールオーバー クラスター マネージャーで作成します。Create the client access point in Failover Cluster Manager.

    a.a. クラスター名を展開して、 [ロール] をクリックします。Expand the cluster name, and then click Roles.

    b.b. [ロール] ウィンドウで、可用性グループ名を右クリックし、 [リソースの追加] > [クライアント アクセス ポイント] の順にクリックします。In the Roles pane, right-click the availability group name, and then select Add Resource > Client Access Point.

    クライアント アクセス ポイント

    c.c. [名前] ボックスで、この新しいリスナーの名前を指定します。In the Name box, create a name for this new listener. 新しいリスナーの名前は、アプリケーションが SQL Server 可用性グループ内のデータベースへの接続に使用するネットワーク名です。The name for the new listener is the network name that applications use to connect to databases in the SQL Server availability group.

    d.d. [次へ] を 2 回クリックしてから [完了] をクリックし、リスナーの作成を完了します。To finish creating the listener, click Next twice, and then click Finish. この時点では、リスナーまたはリソースをオンラインにしないでください。Do not bring the listener or resource online at this point.

  3. 可用性グループ クラスター ロールをオフラインにします。Take the availability group cluster role offline. [フェールオーバー クラスター マネージャー][ロール] で該当するロールを右クリックし、 [ロールの停止] を選択します。In Failover Cluster Manager under Roles, right-click the role, and select Stop Role.

  4. 可用性グループの IP リソースを構成します。Configure the IP resource for the availability group.

    a.a. [リソース] タブをクリックして、作成したクライアント アクセス ポイントを展開します。Click the Resources tab, and then expand the client access point you created.
    クライアント アクセス ポイントはオフラインになっています。The client access point is offline.

    クライアント アクセス ポイント

    b.b. IP リソースを右クリックし、[プロパティ] をクリックします。Right-click the IP resource, and then click properties. この IP アドレス名はメモしておき、PowerShell スクリプトの $IPResourceName 変数に使用します。Note the name of the IP address, and use it in the $IPResourceName variable in the PowerShell script.

    c.c. [IP アドレス][静的 IP アドレス] をクリックします。Under IP Address, click Static IP Address. 静的 IP アドレスを、Azure Portal でロード バランサーのアドレス設定時に使用したものと同じアドレスに設定します。Set the IP address as the same address that you used when you set the load balancer address on the Azure portal.

    IP リソース

  5. SQL Server 可用性グループ リソースがクライアント アクセス ポイントに依存するように設定します。Make the SQL Server availability group resource dependent on the client access point.

    a.a. フェールオーバー クラスター マネージャーで、 [ロール] 、可用性グループの順にクリックします。In Failover Cluster Manager, click Roles, and then click your availability group.

    b.b. [その他のリソース] の下の [リソース] タブで可用性リソース グループを右クリックし、 [プロパティ] をクリックします。On the Resources tab, under Other Resources, right-click the availability resource group, and then click Properties.

    c.c. [依存関係] タブで、クライアント アクセス ポイント (リスナー) リソースの名前を追加します。On the dependencies tab, add the name of the client access point (the listener) resource.

    IP リソース

    d.d. Click OK.Click OK.

  6. クライアント アクセス ポイント リソースが IP アドレスに依存するように設定します。Make the client access point resource dependent on the IP address.

    a.a. フェールオーバー クラスター マネージャーで、 [ロール] 、可用性グループの順にクリックします。In Failover Cluster Manager, click Roles, and then click your availability group.

    b.b. [リソース] タブで [サーバー名] の下にあるクライアント アクセスポイント リソースを右クリックし、 [プロパティ] をクリックします。On the Resources tab, right-click the client access point resource under Server Name, and then click Properties.

    IP リソース

    c.c. [依存関係] タブをクリックします。IP アドレスが依存関係の要素であることを確認します。Click the Dependencies tab. Verify that the IP address is a dependency. そうでない場合は、IP アドレスへの依存関係を設定します。If it is not, set a dependency on the IP address. 複数のリソースが一覧表示される場合は、IP アドレスに OR (AND ではなく) 依存関係があることを確認します。If there are multiple resources listed, verify that the IP addresses have OR, not AND, dependencies. Click OK.Click OK.

    IP リソース

    ヒント

    依存関係が正しく構成されていることを確認できます。You can validate that the dependencies are correctly configured. フェールオーバー クラスター マネージャーで [ロール] に移動します。次に、可用性グループを右クリックし、 [他の操作] をクリックしてから、 [依存関係レポートの表示] をクリックします。In Failover Cluster Manager, go to Roles, right-click the availability group, click More Actions, and then click Show Dependency Report. 依存関係が正しく構成されると、可用性グループはネットワーク名に依存し、ネットワーク名は IP アドレスに依存します。When the dependencies are correctly configured, the availability group is dependent on the network name, and the network name is dependent on the IP address.

  7. PowerShell でクラスターのパラメーターを設定します。Set the cluster parameters in PowerShell.

    a.a. いずれかの SQL Server インスタンスに次の PowerShell スクリプトをコピーします。Copy the following PowerShell script to one of your SQL Server instances. 環境に合わせて変数を更新してください。Update the variables for your environment.

    • $ListenerILBIP は、Azure Load Balancer に対して作成した、可用性グループ リスナーの IP アドレスです。$ListenerILBIP is the IP address that you created on the Azure load balancer for the availability group listener.

    • $ListenerProbePort は、Azure Load Balancer に対して構成した、可用性グループ リスナーのポートです。$ListenerProbePort is the port you configured on the Azure load balancer for the availability group listener.

    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP Address resource name
    $ListenerILBIP = "<n.n.n.n>" # the IP Address of the Internal Load Balancer (ILB). This is the static IP address for the load balancer 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.b. いずれかのクラスター ノード上で PowerShell スクリプトを実行して、クラスター パラメーターを設定します。Set the cluster parameters by running the PowerShell script on one of the cluster nodes.

    注意

    SQL Server インスタンスが別個のリージョンに存在する場合は、PowerShell スクリプトを 2 回実行する必要があります。If your SQL Server instances are in separate regions, you need to run the PowerShell script twice. 1 回目の実行では、1 番目のリージョンの $ListenerILBIP$ListenerProbePort を使用します。The first time, use the $ListenerILBIP and $ListenerProbePort from the first region. 2 回目の実行では、2 番目のリージョンの $ListenerILBIP$ListenerProbePort を使用します。The second time, use the $ListenerILBIP and $ListenerProbePort from the second region. クラスター ネットワーク名とクラスター IP リソース名も、リージョンごとに異なります。The cluster network name and the cluster IP resource name are also different for each region.

  8. 可用性グループ クラスター ロールをオンラインにします。Bring the availability group cluster role online. [フェールオーバー クラスター マネージャー][ロール] で該当するロールを右クリックし、 [ロールの起動] を選択します。In Failover Cluster Manager under Roles, right click the role, and select Start Role.

必要に応じて上記の手順を繰り返し、WSFC クラスター IP アドレスのクラスター パラメーターを設定します。If necessary, repeat the steps above to set the cluster parameters for the WSFC cluster IP address.

  1. WSFC クラスター IP アドレスの IP アドレス名を取得します。Get the IP address name of the WSFC Cluster IP address. [フェールオーバー クラスター マネージャー][クラスター コア リソース] で、 [サーバー名] を見つけます。In Failover Cluster Manager under Cluster Core Resources, locate Server Name.

  2. [IP アドレス] を右クリックし、 [プロパティ] を選択します。Right-click IP Address, and select Properties.

  3. IP アドレスの [名前] をコピーします。Copy the Name of the IP address. たとえば Cluster IP Address です。It may be Cluster IP Address.

  4. PowerShell でクラスターのパラメーターを設定します。Set the cluster parameters in PowerShell.

    a.a. いずれかの SQL Server インスタンスに次の PowerShell スクリプトをコピーします。Copy the following PowerShell script to one of your SQL Server instances. 環境に合わせて変数を更新してください。Update the variables for your environment.

    • $ClusterCoreIP は、Azure Load Balancer に対して作成した、WSFC コア クラスター リソースの IP アドレスです。$ClusterCoreIP is the IP address that you created on the Azure load balancer for the WSFC core cluster resource. 可用性グループ リスナーの IP アドレスとは異なります。It is different from the IP address for the availability group listener.

    • $ClusterProbePort は、Azure Load Balancer に対して構成した、WSFC 正常性プローブのポートです。$ClusterProbePort is the port you configured on the Azure load balancer for the WSFC health probe. 可用性グループ リスナーのプローブとは異なります。It is different from the probe for the availability group listener.

    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher 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 you configured in the Azure portal.
    [int]$ClusterProbePort = <nnnnn> # The probe port from the WSFCEndPointprobe in the Azure portal. This port must be different from the probe port for the availability group listener probe port.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ClusterCoreIP";"ProbePort"=$ClusterProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b.b. いずれかのクラスター ノード上で PowerShell スクリプトを実行して、クラスター パラメーターを設定します。Set the cluster parameters by running the PowerShell script on one of the cluster nodes.

警告

可用性グループ リスナーの正常性プローブのポートは、クラスター コア IP アドレスの正常性プローブ ポートとは違っている必要があります。The availability group listener health probe port has to be different from the cluster core IP address health probe port. これらの例では、リスナー ポートが 59999 で、クラスター コアの IP アドレスが 58888 です。In these examples, the listener port is 59999 and the cluster core IP address is 58888. どちらのポートも、受信を許可するようにファイアウォール規則が設定されている必要があります。Both ports require an allow inbound firewall rule.

SQL Server Management Studio でリスナー ポートを設定するSet the listener port in SQL Server Management Studio

  1. SQL Server Management Studio を起動し、プライマリ レプリカに接続します。Launch SQL Server Management Studio and connect to the primary replica.

  2. [AlwaysOn 高可用性] | 、 [可用性グループ] | 、 [可用性グループ リスナー] の順に移動します。Navigate to AlwaysOn High Availability | Availability Groups | Availability Group Listeners.

  3. フェールオーバー クラスター マネージャーで作成したリスナー名が表示されます。You should now see the listener name that you created in Failover Cluster Manager. リスナー名を右クリックし、 [プロパティ] をクリックします。Right-click the listener name and click Properties.

  4. [ポート] ボックスで、以前に使用した $EndpointPort (既定値は 1433) を使用し、可用性グループ リスナーのポート番号を指定して、 [OK] をクリックします。In the Port box, specify the port number for the availability group listener by using the $EndpointPort you used earlier (1433 was the default), then click OK.

リスナーへの接続をテストするTest the connection to the listener

接続をテストするには、次の手順に従います。To test the connection:

  1. 同じ仮想ネットワークに存在する、レプリカを所有していない SQL Server に RDP で接続します。RDP to a SQL Server that is in the same virtual network, but does not own the replica. クラスター内の別の SQL Server がそれに該当します。This can be the other SQL Server in the cluster.

  2. sqlcmd ユーティリティを使用して接続をテストします。Use sqlcmd utility to test the connection. たとえば次のスクリプトは、Windows 認証を使用し、リスナー経由でプライマリ レプリカとの sqlcmd 接続を確立しています。For example, the following script establishes a sqlcmd connection to the primary replica through the listener with Windows authentication:

    sqlcmd -S <listenerName> -E
    

    リスナーが既定のポート (1433) 以外のポートを使用している場合は、そのポートを接続文字列で指定します。If the listener is using a port other than the default port (1433), specify the port in the connection string. たとえば、次の sqlcmd コマンドは、ポート 1435 でリスナーに接続します。For example, the following sqlcmd command connects to a listener at port 1435:

    sqlcmd -S <listenerName>,1435 -E
    

SQLCMD 接続では、プライマリ レプリカをホストしている SQL Server インスタンスに対して自動的に接続されます。The SQLCMD connection automatically connects to whichever instance of SQL Server hosts the primary replica.

注意

指定したポートは、両方の SQL Server のファイアウォールで必ず開放してください。Make sure that the port you specify is open on the firewall of both SQL Servers. 使用する TCP ポートに対する入力方向の規則が両方のサーバーに必要となります。Both servers require an inbound rule for the TCP port that you use. 詳細については、「 ファイアウォール規則を追加または編集する 」を参照してください。See Add or Edit Firewall Rule for more information.

ガイドラインと制限Guidelines and limitations

内部ロード バランサーを使用した Azure の可用性グループ リスナーに関する次のガイドラインを確認してください。Note the following guidelines on availability group listener in Azure using internal load balancer:

  • 内部ロード バランサーでは、同じ仮想ネットワーク内からしかリスナーにアクセスできません。With an internal load balancer, you only access the listener from within the same virtual network.

  • Azure ネットワーク セキュリティ グループを使用してアクセスを制限する場合は、バックエンド SQL Server VM の IP アドレス、AG リスナーのロード バランサー フローティング IP アドレス、および該当する場合はクラスター コア IP アドレスが許可ルールに含まれていることを確認します。If you are restricting access with an Azure Network Security Group, ensure that the allow rules include the backend SQL Server VM IP addresses, and the load balancer floating IP addresses for the AG listener and the cluster core IP address, if applicable.

詳細情報For more information

詳細については、「Azure VM での AlwaysOn 可用性グループの手動構成」をご覧ください。For more information, see Configure Always On availability group in Azure VM manually.

PowerShell コマンドレットPowerShell cmdlets

Azure 仮想マシン用の内部ロード バランサーを作成するには、次の PowerShell コマンドレットを使用します。Use the following PowerShell cmdlets to create an internal load balancer for Azure virtual machines.