Настройка прослушивателя для группы доступности Always On

Применимо к:SQL Server

В этом разделе описывается создание или настройка одного прослушивателя группы доступности для группы доступности Always On с помощью среды SQL Server Management Studio, Transact-SQL или PowerShell в SQL Server.

Важно!

Для создания первого прослушивателя группы доступности настоятельно рекомендуется использовать SQL Server Management Studio, Transact-SQL или SQL Server PowerShell. Старайтесь не создавать прослушиватель непосредственно в кластере WSFC, кроме случаев, когда необходимо, например, создать дополнительный прослушиватель.

Существует ли прослушиватель для этой группы доступности?

Определение наличия прослушивателя для группы доступности

Примечание

Если прослушиватель уже существует и нужно создать дополнительный прослушиватель, см. подраздел Создание дополнительного прослушивателя группы доступности (необязательно)далее в этом разделе.

Ограничения

  • С помощью SQL Serverвы можете создать только один прослушиватель для каждой группы доступности. Обычно для каждой группы доступности требуется только один прослушиватель. Однако в некоторых сценариях клиента требуется несколько прослушивателей на одну группу доступности. После создания прослушивателя посредством SQL Server для создания дополнительных прослушивателей можно использовать Windows PowerShell для отказоустойчивых кластеров или диспетчер кластера WSFC. Дополнительные сведения см. в подразделе Создание дополнительного прослушивателя для группы доступности (необязательно)далее в этом разделе.

Рекомендации

Для конфигураций с несколькими подсетями рекомендуется статический IP-адрес (но это не обязательно).

Предварительные условия

  • Необходимо подключиться к экземпляру сервера, на котором размещена первичная реплика.

  • Если при настройке прослушивателя группы доступности для нескольких подсетей планируется использование статических IP-адресов, то необходимо получить статический IP-адрес каждой подсети, где размещена реплика доступности для группы доступности, для которой создается прослушиватель. Обычно статические IP-адреса можно запросить у сетевого администратора.

Важно!

Перед созданием первого прослушивателя настоятельно рекомендуется прочитать раздел Подключение клиента группы доступности Always On (SQL Server).

Требования к имени DNS прослушивателя группы доступности

Для каждого прослушивателя группы доступности необходимо имя DNS-узла, уникальное в домене и в NetBIOS. Имя DNS является значением типа string. Это имя может содержать только буквы, цифры, тире и дефисы (-), а также знаки подчеркивания (_) в любом порядке. В именах узлов DNS учитывается регистр. Максимальная длина составляет 63 символа, однако в среде SQL Server Management Studioможно указать длину не более 15 символов.

Мы рекомендуем указывать строку, которая поддается толкованию. Например, для группы доступности с именем AG1понятным именем узла DNS будет ag1-listener.

Важно!

NetBIOS распознает только первые 15 символов в dns_name. При наличии двух кластеров WSFC, которые управляются одной службой Active Directory, и попытке создать в обоих кластерах прослушивателей группы доступности с именами, содержащими более 15 символов, и одинаковым префиксом из 15 символов возникнет ошибка, указывающая, что не удалось подключиться к ресурсу с именем виртуальной сети. Дополнительные сведения о правилах именования префиксов для имен DNS см. в разделе Присвоение имен доменов.

Разрешения Windows

Разрешения Ссылка
Объект имени кластера WSFC (CNO), на котором размещается группа доступности, должен иметь разрешение Создание объектов компьютера.

В Active Directory объект CNO по умолчанию не имеет явного разрешения Создание объектов компьютера и может создать 10 виртуальных объектов-компьютеров (VCO). После того как сформированы 10 виртуальных объектов-компьютеров, создание дополнительных объектов VCO завершится ошибкой. Этого можно избежать, явно предоставив разрешение объекту CNO кластера WSFC. Обратите внимание, что виртуальные объекты-компьютеры для удаленных групп доступности не удаляются автоматически в Active Directory и засчитываются в счет ограничения в 10 объектов VCO, если они не удалены вручную.

Примечание. В некоторых организациях политика безопасности запрещает предоставлять разрешение Создание объектов компьютера отдельным учетным записям пользователей.
Действия по настройке учетной записи для лица, которое устанавливает кластер в учебнике Пошаговое руководство по отказоустойчивому кластеру. Настройка учетных записей в Active Directory

