Использование шаблонов быстрого запуска Azure для настройки группы доступности для SQL Server на виртуальной машине Azure

Применимо к:SQL Server на виртуальной машине Azure

Совет

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

В этой статье объясняется, как использовать шаблоны быстрого запуска Azure для частичной автоматизации развертывания конфигурации группы доступности Always On для виртуальных машин SQL Server в одной подсети в Azure. При этом используются два шаблона быстрого запуска Azure:

Template Description
sql-vm-ag-setup Создает отказоустойчивый кластер Windows и присоединить к нему виртуальные машины SQL Server.
101-sql-vm-aglistener-setup Создает прослушиватель группы доступности и настроить внутреннюю подсистему балансировки нагрузки. Этот шаблон можно использовать, только если отказоустойчивый кластер Windows был создан с помощью шаблона 101-sql-vm-ag-setup.

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

В этой статье показано, как настроить среду группы доступности с помощью шаблонов быстрого запуска Azure. Но эту процедуру можно также выполнять с помощью портала Azure, PowerShell или Azure CLI либо вручную.

Примечание.

Теперь можно выполнить перенос решения группы доступности по методу lift-and-shift на SQL Server на виртуальных машинах Azure с помощью Azure Migrate. Дополнительные сведения см. в разделе Перенос группы доступности.

Необходимые компоненты

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

Разрешения

Для настройки группы доступности Always On с помощью шаблонов быстрого запуска Azure требуются следующие разрешения:

  • Существующая учетная запись пользователя домена с разрешением на создание объекта компьютера в домене. Как правило, учетная запись администратора домена обычно имеет соответствующие разрешения (например, account@domain.com). Эта учетная запись также должна входить в группу локальных администраторов на каждой виртуальной машине для создания кластера.
  • Учетная запись пользователя домена, которая используется для управления SQL Server.

Создание кластера

Когда вы завершите регистрацию виртуальных машин SQL Server с помощью расширения агента IaaS для SQL, виртуальные машины SQL Server можно будет присоединить к группе SqlVirtualMachineGroups. Этот ресурс определяет метаданные отказоустойчивого кластера Windows, в том числе версию, выпуск, полное доменное имя, учетные записи Active Directory для управления кластером и SQL Server, а также учетную запись хранения для роли облака-свидетеля.

Добавление виртуальных машин SQL Server в группу ресурсов SqlVirtualMachineGroups запускает службу отказоустойчивого кластера Windows для создания кластера, а затем присоединяет эти виртуальные машины SQL Server к этому кластеру. Этот шаг автоматизирован с помощью шаблона быстрого запуска 101-sql-vm-ag-setup. Это можно сделать следующим образом:

  1. Перейдите к шаблону быстрого запуска sql-vm-ag-setup. Затем выберите Развернуть в Azure, чтобы открыть шаблон быстрого запуска на портале Azure.

  2. Заполните все обязательные поля, чтобы настроить метаданные отказоустойчивого кластера Windows. Необязательные поля можно оставить пустыми.

    В следующей таблице представлены необходимые значения для этого шаблона:

    Поле значение
    Подписка Подписка, в которой находятся ваши виртуальные машины SQL Server.
    Группа ресурсов Группа ресурсов, где находятся ваши виртуальные машины SQL Server.
    Failover Cluster Name (Имя отказоустойчивого кластера) Имя, которое вы выбрали для нового отказоустойчивого кластера Windows.
    Existing Vm List (Список существующих виртуальных машин) Виртуальные машины SQL Server, которые вы хотите разместить в этой группе доступности и в новом кластере. Разделите эти значения запятыми с пробелом (например, SQLVM1, SQLVM2).
    Версия SQL Server Версия SQL Server для виртуальных машин SQL Server. Выберите ее в раскрывающемся списке. В настоящее время поддерживаются только образы SQL Server 2016 и SQL Server 2017.
    Existing Fully Qualified Domain Name (Существующее полное доменное имя) Полное доменное имя существующего домена, в котором находятся виртуальные машины SQL Server.
    Existing Domain Account (Учетная запись существующего домена) Существующая учетная запись пользователя домена, у которой есть разрешение на создание объекта компьютера в домене, так как во время развертывания шаблона создается CNO. Как правило, учетная запись администратора домена обычно имеет соответствующие разрешения (например, account@domain.com). Эта учетная запись также должна входить в группу локальных администраторов на каждой виртуальной машине для создания кластера.
    Domain Account Password (Пароль к учетной записи домена) Пароль для указанной выше учетной записи пользователя домена.
    Existing Sql Service Account (Существующая учетная запись службы SQL Server) Учетная запись пользователя домена, которая контролирует службу SQL Server во время развертывания группы доступности (например, account@domain.com).
    Sql Service Password (Пароль службы SQL) Пароль для учетной записи пользователя домена, которая используется для управления SQL Server.
    Имя облака-свидетеля Новая учетная запись хранения Azure, которая создается и используется для облака-свидетеля. Это имя можно изменить.
    Расположение _artifacts Это поле имеет значение по умолчанию, и его можно изменить.
    Токен SaS расположения _artifacts Это поле остается пустым специально.
  3. Если вы принимаете условия, установите флажок Я принимаю указанные выше условия. Затем щелкните Приобрести, чтобы завершить развертывание шаблона быстрого запуска.

  4. Для мониторинга развертывания выберите развертывание с помощью значка Уведомления на верхнем баннере навигации или перейдите в раздел Группа ресурсов на портале Azure. Щелкните Развертывания в разделе Параметры и выберите развертывание Microsoft.Template.

