Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server на виртуальной машине Azure
Совет
Существует множество методов развертывания группы доступности. Упрощение развертывания и устранение необходимости использования Azure Load Balancer или распределенного сетевого имени (DNN) для группы доступности AlwaysOn путем создания виртуальных машин SQL Server в нескольких подсетях в одной виртуальной сети Azure. Если вы уже создали группу доступности в одной подсети, ее можно перенести в среду с несколькими подсетами.
В этой статье объясняется, как использовать шаблоны быстрого запуска Azure для частичной автоматизации развертывания конфигурации группы доступности Always On для виртуальных машин SQL Server в одной подсети в Azure. При этом используются два шаблона быстрого запуска Azure:
| Шаблон | Описание |
|---|---|
| 101-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 с помощью шаблонов быстрого запуска, требуется следующее:
- Подписка Azure
- Группа ресурсов с контроллером домена.
- Одна или несколько присоединенных к домену виртуальных машин Azure под управлением SQL Server Enterprise Edition 2016 (или более поздней версии), размещенных в одной группе или зоне доступности и зарегистрированных с помощью расширения агента IaaS для SQL.
- Внутренний Azure Load Balancer и никем не используемый IP-адрес для слушателя группы доступности в той же подсети, что и виртуальная машина SQL Server.
Разрешения
Для настройки группы доступности 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. Это можно сделать следующим образом:
Перейдите к шаблону быстрого запуска 101-sql-vm-ag-setup . Затем выберите Развернуть в Azure, чтобы открыть шаблон быстрого запуска на портале Azure.
Заполните все обязательные поля, чтобы настроить метаданные отказоустойчивого кластера Windows. Необязательные поля можно оставить пустыми.
В следующей таблице представлены необходимые значения для этого шаблона:
Поле значение Подписка Подписка, в которой находятся ваши виртуальные машины SQL Server. Группа ресурсов Группа ресурсов, где находятся ваши виртуальные машины SQL Server. Имя отказоустойчивого кластера Имя, которое вы выбрали для нового отказоустойчивого кластера Windows. Список существующих ВМ Виртуальные машины SQL Server, которые вы хотите задействовать в этой группе доступности и включить в новый кластер. Разделите эти значения запятыми с пробелом (например, SQLVM1, SQLVM2). Версия SQL Server Версия SQL Server для виртуальных машин SQL Server. Выберите ее в раскрывающемся списке. Existing Fully Qualified Domain Name (Существующее полное доменное имя) FQDN существующего домена, в котором размещены виртуальные машины 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-токен расположения артефактов Это поле остается пустым специально. Если вы принимаете условия, установите флажок Я принимаю указанные выше условия. Затем щелкните Приобрести, чтобы завершить развертывание шаблона быстрого запуска.
Для мониторинга развертывания выберите развертывание с помощью значка Уведомления на верхнем баннере навигации или перейдите в раздел Группа ресурсов на портале Azure. Щелкните Развертывания в разделе Параметры и выберите развертывание Microsoft.Template.
Примечание.
Учетные данные, предоставляемые во время развертывания шаблона, хранятся только во время выполнения развертывания. По завершении операции эти пароли удаляются. Вам будет предложено ввести их снова, если в кластер будут добавлены дополнительные виртуальные машины SQL Server.
Настройка кворума
Хотя диск-свидетель является самым устойчивым вариантом кворума, для него требуется общий диск Azure, который накладывает некоторые ограничения на группу доступности. Поэтому рекомендуемым решением кворума для кластеров с группами доступности для SQL Server на виртуальных машинах Azure является облачный свидетель.
Если в кластере четное число голосов, настройте решение кворума, которое лучше всего подходит для бизнес-задач. Дополнительные сведения см. в статье Кворум с виртуальными машинами SQL Server.
Проверка кластера
Майкрософт поддерживает только отказоустойчивые кластеры, конфигурация которых прошла проверку. Подключитесь к виртуальной машине с помощью предпочтительного метода, например бастиона, и убедитесь, что кластер проходит проверку, прежде чем продолжить. Невыполнение этой инструкции оставляет кластер в неподдерживаемом состоянии.
Вы можете проверить кластер с помощью диспетчера отказоустойчивости кластеров (FCM) или следующей команды PowerShell:
Test-Cluster -Node ("<node1>","<node2>") -Include "Inventory", "Network", "System Configuration"
Создание группы доступности.
Создайте группу доступности вручную обычным способом с помощью SQL Server Management Studio, PowerShell или Transact-SQL.
Внимание
Не создавайте прослушиватель в настоящее время, так как шаблон быстрого запуска 101-sql-vm-aglistener-setup выполняет это автоматически на следующем шаге.
Создание подсистемы балансировки нагрузки
Примечание.
Развертывания групп доступности в нескольких подсетях не требуют подсистемы балансировки нагрузки. В среде с одной подсетью клиенты, использующие SQL Server 2019 CU8 и более поздних версий в Windows 2016 и более поздних версий, могут заменить прослушиватель традиционных виртуальных сетей (VNN) и Azure Load Balancer на прослушиватель распределенной сети (DNN). Если вы хотите использовать DNN, пропустите все инструкции по настройке Azure Load Balancer для группы доступности.
Прослушивателю группы доступности Always On требуется внутренний экземпляр Azure Load Balancer. Внутренняя подсистема балансировки нагрузки предоставляет "плавающий" IP-адрес листенеру группы доступности, что обеспечивает более быстрое переключение и восстановление подключения.
Внимание
Внутренняя подсистема балансировки нагрузки должна находиться в той же виртуальной сети, что и экземпляры виртуальных машин SQL Server.
Вам просто нужно создать внутренний балансировщик нагрузки. так как за настройку остальных элементов конфигурации (серверный пул, зонд работоспособности и правила балансировки нагрузки) отвечает шаблон быстрого запуска 101-sql-vm-aglistener-setup (см. шаг 4).
На портале Azure откройте группу ресурсов, в которой содержатся виртуальные машины SQL Server.
В группе ресурсов щелкните Добавить.
Найдите балансировщик нагрузки. В результатах поиска выберите Load Balancer, опубликованный корпорацией Майкрософт.
На панели Load Balancer нажмите кнопку "Создать".
В диалоговом окне Создание подсистемы балансировки нагрузки настройте подсистему балансировки нагрузки, задав следующие параметры:
Настройка значение Имя Введите текстовое имя, представляющее подсистему балансировки нагрузки, например, введите sqlLB. Тип Внутренний. Большинство реализаций используют внутреннюю подсистему балансировки нагрузки, которая позволяет приложениям, работающим в одной и той же виртуальной сети, подключаться к группе доступности.
Внешний: позволяет приложениям подключаться к группе доступности через общедоступное подключение к Интернету.Виртуальная сеть Выберите виртуальную сеть, в которой расположены экземпляры SQL Server. Подсеть Выберите подсеть, в которой расположены экземпляры SQL Server. Назначение IP-адресов статически. Частный IP-адрес Укажите свободный IP-адрес из нужной подсети. Подписка Это поле может появиться, если у вас несколько подписок. Выберите подписку, которую требуется связать с этим ресурсом. Обычно это та же подписка, что и для всех ресурсов группы доступности. Группа ресурсов Выберите группу ресурсов, в которой расположены экземпляры SQL Server. Местонахождение Выберите расположение Azure, в котором расположены экземпляры SQL Server. Нажмите кнопку создания.
Внимание
Ресурс общедоступного 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.
Чтобы настроить внутреннюю подсистему балансировки нагрузки и создать прослушиватель группы доступности, выполните следующие действия:
Перейдите к шаблону быстрого запуска 101-sql-vm-aglistener-setup и выберите "Развернуть в Azure ", чтобы запустить шаблон быстрого запуска на портале Azure.
Заполните обязательные поля для настройки внутренней подсистемы балансировки нагрузки и создайте прослушиватель группы доступности. Необязательные поля можно оставить пустыми.
В следующей таблице представлены необходимые значения для этого шаблона:
Поле значение Группа ресурсов Группа ресурсов, в которой размещены виртуальные машины SQL Server и группа доступности. Existing Failover Cluster Name (Имя существующего отказоустойчивого кластера) Имя кластера, к которому присоединены виртуальные машины SQL Server. Existing Sql Availability Group (Существующая группа доступности SQL) Имя группы доступности, в которую входят виртуальные машины SQL Server. Список существующих ВМ Имена виртуальных машин SQL Server, которые входят в указанную выше группу доступности. Разделите эти имена запятыми с пробелом (например, SQLVM1, SQLVM2). Слушатель DNS-имя, которое нужно назначить прослушивателю. По умолчанию в шаблоне указано имя aglistener, но его можно изменить. Имя не должно превышать 15 символов. Listener Port (Порт прослушивателя) Порт, который будет использовать прослушиватель. Как правило, это порт по умолчанию с номером 1433. Номер порта, который указан в шаблоне. Но если вы изменили порт по умолчанию, то и порт прослушивателя следует изменить аналогичным образом. IP-адрес прослушивателя IP-адрес, который должен использовать прослушиватель. Этот IP-адрес будет создан во время развертывания шаблона, поэтому укажите такой адрес, который еще не используется. Existing Subnet (Существующая подсеть) Имя внутренней подсети, в которой размещена виртуальная машина SQL Server (например, default). Чтобы узнать это значение, в разделе Группа ресурсов выберите свою виртуальную сеть, щелкните Подсети в области Параметры и скопируйте значение параметра Имя. Существующий внутренний балансировщик нагрузки Имя внутренней подсистемы балансировки нагрузки, созданной на шаге 3. Порт пробы Порт пробы, который будет использоваться внутренней подсистемой балансировки нагрузки. В этом шаблоне указано стандартное значение 59999, но его можно изменить. Если вы принимаете условия, установите флажок Я принимаю указанные выше условия. Щелкните Приобрести, чтобы завершить развертывание шаблона быстрого запуска.
Для мониторинга развертывания выберите развертывание с помощью значка Уведомления на верхнем баннере навигации или перейдите в раздел Группа ресурсов на портале Azure. Щелкните Развертывания в разделе Параметры и выберите развертывание Microsoft.Template.
Примечание.
Если развертывание не завершилось успешно в середине процесса, вам потребуется вручную удалить только что созданный прослушиватель с помощью PowerShell, прежде чем повторно развернуть шаблон 101-sql-vm-aglistener-setup.
Настройка порта пробы
При использовании Azure Load Balancer для поддержки ресурса виртуального сетевого имени (VNN) необходимо настроить кластер для ответа на запросы проб работоспособности. Если проверка состояния не сможет получить ответ от серверного экземпляра, то новые подключения не отправляются в этот серверный экземпляр до тех пор, пока проверка состояния не завершится успешно снова.
Чтобы задать параметр порта пробы в PowerShell, используйте следующий сценарий один раз на соответствующий ресурс IP-адреса:
$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.
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer for a given Frontend IP Address. Any unused TCP port is valid.
Import-Module FailoverClusters
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$IPResourceName";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
Внесенные изменения не вступают в силу до тех пор, пока ресурс IP-адреса не будет отключен и снова подключен к сети. Выполните переключение на резервный ресурс, чтобы это изменение вступило в силу.
После настройки пробы кластера используйте следующий скрипт PowerShell для проверки параметров кластера:
Get-ClusterResource $IPResourceName | Get-ClusterParameter
Исключение портов из динамического диапазона портов
При использовании порта пробы работоспособности от 49 152 до 65 535 ( динамический диапазон портов по умолчанию для 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
Удаление прослушивателя
Если вам в дальнейшем потребуется удалить прослушиватель группы доступности, настроенный с помощью шаблона, это нужно делать через расширение агента SQL IaaS. Так как прослушиватель зарегистрирован в расширении агента IaaS, недостаточно просто удалить его с помощью SQL Server Management Studio.
Лучший способ — удалить его с помощью расширения агента IaaS для SQL, используя приведенный ниже фрагмент кода в PowerShell. Так удаляются метаданные прослушивателя группы доступности из расширения агента IaaS для SQL. Физически удаляет прослушиватель из группы доступности.
# Remove the availability group listener
# example: Remove-AzResource -ResourceId '/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/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.
BadRequest — можно обновить только список виртуальных машин SQL
Эта ошибка может возникать при развертывании шаблона 101-sql-vm-aglistener-setup, если прослушиватель был удален через SQL Server Management Studio (SSMS), но не был удален из расширения агента SQL IaaS. Удаление прослушивателя с помощью SSMS не приводит к удалению метаданных прослушивателя из расширения агента IaaS для SQL. Слушатель должен быть удален из поставщика ресурсов через PowerShell.
Учетная запись домена не существует
Эта ошибка может привести к двум причинам. либо указанная учетная запись домена не существует, либо отсутствуют данные имени пользователя (UPN). Шаблон 101-sql-vm-ag-setup ожидает учетную запись домена в формате UPN (т. е. user@domain.com), но некоторые учетные записи домена могут ее пропустить. Обычно это происходит, если локальный пользователь был перенесен в первую учетную запись администратора домена, когда сервер был повышен до контроллера домена, или если пользователь был создан с помощью PowerShell.
Проверьте, что учетная запись существует. Если она существует, вы можете столкнуться со второй ситуацией. Чтобы решить эту проблему, выполните следующие действия:
На контроллере домена откройте окно Пользователи и компьютеры Active Directory из параметра Средства в Диспетчере серверов.
Перейдите к учетной записи, выбрав в области слева раздел Пользователи.
Щелкните правой кнопкой мыши учетную запись и выберите Свойства.
Выберите вкладку Учетная запись. Если поле Имя пользователя пустое, это и является причиной ошибки.
Введите данные в поле Имя входа пользователя в соответствии с требованиями и выберите необходимый домен в раскрывающемся списке.
Выберите Применить, чтобы сохранить изменения, и закройте диалоговое окно, выбрав ОК.
После внесения этих изменений попытайтесь развернуть шаблон быстрого запуска Azure еще раз.
Следующие шаги
Дополнительные сведения см. на следующих ресурсах:
- Общие сведения о виртуальных машинах SQL Server
- Часто задаваемые вопросы о виртуальных машинах SQL Server
- Руководство по выбору ценовой категории для виртуальных машин SQL Server
- Новые возможности SQL Server на виртуальных машинах Azure
- Изменение модели лицензирования для виртуальной машины SQL Server