Действия по предварительной настройке учетной записи имени кластера в учебнике Пошаговое руководство по отказоустойчивому кластеру. Настройка учетных записей в Active Directory
Если политика организации требует предварительно настроить учетную запись компьютера для виртуального сетевого имени прослушивателя, потребуется членство в группе Account Operator или помощь администратора домена. Шаги по предварительной настройке учетной записи для кластеризованной службы или приложения в учебнике Пошаговое руководство по отказоустойчивому кластеру. Настройка учетных записей в Active Directory

Совет

Как правило, проще всего не выполнять предварительную настройку учетной записи для виртуального сетевого имени прослушивателя. Если это возможно, пусть учетная запись будет создана и настроена автоматически при запуске мастера высокого уровня доступности WSFC.

Разрешения SQL Server

Задача Разрешения
Создание прослушивателя группы доступности Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.
Изменение существующего прослушивателя группы доступности Необходимо разрешение ALTER AVAILABILITY GROUP для группы доступности, разрешение CONTROL AVAILABILITY GROUP, разрешение ALTER ANY AVAILABILITY GROUP или разрешение CONTROL SERVER.

Использование среды SQL Server Management Studio

Совет

Мастер создания группы доступности поддерживает создание прослушивателя для новой группы доступности.

Создание или настройка прослушивателя группы доступности

  1. В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена первичная реплика группы доступности, и щелкните имя сервера, чтобы развернуть дерево сервера.

  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .

  3. Щелкните группу доступности, для которой нужно настроить прослушиватель, и выберите одну из следующих альтернатив.

    • Чтобы создать прослушиватель, щелкните правой кнопкой мыши узел Прослушиватели группы доступности и выберите команду Создать прослушиватель . Откроется диалоговое окно Создать прослушиватель группы доступности . Дополнительные сведения см. в подразделе Добавление прослушивателя группы доступности (диалоговое окно)далее в этом разделе.

    • Чтобы изменить номер порта существующего прослушивателя, разверните узел Прослушиватели группы доступности , щелкните правой кнопкой мыши прослушиватель и выберите пункт Свойства . Введите новый номер порта в поле Порт и нажмите кнопку ОК.

Создание прослушивателя группы доступности (диалоговое окно)

DNS-имя прослушивателя
Указывает имя узла DNS для прослушивателя группы доступности. Имя DNS является строкой и должно быть уникальным в домене и в NetBIOS. Это имя может содержать только буквы, цифры, дефисы (-) и знаки подчеркивания (_) в любом порядке. В именах узлов DNS учитывается регистр. Максимальная длина составляет 15 символов.

Дополнительные сведения см. в подразделе Требования к имени DNS прослушивателя группы доступностивыше в этом разделе.

порт.
TPC-порт, используемый этим прослушивателем.

Сетевой режим
Указывает TCP-протокол, используемый прослушивателем, один из:

DHCP
Прослушиватель будет использовать динамический IP-адрес, назначенный сервером, на котором запущен DHCP-протокол. Протокол DHCP ограничен одной подсетью.

Важно!

Использовать протокол DHCP в производственной среде не рекомендуется. Если во время простоя аренда IP-адреса протокола DHCP истечет, то на регистрацию нового сетевого IP-адреса протокола DHCP, связанного с именем DNS-прослушивателя, уйдет дополнительное время, что скажется на производительности клиента. Однако протокол DHCP полезен при настройке среды разработки и проверки и позволяет проверить базовые функции групп доступности и их интеграцию с приложениями.

Статический IP-адрес
Прослушиватель будет использовать один или несколько статических IP-адресов. Дополнительные IP-адреса являются необязательными. Чтобы создать прослушиватель группы доступности для нескольких подсетей, в конфигурации прослушивателя необходимо задать по одному статическому IP-адресу для каждой подсети. Чтобы получить эти IP-адреса, свяжитесь с сетевым администратором.

Если выбрать Статический IP-адрес , под полем Сетевой режим появится сетка подсети. В этой сетке отображаются сведения о каждой подсети, к которой может получить доступ прослушиватель этой группы доступности. Эта сетка остается пустой до тех пор, пока не будет добавлен статический IP-адрес путем нажатия кнопки Добавить.

