Настройка DNN для экземпляра отказоустойчивого кластера

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

Совет

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

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

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

Для альтернативного варианта подключения рассмотрите использование имени виртуальной сети и Azure Load Balancer.

Обзор

Имя распределенной сети (DNN) заменяет имя виртуальной сети (VNN) в качестве точки подключения при использовании с экземпляром отказоустойчивого кластера Always On на виртуальных машинах SQL Server. Это позволяет свести к нулю необходимость использования Azure Load Balancer для маршрутизации трафика в VNN, упрощения развертывания, обслуживания и повышения отработки отказа.

При развертывании экземпляра отказоустойчивого кластера, VNN по-прежнему имеется, однако клиент подключается к DNS-имени DNN, а не к имени VNN.

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

Чтобы выполнить действия, описанные в этой статье, необходимо следующее:

Создание ресурса DNN

Ресурс DNN создается в той же кластерной группе, что и экземпляр отказоустойчивого кластера SQL Server. Используйте PowerShell для создания ресурса DNN внутри кластерной группы экземпляра отказоустойчивого кластера.

Следующая команда PowerShell добавляет ресурс DNN в кластерную группу экземпляра отказоустойчивого кластера SQL Server с именем ресурса <dnnResourceName>. Имя ресурса используется для уникальной идентификации ресурса. Используйте то, которое имеет для вас смысл и является уникальным в пределах кластера. Тип ресурса должен быть Distributed Network Name.

Значение -Group должно быть именем кластерной группы, соответствующей экземпляру отказоустойчивого кластера SQL Server, в которую требуется добавить имя распределенной сети. Для экземпляра по умолчанию обычно используется формат SQL Server (MSSQLSERVER).

Add-ClusterResource -Name <dnnResourceName> `
-ResourceType "Distributed Network Name" -Group "<WSFC role of SQL Server instance>"

Например, чтобы создать ресурс DNN dnn-demo для экземпляра отказоустойчивого кластера SQL Server по умолчанию, используйте следующую команду PowerShell:

Add-ClusterResource -Name dnn-demo `
-ResourceType "Distributed Network Name" -Group "SQL Server (MSSQLSERVER)"

Присвоение DNS-имени кластеру DNN

Присвойте DNS-имя ресурсу DNN в кластере. Затем кластер использует это значение для маршрутизации трафика к узлу, на котором в настоящее время размещается экземпляр отказоустойчивого кластера SQL Server.

Клиенты используют DNS-имя для подключения к экземпляру отказоустойчивого кластера SQL Server. Можно выбрать уникальное значение. Если же у вас уже есть существующий экземпляр отказоустойчивого кластера и вы не хотите обновлять строки подключения клиента, можно также настроить DNN для использования текущего VNN, которое клиенты уже используют. Для этого необходимо переименовать VNN перед настройкой DNN в DNS.

Используйте эту команду, чтобы задать DNS-имя для DNN:

Get-ClusterResource -Name <dnnResourceName> | `
Set-ClusterParameter -Name DnsName -Value <DNSName>

Значение DNSName используется клиентами для подключения к экземпляру отказоустойчивого кластера SQL Server. Например, чтобы клиенты могли подключиться к FCIDNN, используйте следующую команду PowerShell:

Get-ClusterResource -Name dnn-demo | `
Set-ClusterParameter -Name DnsName -Value FCIDNN

Теперь клиенты будут вводить значение FCIDNN в строку подключения при подключении к экземпляру отказоустойчивого кластера SQL Server.

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

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

Переименование VNN

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

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

Если использование текущего VNN для вашей организации не требуется, этот раздел можно пропустить. После переименования VNN задайте DNS-имя для DNN кластера.

Настройка ресурса DNN в сети

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

Start-ClusterResource -Name <dnnResourceName>

Например, чтобы запустить ресурс DNN dnn-demo, используйте следующую команду PowerShell:

Start-ClusterResource -Name dnn-demo

Настройка возможных владельцев.

По умолчанию кластер привязывает DNS-имя для DNN ко всем узлам в кластере. Однако узлы в кластере, которые не являются частью экземпляра отказоустойчивого кластера SQL Server, должны быть исключены из списка возможных владельцев DNN.

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

  1. Перейдите к ресурсу DNN в диспетчере отказоустойчивости кластеров.

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

    Shortcut menu for the DNN resource, with the Properties command highlighted.

  3. Снимите флажки для всех узлов, которые не участвуют в экземпляре отказоустойчивого кластера. Список возможных владельцев для ресурса DNN должен совпадать со списком возможных владельцев для ресурса экземпляра SQL Server. Например, если предположить, что Data3 не участвует в экземпляре отказоустойчивого кластера, следующее изображение будет примером удаления Data3 из списка возможных владельцев для ресурса DNN:

    Clear the check box next to the nodes that do not participate in the FCI for possible owners of the DNN resource

  4. Нажмите кнопку ОК, чтобы сохранить параметры.

Перезапуск экземпляра SQL Server

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

  1. Перейдите к ресурсу SQL Server в диспетчере отказоустойчивости кластеров.
  2. Щелкните правой кнопкой мыши ресурс SQL Server и переведите его в автономный режим.
  3. После отключения всех связанных ресурсов, щелкните правой кнопкой мыши ресурс SQL Server и переведите его в режим "в сети".

Обновление строки подключения

Измените строку подключения для любого приложения, которое подключается к DNN экземпляра отказоустойчивого кластера SQL Server, включив фрагмент MultiSubnetFailover=True в эту строку подключения. Если клиент не поддерживает параметр MultiSubnetFailover, он не совместим с DNN.

Ниже приводится пример строки подключения к DNN экземпляра отказоустойчивого кластера SQL с DNS-именем FCIDNN:

Data Source=FCIDNN, MultiSubnetFailover=True

Кроме того, если DNN не использует исходное VNN, клиенты SQL, подключающиеся к экземпляру отказоустойчивого кластера SQL Server, должны будут обновить строку подключения на DNS-имя для DNN. Во избежание этого, можно обновить значение DNS-имени, чтобы оно стало именем VNN. Однако сначала необходимо заменить существующее VNN заполнителем.

Тестовая отработка отказа

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

Для этого выполните следующие действия.

  1. Подключитесь к одному из узлов кластера SQL Server с помощью протокола RDP.
  2. Откройте диспетчер отказоустойчивости кластеров. Выберите Роли. Обратите внимание, какой узел является владельцем роли SQL Server FCI.
  3. Щелкните правой кнопкой мыши роль SQL Server FCI.
  4. Выберите Переместить, а затем выберите Лучший возможный узел.

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

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

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

При необходимости можно скачать SQL Server Management Studio.

Избежание конфликта IP-адресов

Этот шаг является необязательным действием для предотвращения назначения виртуального IP-адреса (VIP), используемого ресурсом экземпляра отказоустойчивого кластера, другому ресурсу в Azure в качестве дубликата.

Хотя клиенты теперь используют DNN для подключения к экземпляру отказоустойчивого кластера SQL Server, имя виртуальной сети (VNN) и виртуальный IP-адрес не могут быть удалены, поскольку они являются необходимыми компонентами инфраструктуры экземпляра отказоустойчивого кластера. Тем не менее, поскольку в Azure теперь отсутствует балансировщик нагрузки, резервирующий виртуальный IP-адрес, существует риск того, что другому ресурсу в виртуальной сети будет назначен тот же IP-адрес, что и виртуальный IP-адрес, используемый экземпляром отказоустойчивого кластера. Это потенциально может привести к конфликту дублированных IP-адресов.

Настройте адрес APIPA или выделенный сетевой адаптер для резервирования IP-адреса.

Адрес APIPA

Чтобы избежать использования повторяющихся IP-адресов, настройте адрес APIPA (также известный как локальный адрес канала). Для этого выполните следующую команду:

Get-ClusterResource "virtual IP address" | Set-ClusterParameter 
    –Multiple @{"Address"="169.254.1.1";"SubnetMask"="255.255.0.0";"OverrideAddressMatch"=1;"EnableDhcp"=0}

В этой команде "виртуальный IP-адрес" — это имя ресурса кластерного виртуального IP-адреса, а "169.254.1.1" — это APIPA-адрес, выбранный для виртуального IP-адреса. Выберите адрес, наиболее подходящий для вашей организации. Задайте значение OverrideAddressMatch=1, чтобы разрешить IP-адрес в любой сети, включая диапазон адресов APIPA.

Выделенные сетевые адаптеры

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

Ограничения

  • Клиент, подключающийся к прослушивателю DNN, должен поддерживать параметр MultiSubnetFailover=True в строке подключения.
  • При работе с другими функциями SQL Server и экземпляром отказоустойчивого кластера с DNN могут возникнуть дополнительные факторы. Дополнительные сведения см. в статье об экземпляре отказоустойчивого кластера со взаимодействием DNN.

Дальнейшие действия

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