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

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

Совет

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

В этом документе объясняется, как использовать PowerShell для выполнения одной из следующих задач:

  • Создание подсистемы балансировки нагрузки
  • добавление IP-адресов в существующую подсистему балансировки нагрузки для групп доступности SQL Server.

Прослушиватель группы доступности — это виртуальная сеть, к которой подключаются клиенты, чтобы получить доступ к базе данных. На виртуальных машинах Azure в отдельной подсети подсистема балансировки нагрузки содержит IP-адрес прослушивателя. Балансировщик нагрузки направляет трафик в экземпляр SQL Server, который прослушивает порт пробы. Обычно группа доступности использует внутреннюю подсистему балансировки нагрузки. В такой системе можно разместить один или несколько IP-адресов. Каждый IP-адрес использует определенный порт пробы.

Возможность назначения нескольких IP-адресов для внутренней подсистемы балансировки нагрузки впервые представлена в Azure. Она доступна только в модели Resource Manager. Для этого необходимо развернуть группу доступности SQL Server на виртуальных машинах Azure с использованием модели Resource Manager. Обе виртуальные машины SQL Server должны принадлежать к одной и той же группе доступности. Вы можете использовать шаблон Майкрософт , чтобы автоматически создать группу доступности в Azure Resource Manager. Этот шаблон также автоматически создает внутренний балансировщик нагрузки. При необходимости можно вручную настроить группу доступности AlwaysOn.

Для выполнения описанных в этой статье действий группы доступности должны быть уже настроены.

Связанные разделы включают:

Примечание.

В этой статье предусмотрено использование модуля Azure Az PowerShell, который является рекомендуемым модулем PowerShell для взаимодействия с Azure. Чтобы начать работу с модулем Az PowerShell, ознакомьтесь со статьей Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Запуск сеанса PowerShell

Выполните командлет Connect-Az Account. Откроется окно входа, в котором нужно ввести свои учетные данные. Используйте для входа те же учетные данные, что и для входа на портал Azure.

Connect-AzAccount

Если у вас несколько подписок, используйте командлет Set-AzContext, чтобы выбрать подписку, которую будет использовать сеанс PowerShell. Чтобы узнать, какую подписку использует текущий сеанс PowerShell, выполните командлет Get-AzContext. Чтобы просмотреть все подписки, выполните командлет Get-AzSubscription.

Set-AzContext -SubscriptionId '4cac86b0-1e56-bbbb-aaaa-000000000000'

Проверка версии PowerShell

Примеры из этой статьи были проверены с помощью модуля Azure PowerShell 5.4.1.

Убедитесь, что у вас модуль PowerShell версии не ниже 5.4.1.

См. статью Установка модуля Azure PowerShell.

Настройка брандмауэра Windows

Настройте брандмауэр Windows для разрешения доступа к SQL Server. Правила брандмауэра разрешают TCP-подключения к портам, используемым экземпляром SQL Server и пробой прослушивателя. Дополнительные сведения см. в разделе Настройка брандмауэра Windows для доступа к ядру СУБД. Создайте правило входящего трафика для порта SQL Server и порта пробы.

Ограничивая доступ с помощью группы безопасности сети Azure, убедитесь, что правило разрешения включает IP-адреса виртуальных машин SQL Server и динамический IP-адрес балансировщика нагрузки для прослушивателя AG и IP-адрес основного кластера, если они применяются.

Определение требований для номера SKU в подсистеме балансировки нагрузки

Для подсистемы балансировки нагрузки Azure доступны два номера SKU ценовых категорий "Базовый" и "Стандартный". Стандартная подсистема балансировки нагрузки рекомендуется, так как номер SKU уровня "Базовый" будет прекращен 30 сентября 2025 г. Для виртуальных машин в зоне доступности требуется стандартная подсистема балансировки нагрузки. Для Load Balancer (цен. категория "Стандартный") требуется, чтобы во всех виртуальных машинах использовались стандартные IP-адреса.

В текущем шаблоне Microsoft для группы доступности используется Load Balancer (цен. категория "Базовый") с базовыми IP-адресами.

Примечание.

Потребуется настроить конечную точку службы, если вы используете Load Balancer (цен. категория "Стандартный") и службу хранилища Azure для облачного свидетеля.

В данных примерах статьи приведена Load Balancer (цен. категория "Стандартный"). Сценарий -sku Standard включен в примеры.

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe -sku Standard

Чтобы создать Load Balancer (цен. категория "Базовый"), из строки ее создания необходимо удалить сценарий -sku Standard. Например:

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe

Пример сценария. Создание внутреннего балансировщика нагрузки с помощью PowerShell

Примечание.

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