Существуют следующие столбцы.

Подсеть
Отображает идентификатор каждой подсети, добавляемой в прослушиватель группы доступности.

IP-адрес;
Отображает IP-адрес данной подсети. Для данной подсети статический IP-адрес может быть указан как IPv4 или IPv6.

Добавление
Нажмите, чтобы добавить статический IP-адрес в выбранную подсеть или другую подсеть для этого прослушивателя. Откроется диалоговое окно Добавление IP-адреса . Дополнительные сведения см. в разделе справки Диалоговое окно "Добавление IP-адреса" (SQL Server Management Studio).

Удалить
Нажмите, чтобы удалить выбранную подсеть из этого прослушивателя.

OK
Нажмите, чтобы создать указанный прослушиватель группы доступности.

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

Создание или настройка прослушивателя группы доступности

  1. Подключитесь к экземпляру сервера, на котором находится первичная реплика.

  2. Используйте параметр LISTENER в инструкции CREATE AVAILABILITY GROUP или параметр ADD ISTENER для инструкции ALTER AVAILABILITY GROUP .

    В следующем примере прослушиватель группы доступности добавляется в существующую группу доступности с именем MyAg2. Для этого прослушивателя задается уникальное имя DNS — MyAg2ListenerIvP6. Две реплики находятся в разных подсетях, поэтому согласно рекомендации прослушиватель использует статические IP-адреса. Для каждой из двух реплик доступности предложение WITH IP указывает статический IP-адрес 2001:4898:f0:f00f::cf3c and 2001:4898:e0:f213::4ce2, использующий формат IPv6. В этом примере также указывается и используется необязательный параметр PORT, указывающий порт 60173 в качестве порта прослушивателя.

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

Использование PowerShell

Создание или настройка прослушивателя группы доступности

  1. Перейдите в каталог (cd) экземпляра сервера, в котором находится первичная реплика.

  2. Чтобы создать или изменить прослушиватель группы доступности, используйте один из следующих командлетов:

    New-SqlAvailabilityGroupListener
    Создает прослушиватель группы доступности и привязывает его к существующей группе доступности.

    Например, приведенная ниже команда New-SqlAvailabilityGroupListener создает прослушиватель с именем MyListener для группы доступности MyAg. Этот прослушиватель в качестве виртуального IP-адреса будет использовать адрес IPv4, переданный в параметре -StaticIp .

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

    Set-SqlAvailabilityGroupListener
    Изменяет порт существующего прослушивателя группы доступности.

    Например, приведенная ниже команда Set-SqlAvailabilityGroupListener устанавливает для прослушивателя группы доступности с именем MyListener номер порта 1535. Этот порт будет использоваться прослушивателем для прослушивания соединения.

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

    Add-SqlAGListenerstaticIp
    Добавляет статический IP-адрес в конфигурацию существующего прослушивателя группы доступности. IP-адрес может быть адресом IPv4 с подсетью или адресом IPv6.

    Например, приведенная ниже команда Add-SqlAGListenerstaticIp добавляет статический адрес IPv4 в прослушиватель MyListener в группе доступности MyAg. Этот адрес IPv6 выступает в роли виртуального IP-адреса прослушивателя в подсети 255.255.252.0. Если группа доступности распространяется на несколько подсетей, нужно добавить статический IP-адрес для каждой подсети в прослушивателе.

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

    Примечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL Server . Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShell

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

Ошибка создания нового прослушивателя группы доступности из-за квот Active Directory

Создание нового прослушивателя группы доступности может завершиться неудачей в случае превышения квоты Active Directory для учетной записи участвующего узла кластера. Дополнительные сведения см. в следующих статьях:

Дальнейшие действия. Действия после создания прослушивателя группы доступности

Ключевое слово и связанные функции MultiSubnetFailover

