Always On 可用性グループのリスナーの構成Configure a listener for an Always On availability group

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 SQL Server Management StudioSQL Server Management Studio、または PowerShell を使用して、AlwaysOn 可用性グループに対して 1 つの Transact-SQLTransact-SQL可用性グループ リスナー SQL Server 2017SQL Server 2017を作成または構成する方法について説明します。This topic describes how to create or configure a single availability group listener for an Always On availability group by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell in SQL Server 2017SQL Server 2017.

重要

可用性グループの最初の可用性グループ リスナーを作成するには、SQL Server Management StudioSQL Server Management StudioTransact-SQLTransact-SQL、または SQL ServerSQL Server PowerShell を使用することを強くお勧めします。To create the first availability group listener of an availability group, we strongly recommend that you use SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or SQL ServerSQL Server PowerShell. 必要な場合 (追加リスナーを作成する場合など) を除いて、WSFC クラスターでリスナーを直接作成することは避けてください。Avoid creating a listener directly in the WSFC cluster except when necessary, for example, to create an additional listener.

この可用性グループに既にリスナーが存在するかDoes a Listener Exist for this Availability Group Already?

可用性グループにリスナーが既に存在するかどうかを確認するにはTo determine whether a listener already exists for the availability group

注意

リスナーが既に存在するときに追加リスナーを作成する場合は、このトピックの「 可用性グループの追加のリスナーを作成するには (省略可能)」を参照してください。If a listener already exists and you want to create an additional listener, see To Create An Additional Listener for an Availability Group (Optional), later in this topic.

制限事項と制約事項Limitations and Restrictions

  • SQL ServerSQL Serverで、可用性グループに対して作成できるリスナーは 1 つのみです。You can create only one listener per availability group through SQL ServerSQL Server. 通常、それぞれの可用性グループで必要なリスナーは 1 つだけです。Typically, each availability group requires only one listener. ただし、一部の顧客シナリオでは、1 つの可用性グループで複数のリスナーが必要です。However, some customer scenarios require multiple listeners for one availability group. SQL Server で 1 つのリスナーを作成した後、フェールオーバー クラスターの Windows PowerShell または WSFC フェールオーバー クラスター マネージャーを使用して、追加のリスナーを作成します。After creating a listener through SQL Server, you can use Windows PowerShell for failover clusters or the WSFC Failover Cluster Manager to create additional listeners. 詳細については、このトピックの後の「 可用性グループの追加のリスナーを作成するには (省略可能)」を参照してください。For more information, see To Create An Additional Listener for an Availability Group (Optional), later in this topic.

推奨事項Recommendations

複数のサブネットを構成する場合は、必須ではありませんが、静的 IP アドレスの使用をお勧めします。Using a static IP address is recommended, although not required, for multiple subnet configurations.

前提条件Prerequisites

  • プライマリ レプリカをホストするサーバー インスタンスに接続されている必要があります。You must be connected to the server instance that hosts the primary replica.

  • 複数のサブネットにわたる可用性グループ リスナーを設定し、静的 IP アドレスを使用する場合は、リスナーを作成する可用性グループの可用性レプリカがホストされているすべてのサブネットの静的 IP アドレスを取得する必要があります。If you are setting up an availability group listener across multiple subnets and plan to use static IP addresses, you need to get the static IP address of every subnet that hosts an availability replica for the availability group for which you are creating the listener. 通常は、静的 IP アドレスをネットワーク管理者に問い合わせる必要があります。Usually, you will need to ask your network administrators for the static IP addresses.

重要

初めてリスナーを作成する前に、「AlwaysOn クライアント接続 (SQL Server)」を読むことを強くお勧めします。Before you create your first listener, we strongly recommend that you read Always On Client Connectivity (SQL Server).

可用性グループ リスナーの DNS 名の要件Requirements for the DNS Name of an Availability Group Listener

各可用性グループ リスナーは、ドメインおよび NetBIOS 内で一意の DNS ホスト名を必要とします。Each availability group listener requires a DNS host name that is unique in the domain and in NetBIOS. DNS 名は、文字列値です。The DNS name is a string value. この名前には、英数字、ダッシュ/ハイフン (-)、およびアンダースコア () のみを任意の順序で含めることができます。This name can contain only alphanumeric characters, dashes/hyphens (-), and underscores (), in any order. DNS ホスト名では大文字と小文字は区別されません。DNS host names are case insensitive. 最大長は 63 文字です。ただし、 SQL Server Management StudioSQL Server Management Studioで指定できる最大長は 15 文字です。The maximum length is 63 characters, however, in SQL Server Management StudioSQL Server Management Studio, the maximum length you can specify is 15 characters.

