Взаимодействие возможностей с группами доступности и прослушивателем DNN
Область применения: SQL Server на виртуальной машине Azure
Совет
Существует множество методов развертывания группы доступности. Упрощение развертывания и устранение необходимости использования Azure Load Balancer или распределенного сетевого имени (DNN) для группы доступности AlwaysOn путем создания виртуальных машин SQL Server в нескольких подсетях в одной виртуальной сети Azure. Если вы уже создали группу доступности в одной подсети, ее можно перенести в среду с несколькими подсетами.
Некоторые функции SQL Server используют жестко запрограммированное имя виртуальной сети. Это означает, что при использовании прослушивателя DNN (имени распределенной сети) совместно с группой доступности Always On и 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, Azure Data Studio и 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
— порт, используемый целевым FCI только для чтения для SQL Server, фрагмент кода T-SQL для создания URL-адреса маршрутизации только для чтения выглядит вот так:
READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'
Порт в URL-адресе можно не указывать, если это стандартный порт 1433. Для именованного экземпляра настройте статический порт и укажите его в URL-адресе маршрутизации только для чтения.
Распределенная группа доступности
Если прослушиватель группы доступности настроен с помощью распределенного сетевого имени (DNN), настройка распределенной группы доступности в верхней части группы доступности не поддерживается.
Репликация
Транзакционная репликация, репликация слиянием и репликация моментального снимка позволяют заменить прослушиватель VNN на прослушиватель и порт DNN в объектах репликации, которые подключаются к прослушивателю.
Дополнительные сведения об использовании репликации с группами доступности см. в статьях Издатель и группа доступности, Подписчик и группа доступности и Распространитель и группа доступности.
MSDTC
Поддерживаются как локальные, так и кластеризованные координаторы распределенных транзакций, но для них используется динамический порт и поэтому для настройки порта высокой доступности потребуется Azure Load Balancer ценовой категории "Стандартный". Таким образом, виртуальная машина должна использовать стандартное резервирование IP-адресов или не может быть предоставлена в Интернете.
Определите два правила: одно для порта 135 сопоставителя конечных точек RPC, другое — для фактически используемого порта координатора распределенных транзакций. После отработки отказа измените правило балансировки нагрузки, чтобы использовать новый порт координатора распределенных транзакций на новом узле.
Если используется локальный координатор распределенных транзакций, не забудьте разрешить исходящие подключения.
Распределенный запрос
Распределенный запрос использует связанный сервер, для которого можно настроить прослушиватель и порт 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?
При использовании прослушивателя DNN мы рекомендуем обеспечить поддержку параметра MultiSubnetFailover=True
в строке подключения. Она добавлена в версии SQL Server 2012 (11.x).
Нужно ли вносить изменения в конфигурацию SQL Server, чтобы использовать прослушиватель DNN?
SQL Server не требует изменения конфигурации для использования DNN, но для некоторых функций SQL Server может потребоваться большее внимание.
Поддерживает ли DNN кластеры с несколькими подсетями?
Да. Кластер привязывает DNN в DNS с физическими IP-адресами всех реплик в группе доступности независимо от подсети. Клиент SQL перебирает все IP-адреса для этого DNS-имени, независимо от подсетей.
Поддерживает ли прослушиватель DNN групп доступности маршрутизацию только для чтения?
Да. Маршрутизация только для чтения поддерживается прослушивателем DNN.