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

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

Важное примечаниеВажно!

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

  • Перед началом работы

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

    Ограничения

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

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

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

    Разрешения Windows

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

  • Создание или настройка прослушивателя группы доступности с помощью:

    SQL Server Management Studio

    Transact-SQL

    PowerShell

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

    с невозможностью создать новый прослушиватель группы доступности из-за квот Active Directory

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

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

    Параметр RegisterAllProvidersIP

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

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

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

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

Перед началом работы

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

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

ПримечаниеПримечание

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

Ограничения

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

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

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

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

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

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

Важное примечаниеВажно!

Перед созданием первого прослушивателя настоятельно рекомендуется прочитать раздел Возможность подключения клиентов AlwaysOn (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

Разрешения

Ссылка

Имя объекта кластера (CNO) кластера WSFC, на котором размещается группа доступности, должно иметь разрешение Create Computer objects.

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

ПримечаниеПримечание

В некоторых организациях политика безопасности запрещает предоставление разрешения Create Computer objects отдельным учетным записям пользователей.

Если политика организации требует предварительно настроить учетную запись компьютера для виртуального сетевого имени прослушивателя, потребуется членство в группе Account Operator или помощь администратора домена.

СоветСовет

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Разрешения 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).

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование 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 в среде SQL Server PowerShell. Дополнительные сведения см. в разделе Получение справок по 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-секундный буфер).

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

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

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

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

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

Параметр RegisterAllProvidersIP

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

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

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

    Дополнительные сведения о кластеризации с несколькими подсетями см. в разделе Кластеры SQL Server с несколькими подсетями [SQL Server]

    СоветСовет

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

    «Свойство RegisterAllProviderIP для сетевого имени Name:<network_name> имеет значение 1, для текущей конфигурации кластера данное свойство должно иметь значение 0».

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

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

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

    Важное примечаниеВажно!

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

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

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

Образец скрипта 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

Дополнительные сведения о времени восстановления при отработке отказа см. в разделе Задержка восстановления клиента при отработке отказа.

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

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

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

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

  • Рекомендуйте разработчикам добавить в строки подключения MultiSubnetFailover = True, если это возможно. Дополнительные сведения о поддержке драйверов для отработки отказа с несколькими подсетями см. в разделе Возможность подключения клиентов AlwaysOn (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).

Связанные задачи

См. также

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Основные понятия

Обзор групп доступности AlwaysOn (SQL Server)

Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server)

Кластеры SQL Server с несколькими подсетями [SQL Server]