Настройка прослушивателя для группы доступности Always OnConfigure a listener for an Always On availability group

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

В этом разделе описывается создание или настройка одного прослушивателя группы доступности для группы доступности AlwaysOn с помощью среды SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLили PowerShell в SQL ServerSQL Server.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 ServerSQL Server.

Важно!

Для создания первого прослушивателя группы доступности настоятельно рекомендуется использовать SQL Server Management StudioSQL Server Management Studio, Transact-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вы можете создать только один прослушиватель для каждой группы доступности.You can create only one listener per availability group through SQL ServerSQL Server. Обычно для каждой группы доступности требуется только один прослушиватель.Typically, each availability group requires only one listener. Однако в некоторых сценариях клиента требуется несколько прослушивателей на одну группу доступности.However, some customer scenarios require multiple listeners for one availability group. После создания прослушивателя посредством SQL Server для создания дополнительных прослушивателей можно использовать 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

Для каждого прослушивателя группы доступности необходимо имя DNS-узла, уникальное в домене и в NetBIOS.Each availability group listener requires a DNS host name that is unique in the domain and in NetBIOS. Имя DNS является значением типа string.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понятным именем узла DNS будет ag1-listener.For example, for an availability group named AG1, a meaningful DNS host name would be ag1-listener.

Важно!

NetBIOS распознает только первые 15 символов в dns_name.NetBIOS recognizes only the first 15 chars in the dns_name. При наличии двух кластеров WSFC, которые управляются одной службой Active Directory, и попытке создать в обоих кластерах прослушивателей группы доступности с именами, содержащими более 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.

Разрешения WindowsWindows Permissions

РазрешенияPermissions СсылкаLink
Объект имени кластера WSFC (CNO), на котором размещается группа доступности, должен иметь разрешение Создание объектов компьютера .The cluster object name (CNO) of WSFC cluster that is hosting the availability group must have Create Computer objects permission.

В Active Directory объект CNO по умолчанию не имеет явного разрешения Создание объектов компьютера и может создать 10 виртуальных объектов-компьютеров (VCO).In Active Directory, a CNO by default does not have Create Computer objects permission explicitly and can create 10 virtual computer objects (VCOs). После того как сформированы 10 виртуальных объектов-компьютеров, создание дополнительных объектов VCO завершится ошибкой.After 10 VCOs are created, the creation of additional VCOs will fail. Этого можно избежать, явно предоставив разрешение объекту CNO кластера WSFC.You can avoid this by granting the permission explicitly to the WSFC cluster's CNO. Обратите внимание, что виртуальные объекты-компьютеры для удаленных групп доступности не удаляются автоматически в Active Directory и засчитываются в счет ограничения в 10 объектов VCO, если они не удалены вручную.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.

Примечание. В некоторых организациях политика безопасности запрещает предоставлять разрешение Создание объектов компьютера отдельным учетным записям пользователей.Note: In some organizations, the security policy prohibits granting Create Computer objects permission to individual user accounts.
Действия по настройке учетной записи для лица, которое устанавливает кластер в разделе Пошаговое руководство по отказоустойчивому кластеру. Настройка учетных записей в Active DirectorySteps for configuring the account for the person who installs the cluster in Failover Cluster Step-by-Step Guide: Configuring Accounts in Active Directory

Действия по предварительной настройке учетной записи имени кластера в разделе Пошаговое руководство по отказоустойчивому кластеру. Настройка учетных записей в Active DirectorySteps 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 ServerSQL 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 StudioUsing 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. Введите новый номер порта в поле Порт и нажмите кнопку ОК.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
TPC-порт, используемый этим прослушивателем.The TCP port used by this listener.

Сетевой режимNetwork Mode
Указывает TCP-протокол, используемый прослушивателем, один из:Indicates the TCP protocol used by the listener, one of:

DHCPDHCP
Прослушиватель будет использовать динамический IP-адрес, назначенный сервером, на котором запущен DHCP-протокол.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. Если во время простоя аренда IP-адреса протокола DHCP истечет, то на регистрацию нового сетевого IP-адреса протокола DHCP, связанного с именем DNS-прослушивателя, уйдет дополнительное время, что скажется на производительности клиента.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
Прослушиватель будет использовать один или несколько статических 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.

OKOK
Нажмите, чтобы создать указанный прослушиватель группы доступности.Click to create the specified availability group listener.

Использование Transact-SQLUsing Transact-SQL

Создание или настройка прослушивателя группы доступностиTo create or configure an availability group listener

  1. Подключитесь к экземпляру сервера, на котором находится первичная реплика.Connect to the server instance that hosts the primary replica.

  2. Используйте параметр LISTENER в инструкции CREATE AVAILABILITY GROUP или параметр ADD ISTENER для инструкции ALTER AVAILABILITY GROUP .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. Две реплики находятся в разных подсетях, поэтому согласно рекомендации прослушиватель использует статические IP-адреса.The two replicas are on different subnets, so , as recommended, the listener uses static IP addresses. Для каждой из двух реплик доступности предложение WITH IP указывает статический IP-адрес 2001:4898:f0:f00f::cf3c and 2001:4898:e0:f213::4ce2, использующий формат IPv6.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  
    
    