Следующий скрипт PowerShell создает внутреннюю подсистему балансировки нагрузки, задает для нее IP-адрес, а также настраивает правила балансировки нагрузки. Для запуска скрипта откройте интегрированную среду сценариев Windows PowerShell и вставьте скрипт в область сценариев. Войдите в PowerShell, используя командлет Connect-AzAccount. Если подписок Azure несколько, для установки подписки используется Select-AzSubscription .

# Connect-AzAccount
# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

$ResourceGroupName = "<Resource Group Name>" # Resource group name
$VNetName = "<Virtual Network Name>"         # Virtual network name
$SubnetName = "<Subnet Name>"                # Subnet name
$ILBName = "<Load Balancer Name>"            # ILB name
$Location = "<Azure Region>"                 # Azure location
$VMNames = "<VM1>","<VM2>"                   # Virtual machine names

$ILBIP = "<n.n.n.n>"                         # IP address
[int]$ListenerPort = "<nnnn>"                # AG listener port
[int]$ProbePort = "<nnnn>"                   # Probe port

$LBProbeName ="ILBPROBE_$ListenerPort"       # The Load balancer Probe Object Name              
$LBConfigRuleName = "ILBCR_$ListenerPort"    # The Load Balancer Rule Object Name

$FrontEndConfigurationName = "FE_SQLAGILB_1" # Object name for the front-end configuration 
$BackEndConfigurationName ="BE_SQLAGILB_1"   # Object name for the back-end configuration

$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName 

$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName 

$FEConfig = New-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.id

$BEConfig = New-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName 

$SQLHealthProbe = New-AzLoadBalancerProbeConfig -Name $LBProbeName -Protocol tcp -Port $ProbePort -IntervalInSeconds 15 -ProbeCount 2

$ILBRule = New-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -Probe $SQLHealthProbe -Protocol tcp -FrontendPort $ListenerPort -BackendPort $ListenerPort -LoadDistribution Default -EnableFloatingIP 

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe 

$bepool = Get-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName -LoadBalancer $ILB 

foreach($VMName in $VMNames)
    {
        $VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName 
        $NICName = ($vm.NetworkProfile.NetworkInterfaces.Id.split('/') | select -last 1)
        $NIC = Get-AzNetworkInterface -name $NICName -ResourceGroupName $ResourceGroupName
        $NIC.IpConfigurations[0].LoadBalancerBackendAddressPools = $BEPool
        Set-AzNetworkInterface -NetworkInterface $NIC
        start-AzVM -ResourceGroupName $ResourceGroupName -Name $VM.Name 
    }

Пример сценария. Добавление IP-адреса в имеющийся балансировщик нагрузки с помощью PowerShell

Чтобы применить несколько групп доступности, добавьте другой IP-адрес в подсистему балансировки нагрузки. Каждому IP-адресу требуется собственное правило балансировки нагрузки, порт пробы и внешний порт. Добавьте в пул подсистемы балансировки нагрузки только основной IP-адрес виртуальной машины, так как плавающий IP-адрес не может быть дополнительным IP-адресом виртуальной машины.

Внешний порт — это порт, используемый приложениями для подключения к экземпляру SQL Server. Один и тот же внешний порт может использоваться для IP-адресов различных групп доступности.

Примечание.

Для групп доступности SQL Server для каждого IP-адреса требуется определенный порт пробы. Например, если один IP-адрес в балансировщике нагрузки использует порт пробы 59999, другие IP-адреса не могут использовать этот порт пробы.

Следующий сценарий добавляет новый IP-адрес в имеющийся балансировщик нагрузки. Внутренняя подсистема балансировки нагрузки использует порт прослушивателя для внешнего порта балансировки нагрузки. Это может быть порт, который прослушивает SQL Server. Для экземпляров SQL Server по умолчанию — это порт 1433. Для правила балансировки нагрузки группы доступности требуется плавающий IP-адрес (прямой ответ от сервера), поэтому внутренний порт не отличается от внешнего порта. Обновите переменные для среды.

# Connect-AzAccount
# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

$ResourceGroupName = "<ResourceGroup>"          # Resource group name
$VNetName = "<VirtualNetwork>"                  # Virtual network name
$SubnetName = "<Subnet>"                        # Subnet name
$ILBName = "<ILBName>"                          # ILB name                      

$ILBIP = "<n.n.n.n>"                            # IP address
[int]$ListenerPort = "<nnnn>"                   # AG listener port
[int]$ProbePort = "<nnnnn>"                     # Probe port 

$ILB = Get-AzLoadBalancer -Name $ILBName -ResourceGroupName $ResourceGroupName 