MultiSubnetFailover — это новое ключевое слово строки подключения, которое обеспечивает ускоренную отработку отказа для групп доступности AlwaysOn и экземпляров отказоустойчивых кластеров AlwaysOn в SQL Server 2012. Если в строке подключения задано условие MultiSubnetFailover=True , то включаются следующие три дополнительные функции.

  • Ускоренная отработка отказа для нескольких подсетей с прослушивателем для группы доступности AlwaysOn или экземпляров отказоустойчивых кластеров.

  • Ускоренная отработка отказа для одной подсети с прослушивателем для группы доступности AlwaysOn или экземпляров отказоустойчивых кластеров.

    • Эта функция используется при подключении к прослушивателю с одним IP-адресом в одной подсети. В результате этого выполняется большее число попыток подключения по протоколу TCP, что дает возможность ускорить отработку отказа в одной подсети.
  • Разрешение именованного экземпляра в экземпляр отказоустойчивого кластера группы доступности AlwaysOn в нескольких подсетях.

    • Эта функция необходима для добавления поддержки разрешения именованного экземпляра для экземпляров отказоустойчивых кластеров группы доступности AlwaysOn с конечными точками в нескольких подсетях.

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

Проблема . Если у группы доступности или экземпляра отказоустойчивого кластера есть имя прослушивателя (в диспетчере кластеров WSFC оно называется сетевым именем или точкой доступа клиента) с зависимостью от нескольких IP-адресов из разных подсетей и при этом используется ADO.NET с платформой .NET Framework 3.5 с пакетом обновления 1 (SP1) или SQL Native Client 11.0 OLEDB, то потенциально 50 % запросов на подключение клиентов к прослушивателю группы доступности исчерпают время ожидания подключения.

Решения. Рекомендуется выполнить одну из следующих задач.

  • При отсутствии разрешения на работу с ресурсами кластера измените время ожидания соединения на 30 секунд (это означает 20 секунд ожидания TCP плюс 10-секундный буфер).

    Преимущества. В случае отработки отказа по нескольким подсетям обеспечивается быстрое восстановление клиента.

    Недостатки. Установление половины соединений клиентов потребует более 20 секунд.

  • При наличии разрешений на работу с ресурсами кластера рекомендуется задать RegisterAllProvidersIP=0в качестве сетевого имени прослушивателя группы доступности. Дополнительные сведения см. в подразделе "Установка значения RegisterAllProvidersIP" далее в этом разделе.

    Преимущества. Не потребуется увеличивать значение времени ожидания соединения клиента.

    Недостатки . При переходе на другой ресурс по нескольким подсетям на восстановление клиента может уйти до 15 минут или более в зависимости от значения параметра HostRecordTT , а также графика междоменной репликации DNS/AD.

Параметр RegisterAllProvidersIP

При создании прослушивателя группы доступности с помощью SQL Server Management Studio, Transact-SQL или PowerShell точка доступа клиента в кластере WSFC создается со свойством RegisterAllProvidersIP, для которого задано значение 1 (true). Действие этого значения свойства зависит от строки подключения клиента следующим образом.

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

    Группы доступности AlwaysOn задают для свойства RegisterAllProvidersIP значение 1, чтобы сократить время повторного соединения после перехода на другой ресурс для клиентов, у которых в строке подключения согласно рекомендациям указано MultiSubnetFailover = True. Обратите внимание, что для использования функции нескольких подсетей в прослушивателе поставщик данных клиентов должен поддерживать ключевое слово MultiSubnetFailover . Сведения о поддержке драйверов для отказоустойчивых кластеров с несколькими подсетями см. в разделе Подключение клиента группы доступности Always On (SQL Server).

    Сведения о кластеризации с несколькими подсетями см. в разделе Кластеры SQL Server с несколькими подсетями (SQL Server).

    Совет

    Если RegisterAllProvidersIP = 1, то при запуске мастера WSFC по проверке конфигурации в кластере WSFC мастер выдаст следующее сообщение об ошибке:

    "Свойству RegisterAllProviderIP для сетевого имени "Name:<сетевое_имя>" присвоено значение 1. В текущей конфигурации кластера для этого свойства должно быть задано значение 0".

    Не обращайте внимания на это сообщение.

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

    Если выполняется условие RegisterAllProvidersIP = 1, то у любых клиентов, у которых строка подключения не содержит MultiSubnetFailover = True, будет возникать большая задержка в соединениях. Это происходит потому, что эти клиенты пытаются соединиться со всеми IP-адресами последовательно. Напротив, если свойство RegisterAllProvidersIP изменено на 0, то IP-адрес включается в список клиентской точки доступа в кластере WSFC и уменьшает задержку для клиентов устаревших версий. Таким образом, если есть клиенты устаревших версий, которым требуется подключение к прослушивателю групп доступности, но нельзя использовать свойство MultiSubnetFailover, рекомендуется изменить значение свойства RegisterAllProvidersIP на 0.

    Важно!

    При создании прослушивателя группы доступности через кластер WSFC (графический интерфейс диспетчера отказоустойчивого кластера) свойство RegisterAllProvidersIP будет иметь значение 0 (false) по умолчанию.

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