Примечание.

Учетные данные, предоставляемые во время развертывания шаблона, хранятся только во время выполнения развертывания. По завершении операции эти пароли удаляются. Вам будет предложено ввести их снова, если в кластер будут добавлены дополнительные виртуальные машины SQL Server.

Настройка кворума

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

Если в кластере четное число голосов, настройте решение кворума, которое лучше всего подходит для бизнес-задач. Дополнительные сведения см. в статье Кворум с виртуальными машинами SQL Server.

Проверка кластера

Майкрософт поддерживает только отказоустойчивые кластеры, конфигурация которых прошла проверку. Подключитесь к виртуальной машине предпочтительным методом, например с помощью протокола удаленного рабочего стола (RDP), и убедитесь, что кластер прошел проверку, прежде чем продолжить. Несоблюдение этого действия оставляет кластер в неподдерживаемом состоянии.

Вы можете проверить кластер с помощью диспетчера отказоустойчивости кластеров (FCM) или следующей команды PowerShell:

Test-Cluster –Node ("<node1>","<node2>") –Include "Inventory", "Network", "System Configuration"

Создание группы доступности.

Создайте группу доступности вручную обычным способом с помощью SQL Server Management Studio, PowerShell или Transact-SQL.

Внимание

Но на этот раз не создавайте прослушиватель, так как это действие автоматизировано в шаблоне быстрого запуска 101-sql-vm-aglistener-setup (см. шаг 4).

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

Примечание.

Развертывания групп доступности в нескольких подсетях не требуют подсистемы балансировки нагрузки. В среде с одной подсетью клиенты, использующие SQL Server 2019 CU8 и более поздних версий в Windows 2016 и более поздних версий, могут заменить прослушиватель традиционных виртуальных сетей (VNN) и Azure Load Balancer на прослушиватель распределенной сети (DNN). Если вы хотите использовать DNN, пропустите все инструкции по настройке Azure Load Balancer для группы доступности.

Прослушивателю группы доступности Always On требуется внутренний экземпляр Azure Load Balancer. Внутренняя подсистема балансировки нагрузки предоставляет "плавающий" IP-адрес прослушивателю группы доступности, что обеспечивает более быструю отработку отказа и восстановление подключения. Если виртуальные машины SQL Server в группе доступности входят в одну группу доступности, вы можете использовать подсистему балансировки нагрузки ценовой категории "Базовый". В противном случае потребуется ценовая категория "Стандартный".

Внимание

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

Вам просто нужно создать внутреннюю подсистему балансировки нагрузки вручную, так как за настройку остальных элементов конфигурации (серверный пул, зонд работоспособности и правила балансировки нагрузки) отвечает шаблон быстрого запуска 101-sql-vm-aglistener-setup (см. шаг 4).

  1. На портале Azure откройте группу ресурсов, в которой содержатся виртуальные машины SQL Server.

  2. В группе ресурсов щелкните Добавить.

  3. Найдите балансировщик нагрузки. В результатах поиска выберите Load Balancer, опубликованный корпорацией Майкрософт.

  4. На панели Load Balancer нажмите кнопку "Создать".

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

    Параметр Значение
    Имя Введите текстовое имя, представляющее подсистему балансировки нагрузки, например sqlLB.
    Тип Внутренний. Большинство реализаций используют внутреннюю подсистему балансировки нагрузки, которая позволяет приложениям, работающим в одной и той же виртуальной сети, подключаться к группе доступности.
    Внешний. Позволяет приложениям подключаться к группе доступности через общедоступное интернет-подключение.
    Виртуальная сеть Выберите виртуальную сеть, в которой расположены экземпляры SQL Server.
    Подсеть Выберите подсеть, в которой расположены экземпляры SQL Server.
    Назначение IP-адресов статически.
    Частный IP-адрес Укажите свободный IP-адрес из нужной подсети.
    Подписка Это поле может появиться, если у вас несколько подписок. Выберите подписку, которую требуется связать с этим ресурсом. Обычно это подписка, с которой связаны все ресурсы группы доступности.
    Группа ресурсов Выберите группу ресурсов, в которой расположены экземпляры SQL Server.
    Местонахождение Выберите расположение Azure, в котором расположены экземпляры SQL Server.
  6. Нажмите кнопку создания.