意味のある文字列を指定することをお勧めします。We recommend that you specify a meaningful string. たとえば、可用性グループの名前が AG1の場合は、 ag1-listenerのような意味のある DNS ホスト名にします。For example, for an availability group named AG1, a meaningful DNS host name would be ag1-listener.

重要

NetBIOS では、dns_name の最初の 15 文字のみが認識されます。NetBIOS recognizes only the first 15 chars in the dns_name. 同じ Active Directory で制御されている 2 つの WSFC クラスターがあり、両方のクラスターで可用性グループ リスナーを作成しようとする場合、15 文字より長い名前を使用して、15 文字のプレフィックスが同一であると、仮想ネットワーク名リソースをオンラインにできなかったことを示すエラーが表示されます。If you have two WSFC clusters that are controlled by the same Active Directory and you try to create availability group listeners in both of clusters using names with more than 15 characters and an identical 15 character prefix, you will get an error reporting that the Virtual Network Name resource could not be brought online. DNS 名のプレフィックスに対する名前付け規則の詳細については、「 ドメイン名を割り当てる」を参照してください。For information about prefix naming rules for DNS names, see Assigning Domain Names.

Windows 権限Windows Permissions

アクセス許可Permissions リンクLink
可用性グループをホストしている WSFC クラスターのクラスター オブジェクト名 (CNO) には、 Create Computer objects アクセス許可が必要です。The cluster object name (CNO) of WSFC cluster that is hosting the availability group must have Create Computer objects permission.

Active Directory では、CNO は既定で Create Computer objects アクセス許可を明示的に持たず、仮想コンピューター オブジェクト (VCO) を最大で 10 個作成できます。In Active Directory, a CNO by default does not have Create Computer objects permission explicitly and can create 10 virtual computer objects (VCOs). VCO を 10 個作成した後、追加で VCO を作成しようとしても失敗します。After 10 VCOs are created, the creation of additional VCOs will fail. この問題は、WSFC クラスターの CNO に権限を明示的に与えることで回避できます。You can avoid this by granting the permission explicitly to the WSFC cluster's CNO. 削除した可用性グループの VCO は Active Directory 内で自動的に削除されず、手動で削除しない限り、VCO の 10 個の既定の制限の対象としてカウントされます。Note that VCOs for availability groups that you have deleted are not automatically deleted in Active Directory and count against your 10 VCO default limit unless they are manually deleted.

注:組織によっては、Create Computer objects 権限を個別のユーザー アカウントに付与することがセキュリティ ポリシーで禁止されている場合があります。Note: In some organizations, the security policy prohibits granting Create Computer objects permission to individual user accounts.
クラスターをインストールするユーザーのアカウントを構成する手順: 「フェールオーバー クラスター ステップ バイ ステップ ガイド:Active Directory のアカウントの構成Steps for configuring the account for the person who installs the cluster in Failover Cluster Step-by-Step Guide: Configuring Accounts in Active Directory

クラスター名アカウントを事前設定する手順:フェールオーバー クラスター ステップ バイ ステップ ガイド:Active Directory のアカウントの構成Steps for prestaging the cluster name account in Failover Cluster Step-by-Step Guide: Configuring Accounts in Active Directory
リスナーの仮想ネットワーク名にコンピューター アカウントを事前設定する必要がある場合は、 Account Operator グループのメンバーシップが必要です。または、ドメイン管理者に依頼する必要があります。If your organization requires that you prestage the computer account for a listener virtual network name, you will need membership in the Account Operator group or your domain administrator's assistance. クラスター化されたサービスまたはアプリケーションのアカウントを事前設定する手順: 「フェールオーバー クラスター ステップ バイ ステップ ガイド:Active Directory のアカウントの構成Steps for prestaging an account for a clustered service or application in Failover Cluster Step-by-Step Guide: Configuring Accounts in Active Directory.

ヒント

一般的には、リスナーの仮想ネットワーク名にコンピューター アカウントを事前設定しないことが最も簡単です。Generally, it is simplest not to prestage the computer account for a listener virtual network name. 可能な場合は、WSFC の高可用性ウィザードを実行する際にアカウントが自動的に作成および構成されるように構成します。If you can, let the account to be created and configured automatically when you run the WSFC High Availability wizard.

SQL Server 権限SQL Server Permissions

