Поделиться через


Взаимодействие функций с группами доступности и DNN-листенером

Область применения:SQL Server на виртуальной машине Azure

Совет

Существует множество методов развертывания группы доступности. Упрощение развертывания и устранение необходимости использования Azure Load Balancer или распределенного сетевого имени (DNN) для группы доступности AlwaysOn путем создания виртуальных машин SQL Server в нескольких подсетях в одной виртуальной сети Azure. Если вы уже создали группу доступности в одной подсети, ее можно перенести в среду с несколькими подсетами.

Некоторые функции SQL Server используют жестко закодированное имя виртуальной сети (VNN). При использовании прослушивателя распределенной сети (DNN) с группой доступности AlwaysOn и SQL Server на виртуальных машинах Azure в одной подсети могут возникнуть некоторые ограничения.

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

Отличия в поведении

Обратите внимание на следующие различия между функциональностью прослушивателя VNN и прослушивателя DNN:

  • Время переключения на резервный путь: Время переключения на резервный путь ускоряется при использовании прослушивателя DNN, так как не нужно ждать, пока сетевой балансировщик нагрузки обнаружит событие сбоя и изменит его маршрутизацию.
  • Существующие подключения: Подключения к определенной базе данных в группе доступности, в которой происходит отказ, закрываются, но другие подключения к первичной реплике остаются открытыми, поскольку DNN остается в сети во время процесса отказа. Это поведение отличается от традиционной среды VNN, где все подключения к первичной реплике обычно закрываются, когда происходит переключение группы доступности, прослушиватель отключается, а первичная реплика переключается на вторичную роль. При использовании прослушивателя DNN может потребоваться настроить строки подключения приложения, чтобы убедиться, что подключения перенаправляются на новую основную реплику при возникновении отказа.
  • Открытые транзакции: открытые транзакции в базе данных в группе доступности, выполняющей переключение при отказе, закрываются и откатываются, и необходимо вручную повторно подключиться. Например, в SQL Server Management Studio закройте окно запроса и откройте новое.

Клиентские драйверы;

Для драйверов ODBC, OLEDB, ADO.NET, JDBC, PHP и Node.js укажите имя прослушивателя DNN и порт в качестве имени сервера в строке подключения. Чтобы обеспечить быстрое подключение при переключении при отказе, добавьте MultiSubnetFailover=True в строку подключения, если клиент SQL его поддерживает.

Инструменты

Пользователям SQL Server Management Studio, sqlcmd и SQL Server Data Tools необходимо указать имя прослушивателя DNN и порт в качестве имени сервера в строке подключения для подключения к прослушивателю.

Создание прослушивателя DNN с помощью графического интерфейса SQL Server Management Studio (SSMS) в настоящее время не поддерживается.

Группы доступности и FCI

Вы можете настроить группу доступности Always On, используя экземпляр отказоустойчивого кластера (FCI) в качестве одной из реплик. Чтобы эта конфигурация работала с прослушивателем DNN, экземпляр отказоустойчивого кластера также должен использовать DNN, так как невозможно добавить виртуальный IP-адрес FCI в список IP-адресов группы доступности DNN.

В этой конфигурации в URL-адресе конечной точки зеркалирования для реплики FCI необходимо использовать DNN FCI. Аналогично, если FCI используется как реплика только для чтения, в маршрутизации только для чтения для этой реплики FCI необходимо использовать DNN этого FCI.

Для конечной точки зеркального отображения используется формат ENDPOINT_URL = 'TCP://<FCI DNN DNS name>:<mirroring endpoint port>'.

Например, если dnnlsnr — DNS-имя DNN для FCI, а 5022 — порт конечной точки зеркального отображения FCI, фрагмент кода Transact-SQL (T-SQL) для создания URL-адреса конечной точки выглядит вот так:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

Аналогично, для URL-адреса маршрутизации только для чтения используется формат TCP://<FCI DNN DNS name>:<SQL Server instance port>.