$count = $ILB.FrontendIpConfigurations.Count+1
$FrontEndConfigurationName ="FE_SQLAGILB_$count"  

$LBProbeName = "ILBPROBE_$count"
$LBConfigrulename = "ILBCR_$count"

$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName 
$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName

$ILB | Add-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.Id 

$ILB | Add-AzLoadBalancerProbeConfig -Name $LBProbeName  -Protocol Tcp -Port $Probeport -ProbeCount 2 -IntervalInSeconds 15  | Set-AzLoadBalancer 

$ILB = Get-AzLoadBalancer -Name $ILBname -ResourceGroupName $ResourceGroupName

$FEConfig = get-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -LoadBalancer $ILB

$SQLHealthProbe  = Get-AzLoadBalancerProbeConfig -Name $LBProbeName -LoadBalancer $ILB

$BEConfig = Get-AzLoadBalancerBackendAddressPoolConfig -Name $ILB.BackendAddressPools[0].Name -LoadBalancer $ILB 

$ILB | Add-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig  -BackendAddressPool $BEConfig -Probe $SQLHealthProbe -Protocol tcp -FrontendPort  $ListenerPort -BackendPort $ListenerPort -LoadDistribution Default -EnableFloatingIP | Set-AzLoadBalancer   

Настройка прослушивателя

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

  1. Получите имя сетевого ресурса кластера:

    a. Подключитесь по протоколу RDP к виртуальной машине Azure, на которой размещена основная реплика.

    b. Откройте диспетчер отказоустойчивости кластеров.

    c. Выберите узел Сети и запишите имя сети кластера. Это имя нужно использовать в переменной $ClusterNetworkName в сценарии PowerShell. На следующем рисунке сетевое имя кластера — cluster Network 1:

    Снимок экрана: имя сети кластера в диспетчере отказоустойчивости кластеров.

  2. Добавьте точку доступа клиента. Точка доступа клиента — это сетевое имя, которое используют приложения для подключения к базам данных в группе доступности.

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

    b. В области ролей щелкните правой кнопкой мыши имя группы доступности и выберите пункт "Добавить точку доступа клиента ресурсов>".

    Снимок экрана: диспетчер отказоустойчивости кластеров, показывающий команду

    c. В поле Имя создайте имя для нового прослушивателя. Имя для нового прослушивателя — это сетевое имя, которое используют приложения для подключения к базам данных в группе доступности SQL Server.

    d. Чтобы завершить создание прослушивателя, нажмите кнопку "Далее " дважды и нажмите кнопку "Готово". Не используйте прослушиватель или ресурс в сети на этом этапе.

  3. Выполните роль кластера для группы доступности в автономном режиме. В диспетчере отказоустойчивых кластеров в разделе "Роли" щелкните правой кнопкой мыши роль и выберите " Остановить роль".

  4. Настройте IP-ресурс для группы доступности:

    a. Перейдите на вкладку "Ресурсы" и разверните созданную клиентом точку доступа. Точка доступа клиента не подключена к сети.

    Снимок экрана: диспетчер отказоустойчивых кластеров, показывающий автономное состояние для точки доступа клиента.

    b. Щелкните правой кнопкой мыши ресурс IP-адреса и выберите пункт "Свойства". Запишите IP-адрес и используйте его в переменной $IPResourceName в скрипте PowerShell.

    c. В разделе IP-адрес выберите статический IP-адрес. Задайте тот же IP-адрес, который использовался на портале Azure при настройке адреса подсистемы балансировки нагрузки.

    Снимок экрана: диспетчер отказоустойчивости кластеров, показывающий выбор IP-адреса.

  5. Сделайте группу доступности SQL Server зависящей от точки доступа клиента:

    a. В диспетчере отказоустойчивости кластеров выберите роли и выберите группу доступности.

    b. На вкладке "Ресурсы" в разделе "Другие ресурсы" щелкните правой кнопкой мыши ресурс группы доступности и выберите пункт "Свойства".

    c. На вкладке зависимостей добавьте имя точки доступа клиента (прослушиватель).

    Снимок экрана: диспетчер отказоустойчивости кластеров, показывающий добавление имени на вкладке зависимостей.

    d. Нажмите ОК.

  6. Сделайте точку доступа клиента зависящей от IP-адреса:

    a. В диспетчере отказоустойчивости кластеров выберите роли и выберите группу доступности.

    b. На вкладке "Ресурсы" щелкните правой кнопкой мыши точку доступа клиента в разделе "Имя сервера" и выберите пункт "Свойства".

    Снимок экрана: диспетчер отказоустойчивости кластеров, в котором показан параметр меню

    c. Перейдите на вкладку "Зависимости ". Убедитесь, что IP-адрес является зависимостью. Если это не так, задайте зависимость от IP-адреса. Если перечислены несколько ресурсов, убедитесь, что IP-адреса имеют ИЛИ, а не И, зависимости. Затем выберите OK.

    Снимок экрана: вкладка

    Совет

    Вы можете проверить правильность настройки зависимостей. В диспетчере отказоустойчивых кластеров перейдите к ролям, щелкните правой кнопкой мыши группу доступности, выберите "Дополнительные действия" и выберите " Показать отчет о зависимостях". Когда зависимости настроены правильно, группа доступности зависит от имени сети, которое, в свою очередь, зависит от IP-адреса.

  7. Задайте параметры кластера в PowerShell:

    a. Скопируйте следующий скрипт PowerShell на один из экземпляров SQL Server. Обновите переменные для среды.

    • $ClusterNetworkName Найдите имя в диспетчере отказоустойчивых кластеров, выбрав "Сети", щелкните сеть правой кнопкой мыши и выберите "Свойства". $ClusterNetworkName находится на вкладке "Имя" на вкладке "Общие".

    • $IPResourceName— это имя, заданное ресурсу IP-адреса в диспетчере отказоустойчивости кластеров. Это находится в диспетчере отказоустойчивых кластеров, выбрав роли, выберите имя группы доступности SQL Server или FCI, перейдите на вкладку "Ресурсы" в разделе "Имя сервера", щелкните правой кнопкой мыши ресурс IP-адреса и выберите "Свойства". Правильное значение находится на вкладке "Имя " на вкладке "Общие".

    • $ListenerILBIP — IP-адрес создан в подсистеме балансировки нагрузки Azure для прослушивателя группы доступности. Найдите $ListenerILBIP в диспетчере отказоустойчивости кластеров на той же странице свойств, что и имя ресурса прослушивателя SQL Server AG/FCI.

    • $ListenerProbePort — это порт, настроенный в подсистеме балансировки нагрузки Azure для прослушивателя группы доступности, например 59999. Допускается любой неиспользуемый TCP-порт.

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "<IPResourceName>" # The IP address resource name.
    $ListenerILBIP = "<n.n.n.n>" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ListenerProbePort = <nnnnn>
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. Задайте параметры кластера, выполнив скрипт PowerShell на одном из узлов кластера.

    Примечание.

    Если экземпляры SQL Server находятся в разных регионах, необходимо дважды запустить сценарий PowerShell. В первый раз используйте $ListenerILBIP значения $ListenerProbePort из первого региона. Во второй раз используйте $ListenerILBIP значения $ListenerProbePort из второго региона. Имя сети кластера и имя ресурса IP-кластера разные для каждого региона.

  8. Доведите роль кластера для группы доступности в сети. В диспетчере отказоустойчивых кластеров в разделе "Роли" щелкните правой кнопкой мыши роль и выберите " Пуск роли".