タスクTask アクセス許可Permissions
可用性グループ リスナーを作成するにはTo create an availability group listener sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.
既存の可用性グループ リスナーを変更するにはTo modify an existing availability group listener 可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

SQL Server Management Studio の使用Using SQL Server Management Studio

ヒント

新しい可用性グループ ウィザード は、新しい可用性グループに対するリスナーの作成をサポートします。The New Availability Group wizard supports creation of the listener for a new availability group.

可用性グループ リスナーを作成または構成するにはTo create or configure an availability group listener

  1. オブジェクト エクスプローラーで、可用性グループのプライマリ レプリカをホストするサーバー インスタンスに接続し、サーバー名をクリックしてサーバー ツリーを展開します。In Object Explorer, connect to the server instance that hosts the primary replica of the availability group, and click the server name to expand the server tree.

  2. [AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。Expand the Always On High Availability node and the Availability Groups node.

  3. リスナーを構成する可用性グループをクリックし、次のいずれかを選択します。Click the availability group whose listener you want to configure, and choose one of the following alternatives:

    • リスナーを作成するには、 [可用性グループ リスナー] ノードを右クリックし、 [新しいリスナー] をクリックします。To create a listener, right-click the Availability group Listeners node, and select the New Listener command. これにより、 [新しい可用性グループ リスナー] ダイアログ ボックスが開きます。This opens the New Availability Group Listener dialog box. 詳細については、このトピックの「 [新しい可用性グループ リスナー] (ダイアログ ボックス)」を参照してください。For more information, see Add Availability Group Listener (Dialog Box), later in this topic.

    • 既存のリスナーのポート番号を変更するには、 [可用性グループ リスナー] ノードを展開し、リスナーを右クリックして、 [プロパティ] をクリックします。To change the port number of an existing listener, expand the Availability group Listeners node, right-click the listener, and select the Properties command. [ポート] フィールドに新しいポート番号を入力し、 [OK] をクリックします。Enter the new port number into the Port field, and click OK.

[新しい可用性グループ リスナー] (ダイアログ ボックス)New Availability Group Listener (Dialog Box)

[リスナーの DNS 名]Listener DNS Name
可用性グループ リスナーの DNS ホスト名を指定します。Specifies the DNS host name of the availability group listener. DNS 名は、ドメインおよび NetBIOS 内で一意であることが必要な文字列です。The DNS name is a string must be unique in the domain and in NetBIOS. この名前には、英数字、ダッシュ (-)、およびハイフン () のみを任意の順序で含めることができます。This name can contain only alphanumeric characters, dashes (-), and hyphens (), in any order. DNS ホスト名では大文字と小文字は区別されません。DNS host names are case insensitive. 最大長は 15 文字です。The maximum length is 15 characters.

詳細については、このトピックの前の「 可用性グループ リスナーの DNS 名の要件」を参照してください。For more information, see Requirements for the DNS Name of an Availability Group Listener, earlier in this topic.

[ポート]Port
このリスナーで使用される TCP ポート。The TCP port used by this listener.

[ネットワーク モード]Network Mode
リスナーで使用される TCP プロトコルを指定します。次のいずれかです。Indicates the TCP protocol used by the listener, one of:

[DHCP]DHCP
リスナーは、動的ホスト構成プロトコル (DHCP) を実行しているサーバーによって割り当てられる動的 IP アドレスを使用します。The listener will us a dynamic IP address that is assigned by a server running the Dynamic Host Configuration Protocol (DHCP). DHCP は、単一のサブネットに制限されます。DHCP is limited to a single subnet.

重要

運用環境での DHCP の使用はお勧めしません。We do not recommend DHCP in production environment. ダウンタイムが発生して DHCP IP のリース期限が切れると、リスナーの DNS 名に関連付けられている新しい DHCP のネットワーク IP アドレスの登録に余分な時間がかかり、クライアント接続に影響が及びます。If there is a down time and the DHCP IP lease expires, extra time is required to register the new DHCP network IP address that is associated with the listener DNS name and impact the client connectivity. ただし、開発環境とテスト環境を設定して可用性グループの基本機能を確認する場合や、アプリケーションとの統合の場合には DHCP が適しています。However, DHCP is good for setting up your development and testing environment to verify basic functions of availability groups and for integration with your applications.

[静的 IP]Static IP
リスナーは、1 つまたは複数の静的 IP アドレスを使用します。The listener will use one or more static IP addresses. 必要に応じて追加の IP アドレスを指定できます。Additional IP addresses are optional. 複数のサブネットにわたる可用性グループ リスナーを作成するには、各サブネットのリスナー構成に静的 IP アドレスを指定する必要があります。To create an availability group listener across multiple subnets, for each subnet you must specify a static IP address in the listener configuration. これらの静的 IP アドレスを取得するには、ネットワーク管理者に問い合わせてください。Contact your network administrator to get these static IP addresses.

[静的 IP] を選択した場合、 [ネットワーク モード] フィールドの下にサブネット グリッドが表示されます。If you select Static IP a subnet grid appears below the Network Mode field. このグリッドに、この可用性グループ リスナーによってアクセスできる各サブネットについての情報が表示されます。This grid displays information about each subnet that can be accessed by this availability group listener. このグリッドは、 [追加] をクリックして静的 IP アドレスを追加するまでは空です。This grid is empty until you add a static IP address by clicking Add.

次の列で構成されます。The columns are as follows:

[サブネット]Subnet
可用性グループ リスナーに追加される各サブネットの識別子が表示されます。Displays the identifier of each subnet that you add to the availability group listener.

[IP アドレス]IP Address
特定のサブネットの IP アドレスが表示されます。Displays the IP address of a given subnet. サブネットの IP アドレスには、IPv4 アドレスまたは IPv6 アドレスを使用できます。For a given subnet, the IP address is either an IPv4 address or an IPv6 address.

[追加]Add
選択したサブネットまたはこのリスナーの別のサブネットに静的 IP アドレスを追加する場合にクリックします。Click to add to add a static IP address to a selected subnet or to another subnet for this listener. クリックすると、 [IP アドレスの追加] ダイアログ ボックスが開きます。This opens the Add IP Address dialog box. 詳細については、「[IP アドレスの追加] ダイアログ ボックス (SQL Server Management Studio)」ヘルプ トピックを参照してください。For more information, see the Add IP Address Dialog Box (SQL Server Management Studio) help topic.

[削除]Remove
選択したサブネットをこのリスナーから削除する場合にクリックします。Click to remove the selected subnet from this listener.

[OK]OK
指定した可用性グループ リスナーを作成する場合にクリックします。Click to create the specified availability group listener.

Transact-SQL の使用Using Transact-SQL

可用性グループ リスナーを作成または構成するにはTo create or configure an availability group listener

  1. プライマリ レプリカをホストするサーバー インスタンスに接続します。Connect to the server instance that hosts the primary replica.

  2. CREATE AVAILABILITY GROUP ステートメントの LISTENER オプションまたは ALTER AVAILABILITY GROUP ステートメントの ADD LISTENER オプションを使用します。Use the LISTENER option of the CREATE AVAILABILITY GROUP statement or the ADD LISTENER option of the ALTER AVAILABILITY GROUP statement.

    次の例では、可用性グループ リスナーを MyAg2という名前の既存の可用性グループに追加します。The following example adds an availability group listener to an existing availability group named MyAg2. このリスナーには、一意の DNS 名 MyAg2ListenerIvP6を指定します。A unique DNS name, MyAg2ListenerIvP6, is specified for this listener. 2 つのレプリカが異なるサブネット上に存在するため、(推奨されるように) リスナーで静的 IP アドレスを使用します。The two replicas are on different subnets, so , as recommended, the listener uses static IP addresses. WITH IP 句には、2 つの可用性レプリカについて、それぞれ IPv6 形式の静的 IP アドレス ( 2001:4898:f0:f00f::cf3c and 2001:4898:e0:f213::4ce2) を指定します。For each of the two availability replicas, the WITH IP clause specifies a static IP address, 2001:4898:f0:f00f::cf3c and 2001:4898:e0:f213::4ce2, which use the IPv6 format. また、この例では、オプションの PORT 引数を使用して、 60173 をリスナー ポートとして指定しています。This example also specifies uses the optional PORT argument to specify port 60173 as the listener port.

    ALTER AVAILABILITY GROUP MyAg2   
          ADD LISTENER 'MyAg2ListenerIvP6' ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173 );   
    GO  
    
    