Использование PowerShellUsing 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. Этот прослушиватель в качестве виртуального IP-адреса будет использовать адрес IPv4, переданный в параметре -StaticIp .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 добавляет статический адрес IPv4 в прослушиватель MyListener в группе доступности MyAg.For example, the following Add-SqlAGListenerstaticIp command adds a static IPv4 address to the availability group listener MyListener on the availability group MyAg. Этот адрес IPv6 выступает в роли виртуального IP-адреса прослушивателя в подсети 255.255.252.0.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"  
    

    Примечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде SQL ServerSQL Server PowerShell.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 PowerShellTo set up and use the SQL Server PowerShell provider

Устранение неполадокTroubleshooting

Ошибка создания нового прослушивателя группы доступности из-за квот Active DirectoryFailure 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

Ключевое слово и связанные функции MultiSubnetFailoverMultiSubnetFailover Keyword and Associated Features

MultiSubnetFailover — это новое ключевое слово строки подключения, которое обеспечивает ускоренную отработку отказа для групп доступности AlwaysOn и экземпляров отказоустойчивых кластеров AlwaysOn в SQL Server 2012.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 , то включаются следующие три дополнительные функции.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.

MultiSubnetFailover=True не поддерживается платформой NET Framework 3.5 или OLEDBMultiSubnetFailover=True Not Supported by NET Framework 3.5 or OLEDB

Проблема: Если у группы доступности или экземпляра отказоустойчивого кластера есть имя прослушивателя (в диспетчере кластеров WSFC оно называется сетевым именем или точкой доступа клиента) с зависимостью от нескольких IP-адресов из разных подсетей и при этом используется ADO.NET с платформой .NET Framework 3.5 с пакетом обновления 1 (SP1) или 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.

    Недостатки. При отработке отказа по нескольким подсетям на восстановление клиента может уйти до 15 минут или более в зависимости от значения параметра HostRecordTT, а также графика междоменной репликации DNS/AD.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.

Параметр RegisterAllProvidersIPRegisterAllProvidersIP Setting

При создании прослушивателя группы доступности с помощью SQL Server Management StudioSQL Server Management Studio, Transact-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:

  • Строки подключения, устанавливающие значение true для MultiSubnetFailover .Connection strings that set MultiSubnetFailover to true

    Группы доступности AlwaysOnAlways On availability groups устанавливает свойство RegisterAllProvidersIP в значение 1, чтобы сократить время соединения после перехода на другой ресурс для клиентов, у которых в строке подключения указано MultiSubnetFailover = Trueсогласно рекомендациям.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:

    "Свойству RegisterAllProvidersIP для сетевого имени "Name:<сетевое_имя>" присвоено значение 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.

  • Строки подключения, не устанавливающие значение true для MultiSubnetFailover .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, то IP-адрес включается в список клиентской точки доступа в кластере WSFC и уменьшает задержку для клиентов устаревших версий.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 (графический интерфейс диспетчера отказоустойчивого кластера) свойство 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.

Установка значения HostRecordTTLHostRecordTTL Setting

По умолчанию клиенты кэшируют DNS-записи кластера на 20 минут.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.

Образец скрипта PowerShell для отключения RegisterAllProvidersIP и сокращения TTLSample 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 будет кэшироваться каждые 5 минут, а не 20 минут (по умолчанию).The DNS record will be cached for 5 minutes rather than the default 20 minutes. Изменение обоих параметров кластера может сократить время подключения к правильному IP-адресу после перехода на другой ресурс для клиентов предыдущих версий, которые не могут использовать параметр MultiSubnetFailover .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 можно создать дополнительный прослушиватель следующим образом.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:

    • Использование диспетчера отказоустойчивого кластера WSFC.Using WSFC Failover Cluster Manager:

      1. Добавление точки доступа клиента и настройка IP-адреса.Add a client access point and configure the IP address.

      2. Перевод прослушивателя в режим «в сети».Bring the listener online.

      3. Добавление зависимости в ресурс группы доступности WSFC.Add a dependency to the WSFC availability group resource.

      Дополнительные сведения о диалоговых окнах и вкладках диспетчера отказоустойчивости кластеров см. в статье Пользовательский интерфейс: оснастка "Диспетчер отказоустойчивости кластеров".For information about the dialog boxes and tabs of the Failover Cluster Manager, see User Interface: The Failover Cluster Manager Snap-In.

    • С помощью Windows PowerShell для отказоустойчивых кластеров.Using Windows PowerShell for failover clusters:

      1. Используйте командлет Add-ClusterResource , чтобы создать ресурсы сетевого имени и IP-адреса.Use Add-ClusterResource to create a network name and the IP address resources.

      2. Используйте командлет Start-ClusterResource , чтобы запустить ресурс сетевого имени.Use Start-ClusterResource to start the network name resource.

      3. Используйте командлет Add-ClusterResourceDependency , чтобы задать зависимость между сетевым именем и существующим ресурсом группы доступности SQL Server.Use Add-ClusterResourceDependency to set the dependency between the network name and the existing SQL Server Availability Group resource.

      Сведения об использовании Windows PowerShell для отказоустойчивых кластеров см. в разделе Общие сведения о командах диспетчера сервера.For information about using Windows PowerShell for failover clusters, see Overview of Server Manager Commands.

  2. Запустите прослушивание SQL ServerSQL Server в новом прослушивателе.Start SQL ServerSQL Server listening on the new listener. После создания дополнительного прослушивателя подключитесь к экземпляру SQL ServerSQL Server , на котором размещается первичная реплика группы доступности, и измените порт прослушивателя с помощью среды SQL Server Management StudioSQL Server Management Studio, Transact-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)