При необходимости повторите описанные выше действия, чтобы задать параметры кластера для IP-адреса отказоустойчивого кластера Windows Server:

  1. Получите ИМЯ IP-адреса отказоустойчивого кластера Windows Server. В диспетчере отказоустойчивости кластеров в разделе "Ресурсы ядра кластера" найдите имя сервера.

  2. Щелкните правой кнопкой мыши IP-адрес и выберите пункт "Свойства".

  3. Скопируйте имя IP-адреса из имени. Это может быть IP-адрес кластера.

  4. Задайте параметры кластера в PowerShell:

    a. Скопируйте следующий скрипт PowerShell на один из экземпляров SQL Server. Обновите переменные для среды.

    • $ClusterCoreIP — это IP-адрес, созданный в подсистеме балансировки нагрузки Azure для основного ресурса кластера отказоустойчивого кластера Windows Server. Он отличается от IP-адреса прослушивателя группы доступности.

    • $ClusterProbePort — это порт, настроенный в подсистеме балансировки нагрузки Azure для пробы работоспособности отказоустойчивого кластера Windows Server. Это отличается от пробы прослушивателя группы доступности.

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "<ClusterIPResourceName>" # The IP address resource name.
    $ClusterCoreIP = "<n.n.n.n>" # The IP address of the cluster IP resource. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ClusterProbePort = <nnnnn> # The probe port from WSFCEndPointprobe in the Azure portal. This port must be different from the probe port for the availability group listener.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ClusterCoreIP";"ProbePort"=$ClusterProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. Задайте параметры кластера, выполнив скрипт PowerShell на одном из узлов кластера.