Внимание

Ресурс общедоступного IP-адреса для каждой виртуальной машины SQL Server должен иметь номер SKU "Стандартный", чтобы обеспечить совместимость с подсистемой балансировки нагрузки ценовой категории "Стандартный". Чтобы определить номер SKU для ресурса общедоступного IP-адреса виртуальной машины, в разделе Группа ресурсов выберите ресурс Общедоступный IP-адрес для виртуальной машины SQL Server, а затем найдите значение параметра Номер SKU в области Обзор.

Создание прослушивателя

Создайте прослушиватель группы доступности и автоматически настройте внутреннюю подсистему балансировки нагрузки с помощью шаблона быстрого запуска 101-sql-vm-aglistener-setup. Шаблон подготавливает к работе ресурс Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/AvailabilityGroupListener. Шаблон быстрого запуска 101-sql-vm-aglistener-setup позволяет выполнять следующие действия с помощью расширения агента IaaS для SQL:

  • Создает новый ресурс протокола IP внешнего интерфейса (на основе значения IP-адреса, предоставленного во время развертывания) для прослушивателя.
  • Настраивает параметры сети для кластера и внутренней подсистемы балансировки нагрузки.
  • Настраивает внутренний пул для внутренней подсистемы балансировки нагрузки, пробы работоспособности и правила балансировки нагрузки.
  • Создает прослушивателя группы доступности с указанными IP-адресом и именем.

Примечание.

101-sql-vm-aglistener-setup можно использовать, только если отказоустойчивый кластер Windows был создан с помощью шаблона 101-sql-vm-ag-setup.

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

  1. На портале Azure перейдите к шаблону быстрого запуска sql-vm-aglistener-setup и щелкните Развернуть в Azure, чтобы запустить его.

  2. Заполните обязательные поля для настройки внутренней подсистемы балансировки нагрузки и создайте прослушиватель группы доступности. Необязательные поля можно оставить пустыми.

    В следующей таблице представлены необходимые значения для этого шаблона:

    Поле значение
    Группа ресурсов Группа ресурсов, в которой размещены виртуальные машины SQL Server и группа доступности.
    Existing Failover Cluster Name (Имя существующего отказоустойчивого кластера) Имя кластера, к которому присоединены виртуальные машины SQL Server.
    Existing Sql Availability Group (Существующая группа доступности SQL) Имя группы доступности, в которую входят виртуальные машины SQL Server.
    Existing Vm List (Список существующих виртуальных машин) Имена виртуальных машин SQL Server, которые входят в указанную выше группу доступности. Разделите эти имена запятыми с пробелом (например, SQLVM1, SQLVM2).
    Средство прослушивания DNS-имя, которое нужно назначить прослушивателю. По умолчанию в шаблоне указано имя aglistener, но его можно изменить. Имя не должно превышать 15 символов.
    Listener Port (Порт прослушивателя) Порт, который будет использовать прослушиватель. Как правило, это порт по умолчанию с номером 1433. Номер порта, который указан в шаблоне. Но если вы изменили порт по умолчанию, то и порт прослушивателя следует изменить аналогичным образом.
    Прослушиватель IP-адреса IP-адрес, который должен использовать прослушиватель. Этот IP-адрес будет создан во время развертывания шаблона, поэтому укажите такой адрес, который еще не используется.
    Existing Subnet (Существующая подсеть) Имя внутренней подсети, в которой размещена виртуальная машина SQL Server (например, default). Чтобы узнать это значение, в разделе Группа ресурсов выберите свою виртуальную сеть, щелкните Подсети в области Параметры и скопируйте значение параметра Имя.
    Existing Internal Load Balancer (Существующий внутренний ресурс Load Balancer) Имя внутренней подсистемы балансировки нагрузки, созданной на шаге 3.
    Порт пробы Порт пробы, который будет использоваться внутренней подсистемой балансировки нагрузки. В этом шаблоне указано стандартное значение 59999, но его можно изменить.
  3. Если вы принимаете условия, установите флажок Я принимаю указанные выше условия. Щелкните Приобрести, чтобы завершить развертывание шаблона быстрого запуска.

  4. Для мониторинга развертывания выберите развертывание с помощью значка Уведомления на верхнем баннере навигации или перейдите в раздел Группа ресурсов на портале Azure. Щелкните Развертывания в разделе Параметры и выберите развертывание Microsoft.Template.

Примечание.

Если развертывание завершается сбоем в середине процесса, следует вручную удалить только что созданный прослушиватель с помощью PowerShell и повторить попытку развернуть шаблон быстрого запуска 101-sql-vm-aglistener-setup.

Удаление прослушивателя

Если вам потребуется удалить прослушиватель группы доступности, настроенный с помощью шаблона, это нужно делать с помощью расширения агента IaaS для SQL. Так как прослушиватель зарегистрирован в расширении агента IaaS, недостаточно просто удалить его с помощью SQL Server Management Studio.

Лучший способ — удалить его с помощью расширения агента IaaS для SQL, используя приведенный ниже фрагмент кода в PowerShell. Так из расширения агента IaaS для SQL удаляются метаданные прослушивателя группы доступности, а из группы доступности физически удаляется прослушиватель.

# Remove the availability group listener
# example: Remove-AzResource -ResourceId '/subscriptions/a1a11a11-1a1a-aa11-aa11-1aa1a11aa11a/resourceGroups/SQLAG-RG/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/Cluster/availabilitygrouplisteners/aglistener' -Force
Remove-AzResource -ResourceId '/subscriptions/<SubscriptionID>/resourceGroups/<resource-group-name>/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/<cluster-name>/availabilitygrouplisteners/<listener-name>' -Force

Распространенные ошибки

В этом разделе описаны некоторые известные проблемы и возможные способы их устранения.

Прослушиватель группы доступности для группы доступности '<AG-Name>' уже существует Выбранная группа доступности, используемая в шаблоне быстрого запуска Azure для прослушивателя группы доступности, уже содержит прослушиватель. Либо он физически находится в группе доступности, либо его метаданные остаются в расширении агента IaaS для SQL. Удалите прослушиватель с помощью PowerShell и повторно разверните шаблон быстрого запуска 101-sql-vm-aglistener-setup.

Подключение работает только из первичной реплики. Такое поведение чаще всего связано с неудачным развертыванием шаблона 101-sql-vm-aglistener-setup, которое привело к рассогласованию конфигурации внутренней подсистемы балансировки нагрузки. Убедитесь, что в серверном пуле отображается группа доступности, и что есть правила для зонда работоспособности и для балансировки нагрузки. Конфигурация внутренней подсистемы балансировки нагрузки будет несогласованной при отсутствии требуемых компонентов.

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

Неправильный запрос — можно обновить только список виртуальных машин SQL Такая ошибка может возникать при развертывании шаблона 101-sql-vm-aglistener-setup, если прослушиватель был удален с помощью SQL Server Management Studio (SSMS), но не был удален из расширения агента IaaS для SQL. Удаление прослушивателя с помощью SSMS не приводит к удалению метаданных прослушивателя из расширения агента IaaS для SQL. Прослушиватель должен быть удален из поставщика ресурсов с помощью PowerShell.

Учетная запись домена не существует Эта ошибка может быть вызвана двумя причинами: либо указанная учетная запись домена действительно не существует, либо отсутствуют данные имени участника-пользователя (UPN). Шаблон 101-sql-vm-ag-setup ожидает учетную запись домена в формате UPN (т. е. user@domain.com), но некоторые учетные записи домена могут ее пропустить. Обычно это происходит, если локальный пользователь был перенесен в первую учетную запись администратора домена, когда сервер был повышен до контроллера домена, или если пользователь был создан с помощью PowerShell.

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

  1. На контроллере домена откройте окно Пользователи и компьютеры Active Directory из параметра Средства в Диспетчере серверов.

  2. Перейдите к учетной записи, выбрав в области слева раздел Пользователи.

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

  4. Выберите вкладку Учетная запись. Если поле Имя пользователя пустое, это и является причиной ошибки.

    Blank user account indicates missing UPN

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

  6. Выберите Применить, чтобы сохранить изменения, и закройте диалоговое окно, выбрав ОК.

После внесения этих изменений попытайтесь развернуть шаблон быстрого запуска Azure еще раз.

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

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