Настройка одного или нескольких прослушивателей групп доступности 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:

    Screenshot that shows a cluster network name in Failover Cluster Manager.

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

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

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

    Screenshot of Failover Cluster Manager that shows selecting the Client Access Point command on the shortcut menu for the availability group.

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

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

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

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

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

    Screenshot of Failover Cluster Manager that shows an offline status for a client access point.

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

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

    Screenshot of Failover Cluster Manager that shows the selection of an IP address.

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

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

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

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

    Screenshot of Failover Cluster Manager that shows adding a name on the Dependencies tab.

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

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

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

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

    Screenshot of Failover Cluster Manager that shows the Properties menu option for the listener's name.

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

    Screenshot of the Dependencies tab that shows an IP resource for an availability group.

    Совет

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

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

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