По умолчанию клиенты кэшируют DNS-записи кластера на 20 минут. Уменьшив для кэшированной записи значение HostRecordTTL, время существования (TTL), клиенты предыдущих версий могут ускорить повторное подключение. Однако уменьшение значения HostRecordTTL также может увеличить объем трафика на DNS-серверы.

Образец скрипта PowerShell для отключения RegisterAllProvidersIP и сокращения TTL

В следующем примере для Powershell показано, как настроить параметры кластера RegisterAllProvidersIP и HostRecordTTL для ресурса прослушивателя. Запись DNS будет кэшироваться каждые 5 минут, а не 20 минут (по умолчанию). Изменение обоих параметров кластера может сократить время подключения к правильному IP-адресу после перехода на другой ресурс для клиентов предыдущих версий, которые не могут использовать параметр MultiSubnetFailover . Замените yourListenerName на имя изменяемого прослушивателя.

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

Дополнительные сведения о времени восстановления при отработке отказа см. в разделе Client Recovery Latency During Failover.

Рекомендуемые действия

Действия после создания прослушивателя группы доступности

  • Попросите сетевого администратора зарезервировать IP-адрес, который будет использоваться только этим прослушивателем.

  • Передайте имя узла DNS прослушивателя разработчикам приложения для использования в строке подключения при запросе клиентских соединений к данной группе доступности.

  • Рекомендуйте разработчикам добавить в строки подключения MultiSubnetFailover = True, если это возможно. Сведения о поддержке драйверов для отказоустойчивых кластеров с несколькими подсетями см. в разделе Подключение клиента группы доступности Always On (SQL Server).

Создание дополнительного прослушивателя для группы доступности (необязательно)

После создания одного прослушивателя посредством SQL Server можно создать дополнительный прослушиватель следующим образом.

  1. Создайте прослушиватель, используя одно из следующих средств:

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

      1. Добавление точки доступа клиента и настройка IP-адреса.

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

      3. Добавление зависимости в ресурс группы доступности WSFC.

      Дополнительные сведения о диалоговых окнах и вкладках диспетчера отказоустойчивости кластеров см. в разделе Пользовательский интерфейс: оснастка "Диспетчер отказоустойчивости кластеров".

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

      1. Используйте командлет Add-ClusterResource , чтобы создать ресурсы сетевого имени и IP-адреса.

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

      3. Используйте командлет Add-ClusterResourceDependency , чтобы задать зависимость между сетевым именем и существующим ресурсом группы доступности SQL Server.

      Сведения об использовании Windows PowerShell для отказоустойчивых кластеров см. в разделе Общие сведения о командах диспетчера сервера.

  2. Запустите прослушивание SQL Server в новом прослушивателе. После создания дополнительного прослушивателя подключитесь к экземпляру SQL Server, на котором размещается первичная реплика группы доступности, и измените порт прослушивателя с помощью среды SQL Server Management Studio, Transact-SQL или PowerShell.

Дополнительные сведения см. в разделе Способ создания нескольких прослушивателей для одной группы доступности (блог группы разработчиков SQL Server AlwaysOn).

Следующие шаги

Теперь, когда прослушиватель создан, настройте приложение для подключения к прослушивателю. Вы также можете ознакомиться с различными стратегиями мониторинга группы доступности, чтобы обеспечить работоспособность группы доступности.

Можно также просмотреть свойства прослушивателя или узнать, как при необходимости удалить прослушиватель.