PowerShell の使用Using PowerShell

可用性グループ リスナーを作成または構成するにはTo create or configure an availability group listener

  1. プライマリ レプリカをホストするサーバー インスタンスにディレクトリを変更 (cd) します 。Change directory (cd) to the server instance that hosts the primary replica.

  2. 可用性グループ リスナーを作成または変更するには、次のコマンドレットのいずれかを使用します。To create or modify an availability group listener use one of the following cmdlets:

    New-SqlAvailabilityGroupListenerNew-SqlAvailabilityGroupListener
    新しい可用性グループ リスナーを作成して、既存の可用性グループにアタッチします。Creates a new availability group listener and attaches it to an existing availability group.

    たとえば、次の New-SqlAvailabilityGroupListener コマンドは、可用性グループ MyListener に対し、 MyAgという名前の可用性グループ リスナーを作成します。For example, the following New-SqlAvailabilityGroupListener command creates an availability group listener named MyListener for the availability group MyAg. このリスナーは、 -StaticIp パラメーターに渡された IPv4 アドレスを仮想 IP アドレスとして使用します。This listener will use the IPv4 address passed to the -StaticIp parameter as its virtual IP address.

    New-SqlAvailabilityGroupListener -Name MyListener `   
    -StaticIp '192.168.3.1/255.255.252.0' `   
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg  
    
    

    Set-SqlAvailabilityGroupListenerSet-SqlAvailabilityGroupListener
    既存の可用性グループ リスナーのポート設定を変更します。Modifies the port setting on an existing availability group listener.

    たとえば、次の Set-SqlAvailabilityGroupListener コマンドは、 MyListener という名前の可用性グループ リスナーのポート番号を 1535に設定します。For example, the following Set-SqlAvailabilityGroupListener command sets the port number for the availability group listener named MyListener to 1535. このポートは、リスナーへの接続をリッスンするために使用されます。This port is used to listen for connections to the listener.

    Set-SqlAvailabilityGroupListener -Port 1535 `   
    -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg\AGListeners\MyListener  
    
    

    Add-SqlAGListenerstaticIpAdd-SqlAGListenerstaticIp
    既存の可用性グループ リスナー構成に静的 IP アドレスを追加します。Adds a static IP address to an existing availability group listener configuration. IP アドレスには、サブネットを含む IPv4 アドレス、または IPv6 アドレスを指定できます。The IP address can be an IPv4 address with subnet, or an IPv6 address.

    たとえば、次の Add-SqlAGListenerstaticIp コマンドは、可用性グループ MyListener の可用性グループ リスナー MyAgに静的 IPv4 アドレスを追加します。For example, the following Add-SqlAGListenerstaticIp command adds a static IPv4 address to the availability group listener MyListener on the availability group MyAg. この IPv6 アドレスは、サブネット 255.255.252.0でリスナーの仮想 IP アドレスとして機能します。This IPv6 address serves as the virtual IP address of the listener on the subnet 255.255.252.0. 可用性グループが複数のサブネットにまたがっている場合は、各サブネットの静的 IP アドレスをリスナーに追加する必要があります。If the availability group spans multiple subnets, you should add a static IP address for each subnet to the listener.

    $path = "SQLSERVER:\SQL\PrimaryServer\InstanceName\AvailabilityGroups\MyAg\AGListeners\ MyListener" `   
    Add-SqlAGListenerstaticIp -Path $path `   
    -StaticIp "2001:0db8:85a3:0000:0000:8a2e:0370:7334"  
    

    注意

    コマンドレットの構文を表示するには、 PowerShell 環境で Get-Help SQL ServerSQL Server コマンドレットを使用します。To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. 詳細については、「 Get Help SQL Server PowerShell」を参照してください。For more information, see Get Help SQL Server PowerShell.

SQL Server PowerShell プロバイダーを設定して使用するにはTo set up and use the SQL Server PowerShell provider

トラブルシューティングTroubleshooting

Active Directory クォータが原因で可用性グループ リスナーの作成が失敗する問題Failure to Create An Availability Group Listener Because of Active Directory Quotas

新しい可用性グループ リスナーの作成は、参加しているクラスター ノード マシン アカウントの Active Directory クォータに達したため、失敗する場合があります。The creation of a new availability group listener may fail upon creation because you have reached an Active Directory quota for the participating cluster node machine account. 詳細については、次の各資料を参照してください。For more information, see the following articles:

補足情報:可用性グループ リスナーを作成した後Follow-up: After Creating an Availability Group Listener

MultiSubnetFailover のキーワードおよび関連機能MultiSubnetFailover Keyword and Associated Features

MultiSubnetFailover は、SQL Server 2012 の AlwaysOn 可用性グループおよび AlwaysOn フェールオーバー クラスター インスタンスに対して高速フェールオーバーを有効にするために使用する新しい接続文字列キーワードです。MultiSubnetFailover is a new connection string keyword used to enable faster failover with Always On Availability Groups and Always On Failover Cluster Instances in SQL Server 2012. 接続文字列で MultiSubnetFailover=True が設定されていると、次の 3 つのサブ機能が有効になります。The following three sub-features are enabled when MultiSubnetFailover=True is set in connection string:

  • AlwaysOn 可用性グループまたはフェールオーバー クラスター インスタンスに対する複数サブネット リスナーへのより高速なマルチサブネット フェールオーバー。Faster multi-subnet failover to a multi-subnet listener for an Always On Availability Group or Failover Cluster Instances.

  • AlwaysOn 可用性グループまたはフェールオーバー クラスター インスタンスの単一サブネット リスナーへのより高速な単一サブネット フェールオーバー。Faster single subnet failover to a single subnet listener for an Always On Availability Group or Failover Cluster Instances.

    • この機能は、単一のサブネット内に単一の IP を持つリスナーに接続する場合に使用されます。This feature is used when connecting to a listener that has a single IP in a single subnet. TCP 接続の再試行をより積極的に実行して、単一サブネット フェールオーバーを高速化します。This performs more aggressive TCP connection retries to speed up single subnet failovers.
  • マルチサブネット AlwaysOn フェールオーバー クラスター インスタンスへの名前付きインスタンスの解決。Named instance resolution to a multi-subnet Always On Failover Cluster Instance.

    • 複数サブネット エンドポイントを持つ AlwaysOn フェールオーバー クラスター インスタンスの名前付きインスタンス解決サポートを追加します。This is to add named instance resolution support for an Always On Failover Cluster Instances with multiple subnet endpoints.

.NET Framework 3.5 および OLEDB で MultiSubnetFailover=True はサポートされないMultiSubnetFailover=True Not Supported by NET Framework 3.5 or OLEDB

問題点: 異なるサブネットからの複数の IP アドレスに応じて可用性グループまたはフェールオーバー クラスター インスタンスにリスナー名 (ネットワーク名または WSFC クラスター マネージャーのクライアント アクセス ポイント) がある場合に、ADO.NET with .NET Framework 3.5SP1 または SQL Native Client 11.0 OLEDB を使用していると、可用性グループ リスナーに対するクライアント接続要求の 50% が接続タイムアウトに達する可能性があります。Issue: If your Availability Group or Failover Cluster Instance has a listener name (known as the network name or Client Access Point in the WSFC Cluster Manager) depending on multiple IP addresses from different subnets, and you are using either ADO.NET with .NET Framework 3.5SP1 or SQL Native Client 11.0 OLEDB, potentially 50% of your client-connection requests to the availability group listener will hit a connection timeout.

回避策: 次のいずれかのタスクを実行することをお勧めします。Workarounds: We recommend that you do one of the following tasks.

  • クラスター リソースを操作する権限がない場合は、接続タイムアウトを 30 秒に設定します (この値は結果として、20 秒の TCP タイムアウトと 10 秒のバッファーになります)。If do not have the permission to manipulate cluster resources, change your connection timeout to 30 seconds (this value results in a 20-second TCP timeout period plus a 10-second buffer).

    長所: :クロスサブネット フェールオーバーが発生した場合、クライアントの復旧時間が短くなります。Pros: If a cross-subnet failover occurs, client recovery time is short.

    短所:半数のクライアント接続に 20 秒以上要しますCons: Half of the client connections will take more than 20 seconds

  • クラスター リソースを操作する権限がある場合は、可用性グループ リスナーのネットワーク名を RegisterAllProvidersIP=0に設定する方法をお勧めします。If you have the permission to manipulate cluster resources, the more recommended approach is to set the network name of your availability group listener to RegisterAllProvidersIP=0. 詳細については、このセクションの「RegisterAllProvidersIP の設定」を参照してください。For more information, see "RegisterAllProvidersIP Setting" later in this section.

    長所: クライアント接続のタイムアウト値を大きくする必要がありません。Pros: You do not need to increase your client-connection timeout value.

    短所: クロスサブネット フェールオーバーが発生した場合、HostRecordTTL 設定およびクロスサイト DNS/AD レプリケーション スケジュールの設定によっては、クライアントの復旧時間が 15 分以上になります。Cons: If a cross-subnet failover occurs, the client recovery time could be 15 minutes or longer, depending on your HostRecordTTL setting and the setting of your cross-site DNS/AD replication schedule.

RegisterAllProvidersIP の設定RegisterAllProvidersIP Setting

SQL Server Management StudioSQL Server Management StudioTransact-SQLTransact-SQL、または PowerShell を使用して可用性グループ リスナーを作成すると、WSFC にクライアント アクセス ポイントが作成され、その RegisterAllProvidersIP プロパティが 1 (true) に設定されます。When you use SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell to create an availability group listener, the Client Access Point is created in WSFC with the RegisterAllProvidersIP property set to 1 (true). このプロパティ値の効果は、次に示すように、クライアント接続文字列によって異なります。The effect of this property value depends on the client connection string, as follows:

  • MultiSubnetFailover を true に設定する接続文字列Connection strings that set MultiSubnetFailover to true

    Always On 可用性グループAlways On availability groups は、クライアント接続文字列で (推奨どおり) を指定しているクライアントのフェールオーバー後の再接続時間を短縮するために、 RegisterAllProvidersIP MultiSubnetFailover = Trueプロパティを 1 に設定します。sets the RegisterAllProvidersIP property to 1 in order to reduce re-connection time after a failover for clients whose client connection strings specify MultiSubnetFailover = True, as recommended. リスナーのマルチサブネット機能を活用するには、クライアントに MultiSubnetFailover キーワードをサポートするデータ プロバイダーが必要な場合があります。Note that to take advantage of the listener multi-subnet feature, your clients might require a data provider that supports the MultiSubnetFailover keyword. マルチサブネット フェールオーバーのドライバー サポートについては、「AlwaysOn クライアント接続 (SQL Server)」を参照してください。For information about driver support for multi-subnet failover, see Always On Client Connectivity (SQL Server).

    マルチサブネット クラスタリングについては、「 SQL Server マルチサブネット クラスタリング (SQL Server)を作成または構成する方法について説明します。For information about multi-subnet clustering, see SQL Server Multi-Subnet Clustering (SQL Server).

    ヒント

    RegisterAllProvidersIP = 1のときに、WSFC クラスターに対して WSFC の構成の検証ウィザードを実行すると、次の警告メッセージが表示されます。When RegisterAllProvidersIP = 1, if you run the WSFC Validate a Configuration Wizard on the WSFC cluster, the wizard generates the following warning message:

    "ネットワーク名 'Name:<network_name>' の RegisterAllProviderIP プロパティは 1 に設定されています。現在のクラスター構成の場合、この値は 0 に設定する必要があります。""The RegisterAllProviderIP property for network name 'Name:<network_name>' is set to 1 For the current cluster configuration this value should be set to 0."

    このメッセージは無視してください。Please ignore this message.

  • MultiSubnetFailover を true に設定しない接続文字列Connection strings that do not set MultiSubnetFailover to true

    RegisterAllProvidersIP = 1の場合、接続文字列で MultiSubnetFailover = Trueを使用しないクライアントは、接続の待機時間が長くなります。When RegisterAllProvidersIP = 1, any clients whose connection strings do not use MultiSubnetFailover = True, will experience high latency connections. これが発生するのは、このようなクライアントはすべての IP への接続を順に試行するためです。This occurs because these clients attempt connections to all IPs sequentially. これに対し、 RegisterAllProvidersIP を 0 に変更すると、WSFC クラスターのクライアント アクセス ポイントにアクティブな IP アドレスが登録され、レガシ クライアントの待機時間が短縮されます。In contrast, if RegisterAllProvidersIP is changed to 0, the active IP address is registered in the Client Access Point in the WSFC cluster, reducing latency for legacy clients. したがって、可用性グループ リスナーに接続する必要がり、MultiSubnetFailover プロパティを使用できないレガシ クライアントがある場合は、RegisterAllProvidersIP を 0 に変更することをお勧めします。Therefore, if you have legacy clients that need to connect to an availability group listener and cannot use the MultiSubnetFailover property, we recommend that you change RegisterAllProvidersIP to 0.

    重要

    WSFC クラスター (フェールオーバー クラスター マネージャーの GUI) を通して可用性グループ リスナーを作成すると、 RegisterAllProvidersIP は既定で 0 (false) になります。When you create an availability group listener through the WSFC cluster (Failover Cluster Manager GUI), RegisterAllProvidersIP will be 0 (false) by default.

HostRecordTTL の設定HostRecordTTL Setting

既定では、クライアントは 20 分間、クラスター DNS レコードをキャッシュします。By default, clients cache cluster DNS records for 20 minutes. HostRecordTTLの値 (キャッシュするレコードの有効期限 (TTL)) を小さくすると、レガシ クライアントはよりすばやく再接続できるようになります。By reducing HostRecordTTL, the Time to Live (TTL), for the cached record, legacy clients may reconnect more quickly. ただし、 HostRecordTTL の設定を小さくすると、DN サーバーへのトラフィックが増加する可能性があります。However, reducing the HostRecordTTL setting may also result in increased traffic to the DN servers.

RegisterAllProvidersIP を無効にし、TTL を短縮する PowerShell サンプル スクリプトSample PowerShell Script to Disable RegisterAllProvidersIP and Reduce TTL

次の PowerShell の例では、リスナー リソースに対する RegisterAllProvidersIP クラスター パラメーターと HostRecordTTL クラスター パラメーターの両方を構成する方法を示しています。The following PowerShell example demonstrates how to configure both the RegisterAllProvidersIP and HostRecordTTL cluster parameters for the listener resource. DNS レコードは、既定の 20 分間ではなく、5 分間キャッシュされます。The DNS record will be cached for 5 minutes rather than the default 20 minutes. 両方のクラスター パラメーターを変更すると、 MultiSubnetFailover パラメーターを使用できないレガシ クライアントのフェールオーバーが発生した後に、適切な IP アドレスに接続する時間が短縮される可能性があります。Modifying both cluster parameters may reduce the time to connect to the correct IP address after a failover for legacy clients that cannot use the MultiSubnetFailover parameter. yourListenerName は、変更対象のリスナーの名前に置き換えてください。Replace yourListenerName with the name of the listener that you are changing.

Import-Module FailoverClusters  
Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0   
Get-ClusterResource yourListenerName|Set-ClusterParameter HostRecordTTL 300  
Stop-ClusterResource yourListenerName  
Start-ClusterResource yourListenerName  

フェールオーバー中の復旧時間の詳細については、「 Client Recovery Latency During Failover」を参照してください。For more information about recovery times during failover, see Client Recovery Latency During Failover.

補足情報: 推奨事項Follow-up Recommendations

可用性グループ リスナーを作成した後:After you create an availability group listener:

  • リスナーの IP アドレスが排他的に使用されるように確保することを、ネットワーク管理者に依頼します。Ask your network administrator to reserve the listener's IP address for its exclusive use.

  • この可用性グループへのクライアント接続を要求するときの接続文字列で使用できるよう、リスナーの DNS ホスト名をアプリケーション開発者に通知します。Give the listener's DNS host name to application developers to use in connection strings when requesting client connections to this availability group.

  • 可能であれば、 MultiSubnetFailover = Trueを指定するようにクライアント接続文字列を更新することを開発者に勧めます。Encourage developers to update client connection strings to specify MultiSubnetFailover = True, if possible. マルチサブネット フェールオーバーのドライバー サポートについては、「AlwaysOn クライアント接続 (SQL Server)」を参照してください。For information about driver support for multi-subnet failover, see Always On Client Connectivity (SQL Server).

可用性グループの追加のリスナーの作成 (省略可能)Create an Additional Listener for an Availability Group (Optional)

SQL Server で 1 つのリスナーを作成した後、次の手順で追加のリスナーを追加できます。After you create one listener through SQL Server, you can add an additional listener, as follows:

  1. 次のツールのいずれかを使用してリスナーを作成します。Create the listener using either of the following tools:

  2. SQL ServerSQL Server で新しいリスナーのリッスンを開始します。Start SQL ServerSQL Server listening on the new listener. 追加リスナーを作成した後、プライマリ レプリカをホストする SQL ServerSQL Server のインスタンスに接続し、 SQL Server Management StudioSQL Server Management StudioTransact-SQLTransact-SQL、または PowerShell を使用してリスナー ポートを変更します。After creating the additional listener, connect to the instance of SQL ServerSQL Server that hosts the primary replica of the availability group and use SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell to modify the listener port.

詳細については、「 同じ可用性グループの複数のリスナーを作成する方法 」(SQL Server AlwaysOn チームのブログ) を参照してください。For more information, see How to create multiple listeners for same availability group (a SQL Server Always On team blog).

関連タスクRelated Tasks

関連コンテンツRelated Content

参照See Also

AlwaysOn 可用性グループの概要 (SQL Server) Overview of Always On Availability Groups (SQL Server)
可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
SQL Server マルチサブネット クラスタリング (SQL Server)SQL Server Multi-Subnet Clustering (SQL Server)