Например, если dnnlsnr — это DNS-имя DNN, а 1444 — порт, который используется целевым SQL Server FCI только для чтения, фрагмент кода T-SQL для создания URL-адреса маршрутизации только для чтения выглядит следующим образом:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Можно опустить порт в URL-адресе, если это порт по умолчанию 1433. Для именованного экземпляра настройте статический порт и укажите его в URL-адресе маршрутизации только для чтения.

Распределенная группа доступности

Если вы настраиваете прослушиватель группы доступности с использованием распределенного сетевого имени (DNN), вы не можете настроить распределенную группу доступности поверх вашей группы доступности.

Репликация

Транзакционная репликация, репликация слиянием и репликация моментального снимка позволяют заменить прослушиватель VNN на прослушиватель и порт DNN в объектах репликации, которые подключаются к прослушивателю.

Дополнительные сведения об использовании репликации с группами доступности см. в статьях Издатель и группа доступности, Подписчик и группа доступности и Распространитель и группа доступности.

MSDTC

Поддерживаются как локальные, так и кластеризованные MSDTC, но MSDTC использует динамический порт. Для этого динамического порта требуется стандартный Azure Load Balancer для настройки порта высокого уровня доступности. Таким образом, виртуальная машина должна использовать статическое резервирование IP-адресов, иначе вы не сможете сделать ее доступной в интернете.

Определите два правила: одно для порта маршрутизатора конечных точек RPC 135 и одно для фактического порта MSDTC. После отработки отказа измените правило балансировщика нагрузки на новый порт MSDTC после того, как он изменится на новом узле.

Если MSDTC локальный, не забудьте разрешить исходящие подключения.

Распределенный запрос

Распределенный запрос полагается на связанный сервер, который можно настроить с помощью прослушивателя AG DNN и порта. Если порт не является 1433, выберите параметр "Использовать другой источник данных" в SQL Server Management Studio (SSMS) при настройке связанного сервера.

FILESTREAM

FILESTREAM поддерживается, но не для сценариев, когда пользователи получают доступ к общей папке с помощью API файлов Windows.

FileTable

FileTable поддерживается, но не для сценариев, когда пользователи получают доступ к файловому ресурсу с определенной областью доступа с помощью API файлов Windows.

Связанные серверы

Настройте связанный сервер, указав имя и порт прослушивателя DNN в группе доступности. Если порт не является 1433, выберите параметр "Использовать другой источник данных" в SQL Server Management Studio (SSMS) при настройке связанного сервера.

Часто задаваемые вопросы

Какая версия SQL Server поддерживает прослушиватель DNN группы доступности?

SQL Server 2019 CU 8 и более поздних версий.

Какое ожидаемое время переключения при использовании прослушивателя DNN?

Для прослушивателя DNN время переключения на резерв такое же, как и у группы доступности без дополнительного времени, например, времени пробы при использовании Azure Load Balancer.

Существуют ли какие-либо требования к версии для клиентов SQL, поддерживающих DNN с OLEDB и ODBC?

Используйте строку подключения MultiSubnetFailover=True для поддержки прослушивателя DNN. Она добавлена в версии SQL Server 2012 (11.x).

Нужно ли вносить изменения в конфигурацию SQL Server, чтобы использовать прослушиватель DNN?

SQL Server не требует изменения конфигурации для использования DNN, но для некоторых функций SQL Server может потребоваться большее внимание.

Поддерживает ли DNN кластеры с несколькими подсетями?

Да. Кластер привязывает DNN в DNS с физическими IP-адресами всех реплик в группе доступности независимо от подсети. Клиент SQL перебирает все IP-адреса DNS-имени, независимо от подсети.

Поддерживает ли DNN-слушатель группы доступности маршрутизацию только для чтения?

Да. Маршрутизация только для чтения поддерживается прослушивателем DNN.