Если любой ресурс SQL настроен для использования порта от 49152 до 65536 ( динамический диапазон портов по умолчанию для TCP/IP), добавьте исключение для каждого порта. Такие ресурсы могут включать:

  • Ядро СУБД SQL Server
  • Прослушиватель группы доступности AlwaysOn
  • Проверка работоспособности экземпляра отказоустойчивого кластера
  • Конечная точка зеркального отображения базы данных
  • Ресурс IP-адреса ядра кластера

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

  • netsh int ipv4 add excludedportrange tcp startport=58888 numberofports=1 store=persistent
  • netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent

Важно настроить исключение портов, если порт не используется. В противном случае команда завершится ошибкой, например "Процесс не может получить доступ к файлу, так как он используется другим процессом". Чтобы убедиться, что исключения настроены правильно, используйте следующую команду: netsh int ipv4 show excludedportrange tcp

Предупреждение

Порт для пробы работоспособности прослушивателя группы доступности должен отличаться от порта для пробы работоспособности основного IP-адреса кластера. В этих примерах порт прослушивателя равен 59999, а порт пробы работоспособности основного IP-адреса кластера — 58888. Оба порта требуют правила брандмауэра "разрешить входящий трафик".

Настройка порта прослушивателя в SQL Server Management Studio

  1. Запустите SQL Server Management Studio и подключитесь к основной реплике.

  2. Перейдите к прослушивателям групп>доступности>AlwaysOn с высоким уровнем доступности.

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

  4. В поле Порт укажите номер порта для прослушивателя группы доступности с помощью использованного ранее параметра $EndpointPort (по умолчанию использовалось значение "1433") и нажмите кнопку ОК.

Проверка подключения к прослушивателю

Чтобы проверить подключение, необходимо:

  1. Подключитесь по протоколу удаленного рабочего стола (RDP) к экземпляру SQL Server, который находится в той же виртуальной сети, но не содержит реплику. Это может быть другой сервер SQL Server в кластере.

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

    sqlcmd -S <listenerName> -E
    

    Если прослушиватель использует порт, отличный от порта по умолчанию (1433), укажите порт в строке подключения. Например, следующая команда sqlcmd подключается к прослушивателю через порт 1435.

    sqlcmd -S <listenerName>,1435 -E
    

sqlcmd автоматически подключается к любому экземпляру SQL Server, на котором размещена основная реплика.

Примечание.

Указанный порт должен быть открыт в брандмауэре обоих серверов SQL Server. Для обоих серверов требуется правило для входящего трафика используемого TCP-порта. Дополнительные сведения см. в статье Добавление и изменение правила брандмауэра.

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

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

Clear-Host
Get-ClusterResource `
| Where-Object {$_.ResourceType.Name -like "IP Address"} `
| Get-ClusterParameter `
| Where-Object {($_.Name -like "Network") -or ($_.Name -like "Address") -or ($_.Name -like "ProbePort") -or ($_.Name -like "SubnetMask")}

Рекомендации и ограничения

Обратите внимание на следующие рекомендации относительно прослушивателя группы доступности в Azure, использующего внутренний балансировщик нагрузки Azure.

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

  • Если вы ограничиваете доступ с помощью группы безопасности сети Azure, убедитесь, что правила разрешения включают следующие элементы:

    • IP-адреса виртуальной машины SQL Server;
    • плавающие IP-адреса подсистемы балансировки нагрузки для прослушивателя группы доступности;
    • основной IP-адрес кластера, если применимо.
  • Создайте конечную точку службы в случае использования Load Balancer (цен. категория "Стандартный") и службы хранилища Azure для облачного свидетеля. Дополнительные сведения см. в разделе Предоставление доступа из виртуальной сети.

Командлеты PowerShell

Для создания внутренней подсистемы балансировки нагрузки на виртуальных машинах Azure можно использовать указанные ниже командлеты PowerShell.

  • Командлет New-AzLoadBalancer создает подсистему балансировки нагрузки.
  • Командлет New-AzLoadBalancerFrontendIpConfig создает конфигурацию внешних IP-адресов для подсистемы балансировки нагрузки.
  • Командлет New-AzLoadBalancerRuleConfig создает конфигурацию правила для подсистемы балансировки нагрузки.
  • Командлет New-AzLoadBalancerBackendAddressPoolConfig создает конфигурацию внутреннего пула IP-адресов для подсистемы балансировки нагрузки.
  • Командлет New-AzLoadBalancerProbeConfig создает конфигурацию пробы для подсистемы балансировки нагрузки.
  • Командлет Remove-AzLoadBalancer удаляет подсистему балансировки нагрузки из группы ресурсов Azure.

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

Дополнительные сведения см. на следующих ресурсах: