Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server на виртуальной машине Azure
Совет
Существует множество методов развертывания группы доступности. Упрощение развертывания и устранение необходимости использования Azure Load Balancer или распределенного сетевого имени (DNN) для группы доступности AlwaysOn путем создания виртуальных машин SQL Server в нескольких подсетях в одной виртуальной сети Azure. Если вы уже создали группу доступности в одной подсети, ее можно перенести в среду с несколькими подсетами.
С помощью SQL Server на виртуальных машинах Azure одной подсети имя распределенной сети (DNN) маршрутизирует трафик в соответствующий кластеризованный ресурс. Он предоставляет более простой способ подключения к группе доступности Always On, чем прослушиватель имени виртуальной сети (VNN), и не требует использования Azure Load Balancer.
В этой статье описывается, как настроить прослушиватель DNN, чтобы заменить прослушиватель VNN и маршрутизировать трафик в группу доступности с помощью SQL Server на виртуальных машинах Azure для обеспечения высокой доступности и аварийного восстановления (HADR).
Для альтернативного варианта подключения рассмотрите использование прослушивателя VNN и Azure Load Balancer.
Обзор
Прослушиватель имени распределенной сети (DNN) заменяет традиционный прослушиватель группы доступности имени виртуальной сети (VNN) при использовании с группами доступности Always On на виртуальных машинах SQL Server Эта конфигурация устраняет необходимость использования Azure Load Balancer для маршрутизации трафика, упрощает развертывание и обслуживание, а также улучшает отработку отказа.
Используйте прослушиватель DNN для замены существующего прослушивателя VNN. Кроме того, используйте его вместе с существующим прослушивателем VNN, чтобы ваша группа доступности имеет две разные точки подключения - один с именем прослушивателя VNN (и портом, если не по умолчанию), а один использует имя прослушивателя DNN и порт.
Внимание
Поведение маршрутизации при использовании DNN и VNN отличается. Не используйте порт 1433. Дополнительные сведения см. в разделе Рекомендации по использованию порта далее в этой статье.
Необходимые компоненты
Чтобы выполнить действия, описанные в этой статье, необходимо следующее:
- SQL Server (SQL Server 2019 CU8 или более поздней версии, SQL Server 2017 CU25 или более поздней версии либо SQL Server 2016 с пакетом обновления 3 (SP3) или более поздней версии) на базе Windows Server 2016 или более поздней версии.
- Принято решение о том, что имя распределенной сети является подходящим вариантом подключения для вашего решения HADR.
- Настроена группа доступности Always On.
- установление последней версии PowerShell.
- Определен уникальный порт, который вы планируете использовать для прослушивателя DNN. Порт, используемый для прослушивателя DNN, должен быть уникальным для всех реплик группы доступности или экземпляра отказоустойчивого кластера. Другие подключения не могут совместно использовать один и тот же порт.
Примечание.
Для каждой группы доступности или экземпляра отказоустойчивого кластера в одном кластере требуется собственная независимая точка подключения, будь то прослушиватель VNN или прослушиватель DNN.
Создать сценарий
С помощью PowerShell создайте ресурс имени распределенной сети (DNN) и свяжите его с группой доступности.
Для этого выполните следующие шаги:
Откройте текстовый редактор, например Блокнот.
Скопируйте и вставьте следующий скрипт.
param ( [Parameter(Mandatory=$true)][string]$Ag, [Parameter(Mandatory=$true)][string]$Dns, [Parameter(Mandatory=$true)][string]$Port ) Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port" $ErrorActionPreference = "Stop" # create the DNN resource with the port as the resource name Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag # set the DNS name of the DNN resource Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns # start the DNN resource Start-ClusterResource -Name $Port $Dep = Get-ClusterResourceDependency -Resource $Ag if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' ) { $DepStr = "$($Matches.1) or [$Port]" } else { $DepStr = "[$Port]" } Write-Host "$DepStr" # add the Dependency from availability group resource to the DNN resource Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr" # restart the AG resource Stop-ClusterResource -Name $Ag Start-ClusterResource -Name $AgСохраните скрипт в виде файла
.ps1, напримерadd_dnn_listener.ps1.
Выполнение скрипта
Чтобы создать прослушиватель DNN, выполните скрипт, передав параметры для имени группы доступности, имени прослушивателя и порта.
Например, если имя группы доступности ag1, имя прослушивателя dnnlsnr и порт прослушивателя 6789, выполните следующие действия.
Откройте средство интерфейса командной строки, например командную строку или PowerShell.
Перейдите к месту сохранения скрипта
.ps1, например C:\Documents.Выполните скрипт:
add_dnn_listener.ps1 <ag name> <listener-name> <listener port>. Например:c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
Проверка прослушивателя
Чтобы убедиться, что прослушиватель DNN успешно создан, используйте SQL Server Management Studio или Transact-SQL.
Среда SQL Server Management Studio
Разверните прослушиватели группы доступности в SQL Server Management Studio (SSMS), чтобы просмотреть прослушиватель DNN:
Transact-SQL
Чтобы просмотреть состояние прослушивателя DNN, используйте Transact-SQL:
SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS
Значение 1 для is_distributed_network_name указывает, что прослушиватель является прослушивателем имени распределенной сети (DNN):
Обновление строки подключения
Обновите строку подключения для любого приложения, которое должно подключаться к прослушивателю DNN. Строка подключения к прослушивателю DNN должна содержать номер порта DNN и MultiSubnetFailover=True. Если клиент SQL не поддерживает MultiSubnetFailover=True параметр, он не совместим с прослушивателем DNN.
Ниже приводится пример строки подключения для прослушивателя с именем DNN_Listener и порта 6789.
DataSource=DNN_Listener,6789;MultiSubnetFailover=True
Тестовая отработка отказа
Выполните тестовую отработку отказа группы доступности, чтобы обеспечить ее функционирование.
Для этого выполните следующие действия.
- Подключитесь к прослушивателю DNN или к одной из реплик с помощью SQL Server Management Studio (SSMS).
- Разверните группу доступности Always On в обозревателе объектов.
- Щелкните правой кнопкой мыши группу доступности и выберите пункт Отработка отказа, чтобы открыть Мастер отработки отказа.
- Следуйте инструкциям на экране, чтобы выбрать цель отработки отказа и выполнить сбой группы доступности во вторичной реплике.
- Убедитесь, что база данных находится в состоянии SYNCHRONIZED (Синхронизировано) в новой первичной реплике.
- (Необязательно) Восстановите подключение к исходной основной или другой вторичной реплике.
Проверка подключения
Проверьте подключение к прослушивателю DNN, выполнив следующие действия.
- Откройте SQL Server Management Studio.
- Подключитесь к прослушивателю DNN.
- Откройте новое окно запроса и проверьте, к какой реплике вы подключены, выполнив
SELECT @@SERVERNAME. - Выполните сбой группы доступности в другой реплике.
- Выждав оптимальное время, выполните команду
SELECT @@SERVERNAME, чтобы подтвердить размещение вашей группы доступности в другой реплике.
Ограничения
- Прослушиватели DNN должны быть настроены с уникальным портом. Порт нельзя использовать совместно с другими подключениями на любой реплике.
- Клиент, подключающийся к прослушивателю DNN, должен поддерживать параметр
MultiSubnetFailover=Trueв строке подключения. - При работе с другими функциями SQL Server и группой доступности с DNN могут возникнуть дополнительные вопросы. Дополнительные сведения см. в статье Группа доступности со взаимодействием DNN.
Рекомендации по использованию порта
Прослушиватели DNN предназначены для прослушивания всех IP-адресов, но на конкретном уникальном порте. Запись в системе доменных имен (DNS) для имени прослушивателя должна разрешаться в адреса всех реплик в группе высокой доступности. Эта конфигурация выполняется автоматически с помощью скрипта PowerShell, предоставленного в разделе "Создание скрипта ". Так как прослушиватели DNN принимают подключения ко всем IP-адресам, важно, чтобы порт прослушивателя был уникальным и не используется любой другой репликой в группе доступности. Поскольку SQL Server по умолчанию прослушивает порт 1433 напрямую или через службу SQL Browser, мы настоятельно не рекомендуем использовать порт 1433 для прослушивателя DNN.
Если порт прослушивателя, выбранный для прослушивателя VNN, составляет от 49 152 до 65 536 (динамический диапазон портов по умолчанию для TCP/IP, добавьте исключение для этого порта. Это позволяет предотвратить динамическое назначение другим системам того же порта.
Вы можете добавить исключение порта с помощью следующей команды: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent