Настройка балансировщика нагрузки Azure для прослушивателя VNN группы доступности (AG) — SQL Server на виртуальных машинах Azure

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

Совет

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

На виртуальных машинах Azure кластеры используют балансировщик нагрузки для хранения IP-адреса, который должен находиться на одном узле кластера в определенный момент времени. В этом решении подсистема балансировки нагрузки содержит IP-адрес прослушивателя имени виртуальной сети (VNN) для группы доступности AlwaysOn, когда виртуальные машины SQL Server находятся в одной подсети.

В этой статье описывается, как настроить подсистему балансировки нагрузки с помощью службы "Azure Load Balancer". Балансировщик нагрузки направляет трафик к прослушивателю группы доступности на виртуальных машинах Azure с SQL Server для обеспечения высокой доступности и аварийного восстановления (HADR).

Для клиентов, использующих SQL Server 2019 CU8 и более поздние версии, рассмотрите возможность использования прослушивателя распределенной сети (DNN) как альтернативный вариант подключения. Слушатель DNN предлагает упрощенную конфигурацию и улучшенное обеспечение отказоустойчивости.

Предварительные требования

Прежде чем приступать к выполнению действий, описанных в этой статье, у вас уже должно быть следующее:

Создание подсистемы балансировки нагрузки

Вы можете создать любой из этих типов подсистем балансировки нагрузки:

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

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

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

Примечание.

Базовый балансировщик нагрузки выведен из эксплуатации. Для новых развертываний используйте подсистему балансировки нагрузки уровня "Стандартный". Если у вас есть существующее развертывание, использующее подсистему балансировки нагрузки "Базовый", обновите ее до стандартной подсистемы балансировки нагрузки.

Создание балансировщика нагрузки

  1. В портал Azure перейдите в группу ресурсов, содержащую виртуальные машины.

  2. Выберите Добавить. Выполните поиск в Azure Marketplace для подсистемы балансировки нагрузки. Выберите Load Balancer.

  3. Нажмите кнопку создания.

  4. На вкладке "Основные сведения" на вкладке "Создание подсистемы балансировки нагрузки " настройте подсистему балансировки нагрузки с помощью следующих значений:

    • Подписка. Ваша подписка Azure.
    • Группа ресурсов. Группа ресурсов, которая содержит ваши виртуальные машины.
    • Имя. Имя, определяющее балансировщик нагрузки.
    • Регион. Расположение Azure, которое содержит ваши виртуальные машины.
    • Номер SKU: Стандартный.
    • Тип: общедоступныйили внутренний. Доступ к внутренней подсистеме балансировки нагрузки можно получить из виртуальной сети. Большинство приложений Azure могут использовать внутреннюю подсистему балансировки нагрузки. Если приложению требуется доступ к SQL Server непосредственно через Интернет, используйте открытую подсистему балансировки нагрузки.
    • Уровень: региональный.
  5. Нажмите кнопку "Далее" — интерфейсная IP-конфигурация.

  6. Выберите " Добавить интерфейсную IP-конфигурацию".

    Снимок экрана: портал Azure, на котором показана кнопка добавления интерфейсной IP-конфигурации.

  7. Настройте внешний IP-адрес с помощью следующих значений:

    • Имя: имя, определяющее конфигурацию внешнего IP-адреса.
    • Виртуальная сеть: Та же сеть, что и у виртуальных машин.
    • Подсеть: Та же подсеть, что и у виртуальных машин.
    • Назначение: статическое.
    • IP-адрес: IP-адрес, назначенный кластеризованному сетевому ресурсу.
    • Зона доступности: необязательная зона для развертывания вашего IP-адреса.

    Снимок экрана: портал Azure, на котором показана страница настройки внешнего IP-адреса.

  8. Нажмите кнопку "Добавить ", чтобы создать внешний IP-адрес.

  9. Выберите "Проверка и создание", чтобы создать подсистему балансировки нагрузки.

Настройка серверного пула

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

  2. Выберите серверные пулы и нажмите кнопку +Добавить.

  3. В поле "Имя" введите имя внутреннего пула.

  4. Для конфигурации внутреннего пула выберите сетевой адаптер.

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

  6. В разделе "Виртуальная машина" выберите виртуальные машины, которые будут участвовать в качестве узлов кластера. Не забудьте включить все виртуальные машины, на которых будет размещаться группа доступности.

    Добавьте только основной IP-адрес каждой виртуальной машины. Не добавляйте вторичные IP-адреса.

  7. Выберите "Добавить", чтобы добавить виртуальные машины в внутренний пул.

  8. Нажмите кнопку "Сохранить", чтобы создать внутренний пул.

Настройка пробы работоспособности

  1. На панели балансировщика нагрузки выберите проверки работоспособности.

  2. При добавлении пробы работоспособности задайте следующие параметры:

    • Имя. Имя для проверки работоспособности.
    • Протокол: TCP.
    • Порт: порт, который вы создали в брандмауэре для проверки работоспособности. В этом примере используется TCP-порт 59999.
    • Интервал: 5 секунд.
  3. Выберите Добавить.

Установите правила балансировки нагрузки

  1. На панели подсистемы балансировки нагрузки выберите правила балансировки нагрузки.

  2. Выберите Добавить.

  3. Задайте следующие параметры:

    • Имя: Имя для правила балансировки нагрузки.
    • Внешний IP-адрес: IP-адрес, заданный при настройке внешнего интерфейса.
    • Серверный пул: внутренний пул, содержащий виртуальные машины, предназначенные для подсистемы балансировки нагрузки.
    • HA Ports: Включает балансировку нагрузки на всех портах для протоколов TCP и UDP.
    • Протокол: TCP.
    • Порт: TCP-порт для SQL Server. Значение по умолчанию — 1433.
    • Серверный порт. Используется тот же порт, что и для значения Порт при включении параметра Плавающий IP-адрес (прямой ответ от сервера).
    • Проверка работоспособности: проверка, которую вы настроили ранее.
    • Сохраняемость сеанса: нет.
    • Время ожидания простоя (минуты): 4.
    • Плавающий IP-адрес (прямой ответ от сервера). Включено.
  4. Выберите Сохранить.

Настройте зонд кластера

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

Обновите переменные в следующем скрипте со значениями из вашей среды. Удалите угловые скобки (< и >).

$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<AG Listener IP Address Resource Name>"
$ILBIP = "<n.n.n.n>"
[int]$ProbePort = <nnnnn>

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

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

Переменная Ценность
ClusterNetworkName Имя отказоустойчивого кластера Windows Server для сети. Выберите Диспетчер отказоустойчивости кластеров>Сети, щелкните сеть правой кнопкой мыши и выберите Свойства. Правильное значение указано в поле Имя на вкладке Общие.
IPResourceName Имя ресурса для IP-адреса прослушивателя AG (Availability Group). В Диспетчере отказоустойчивости кластеров>, в Ролях, под ролью группы доступности, в разделе Имя сервера, щелкните правой кнопкой мыши ресурс IP-адреса и выберите Свойства. Правильное значение указано в поле Имя на вкладке Общие.
ILBIP IP-адрес внутренней подсистемы балансировки нагрузки. Этот адрес настраивается в портал Azure в качестве внешнего адреса внутренней подсистемы балансировки нагрузки. Это тот же IP-адрес, что и у прослушивателя группы доступности. Его можно найти в Диспетчере отказоустойчивости кластеров на той же странице свойств, где вы нашли значение для IPResourceName.
ProbePort Порт пробы, заданный для пробы работоспособности в подсистеме балансировки нагрузки. Допускается любой неиспользуемый TCP-порт.
SubnetMask Маска подсети для параметра кластера. Он должен быть адресом широковещательной трансляции TCP/IP: 255.255.255.255

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

Get-ClusterResource $IPResourceName | Get-ClusterParameter

Настройка исключения портов

При использовании порта пробы работоспособности от 49 152 до 65 536 ( динамический диапазон портов по умолчанию для TCP/IP) добавьте исключение для каждого порта пробы работоспособности на каждой виртуальной машине.

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

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

[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer. Any unused TCP port is valid.

netsh int ipv4 add excludedportrange tcp startport=$ProbePort numberofports=1 store=persistent

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

netsh int ipv4 show excludedportrange tcp

Измените строку подключения

Для клиентов, поддерживающих его, добавьте MultiSubnetFailover=True в строка подключения. MultiSubnetFailover Хотя опция подключения не является обязательной, она обеспечивает преимущество быстрого переключения подсети в случае отказа. Это преимущество обусловлено тем, что драйвер клиента пытается открыть сокет TCP для каждого IP-адреса параллельно. Драйвер клиента ожидает, пока первый IP-адрес успешно ответит. После успешного ответа драйвер клиента использует этот IP-адрес для подключения.

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

Используйте PowerShell для изменения RegisterAllProvidersIp и HostRecordTTL параметров:

Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0
Get-ClusterResource yourListenerName | Set-ClusterParameter HostRecordTTL 300

Дополнительные сведения см. в документации по времени ожидания подключения прослушивателя в SQL Server.

Совет

  • Задайте параметр на в строке подключения, даже для решений HADR, охватывающих одну подсеть. Этот параметр поддерживает будущее масштабирование подсетей без необходимости обновлять строки подключения.
  • По умолчанию клиенты кэшируют DNS-записи кластера на 20 минут. Уменьшая HostRecordTTL, вы сокращаете время жизни (TTL) кэшированной записи. Затем устаревшие клиенты могут быстрее повторно подключаться. Таким образом, уменьшение HostRecordTTL параметров может увеличить трафик на DNS-серверах.

Тестовое переключение

Проверьте отработку отказа кластеризованного ресурса для проверки функциональности кластера:

  1. Откройте SQL Server Management Studio и подключитесь к слушателю группы доступности.
  2. В Обозреватель объектов разверните Группу доступности Always On.
  3. Щелкните правой кнопкой мыши группу доступности и выберите Переключение.
  4. Следуйте подсказкам мастера, чтобы выполнить отработку отказа группы доступности с помощью вторичной реплики.

Отработка отказа выполняется успешно, когда реплики переключают роли и находятся в состоянии синхронизации.

Проверка подключения

Чтобы проверить подключение, войдите на другую виртуальную машину в той же виртуальной сети. Откройте SQL Server Management Studio и подключитесь к прослушивателю группы доступности.

Примечание.

Установите последнюю версию SQL Server Management Studio (SSMS).

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

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

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