Развертывание нескольких Кластеров больших данных SQL Server в одном домене Active Directory

Область применения: SQL Server 2019 (15.x)

В этой статье описываются обновления для накопительного пакета обновления 5 (CU5) SQL Server 2019, которые позволяют настроить несколько Кластеров больших данных SQL Server 2019. Теперь можно развернуть различные Кластеры больших данных и интегрировать их с одним доменом Active Directory.

Важно!

Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на платформе, а программное обеспечение будет по-прежнему поддерживаться с помощью SQL Server накопительных обновлений до этого времени. Дополнительные сведения см. в записи блога объявлений и в статье о параметрах больших данных на платформе Microsoft SQL Server.

До пакета обновлений SQL Server 2019 CU5 существовали две проблемы, которые мешали развертыванию нескольких кластеров больших данных в доменах AD.

  • Конфликт имен субъектов-служб и домена DNS
  • Имена субъекта учетной записи домена

Что такое конфликты имен объектов?

Конфликт имен субъектов-служб и доменов DNS

Доменное имя, указанное во время развертывания, используется в качестве домена DNS Active Directory (AD). Это означает, что объекты pod могут подключаться друг к другу во внутренней сети с помощью этого домена DNS. Пользователи также могут подключаться к конечным точкам кластера больших данных, используя этот домен DNS. В результате для любого имени субъекта-службы (SPN), созданного для службы в кластере больших данных, устанавливается имя объекта pod Kubernetes, службы или конечной точки, действующее в этом домене DNS AD. Если пользователь развертывает второй кластер в домене, создаваемые имена субъектов-служб будут иметь то же полное доменное имя, как и у объектов pod, и доменные имена DNS не будут различаться между двумя кластерами. Рассмотрим случай для домена DNS AD contoso.local. Одним из субъектов-служб, созданных для SQL Server главного пула в объекте pod master-0 будет MSSQLSvc/master-0.contoso.local:1433. Когда пользователь будет выполнять развертывание во втором кластере, имя объекта pod для master-0 будет точно таким же. Пользователь указывает тот же домен DNS AD (contoso.local), поэтому формируется точно такая же строка имени субъекта-службы. Active Directory запрещает создание конфликтующих имен субъектов-служб, поэтому развертывание второго кластера завершится сбоем.

Имена субъекта учетной записи домена

Во время развертывания кластера больших данных с доменом Active Directory для служб, выполняющихся внутри кластера больших данных, создается несколько субъектов учетных записей. Это, по сути, учетные записи пользователей AD. До пакета обновлений SQL Server 2019 CU5 имена этих учетных записей не были уникальными между кластерами. Это приводило к попытке создать одинаковое имя учетной записи пользователя для конкретной службы в кластере больших данных в двух разных кластерах. При развертывании второго кластера возникает конфликт в AD, и учетная запись не создается.

Устранение конфликтов имен

Действия по устранению проблем с именем субъекта-службы и доменом DNS — SQL Server 2019 CU5

Имена субъектов-служб в кластерах должны быть уникальными. Доменное имя DNS, переданное во время развертывания, также должно быть другим. Вы можете указать разные имена DNS, используя новый параметр в файле конфигурации развертывания: subdomain. Если поддомен отличается в двух кластерах и через этот поддомен осуществляется внутренняя связь, имена субъектов-служб будут включать поддомен, чтобы обеспечить необходимую уникальность.

Примечание

Значение, передаваемое через параметр поддомена, является не новым доменом AD, а DNS-доменом, который используется для внутренних целей.

Давайте вернемся к примеру с именем субъекта-службы для SQL Server главного пула. Если поддомен равен bdc, то обсуждаемое имя субъекта-службы изменится на MSSQLSvc/master-0.bdc.contoso.local:1433.

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

Обеспечение уникальности имени учетной записи

Чтобы обновить имена учетных записей и гарантировать их уникальность, используйте префиксы учетных записей. Префикс учетной записи — это сегмент имени учетной записи, который является уникальным между любыми двумя кластерами. Оставшийся сегмент имени учетной записи может быть постоянным. Новый формат имени учетной записи выглядит следующим образом: <prefix>-<name>-<podId>.

Примечание

Длина имени учетной записи Active Directory должна составлять не более 20 символов. Кластеру больших данных необходимо использовать 8 символов для различения объектов pod и наборов с отслеживанием состояния. В результате префикс имени учетной записи ограничен 12 символами.

Вы можете настроить имя учетной записи. Используйте параметр accountPrefix в спецификации конфигурации Active Directory. В SQL Server 2019 CU5 в спецификации конфигурации содержится accountPrefix. По умолчанию имя поддомена используется в качестве префикса учетной записи. Если имя поддомена длиннее 12 символов, то в качестве префикса учетной записи используются первые 12 символов имени поддомена.

Поддомен применяется только к DNS. Поэтому новое имя учетной записи пользователя LDAP — bdc-ldap@contoso.local. Имя учетной записи — не bdc-ldap@bdc.contoso.local.

Семантика

Ниже приведены параметры, добавленные в SQL Server 2019 CU5 для настройки нескольких кластеров в домене:

subdomain

  • Необязательное поле
  • Тип данных: строка
  • Определение: уникальный поддомен DNS, используемый для этого кластера больших данных. Это значение должно отличаться для каждого кластера, развернутого в домене Active Directory.
  • Значение по умолчанию: Если этот параметр не указан, в качестве значения по умолчанию будет использоваться имя кластера.
  • Максимальная длина: 63 символа на метку (метка является строкой, разделенной точкой).
  • Примечания: DNS-имена конечных точек должны включать поддомен в полном доменном имени.

accountPrefix

  • Необязательное поле
  • Тип данных: строка
  • Определение: будет создан уникальный префикс для кластера больших данных в учетных записях AD. Это значение должно отличаться для каждого кластера, развернутого в домене Active Directory.
  • Значение по умолчанию: Если этот параметр не указан, в качестве значения по умолчанию будет использоваться имя поддомена. Если поддомен не указан, в качестве имени поддомена будет использоваться имя кластера, поэтому имя кластера будет также унаследовано как префикс учетной записи. Если поддомен указан и состоит из нескольких частей (содержит одну или несколько точек), пользователь должен предоставить префикс учетной записи.
  • Максимальная длина: 12 символов.

Настройка домена AD и DNS-сервера

Для развертывания нескольких кластеров больших данных в одном домене Active Directory не требуется вносить никаких изменений в домен AD или контроллер домена. Поддомен DNS будет автоматически создан на DNS-сервере при регистрации DNS-имен внешней конечной точки.

Изменения в файле конфигурации развертывания

Раздел activeDirectory в конфигурации уровня управления control.json содержит два новых необязательных параметра: subdomain и accountPrefix. Имя кластера используется для каждого из этих параметров. Укажите новые значения для этих параметров, если вы хотите переопределить поведение по умолчанию. Имя кластера совпадает с именем пространства имен.

Вы можете использовать любое DNS-имя конечной точки, если оно является полным. Оно также не может конфликтовать с любым другим кластером больших данных, развернутым в том же домене. Вы можете использовать значение параметра поддомена, чтобы гарантировать, что DNS-имена различаются в разных кластерах. Рассмотрим конечную точку шлюза. Вы можете использовать имя gateway конечной точки и зарегистрировать его на DNS-сервере автоматически. Для этого в рамках развертывания кластера больших данных используйте gateway.bdc1.contoso.local в качестве DNS-имени. Если bdc1 является поддоменом, а contoso.local — это доменное имя DNS AD. Другие допустимые значения: gateway-bdc1.contoso.local или просто gateway.contoso.local.

Некоторые примеры конфигурации безопасности Active Directory

Ниже приведен пример конфигурации безопасности Active Directory для случая, когда требуется переопределить поддомен и префикс учетной записи.

    "security": { 
        "activeDirectory": { 
            "ouDistinguishedName":"OU=contosoou,DC=contoso,DC=local", 
            "dnsIpAddresses": [ "10.10.10.10" ], 
            "domainControllerFullyQualifiedDns": [ "contoso-win2016-dc.contoso.local" ], 
            "domainDnsName":"contoso.local", 
            "subdomain": "bdc", 
            "accountPrefix": "myprefix", 
            "clusterAdmins": [ "contosoadmins" ], 
            "clusterUsers": [ "contosousers1", "contosousers2" ] 
        } 
    } 
  

Ниже приведен пример спецификации конечной точки для конечных точек уровня управления. Можно использовать любые значения DNS-имен, если они уникальны и являются полными:

        "endpoints": [ 
            { 
                "serviceType": "NodePort", 
                "port": 30080, 
                "name": "Controller", 
                "dnsName": "control-bdc1.contoso.local" 
            }, 
            { 
                "serviceType": "NodePort", 
                "port": 30777, 
                "name": "ServiceProxy", 
                "dnsName": "monitor-bdc1.contoso.local" 
            } 
        ] 
  

Вопросы

Нужно ли создавать отдельные подразделения для разных кластеров?

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

Как вернуться к поведению, которое имело место до пакета обновлений CU5 в SQL Server 2019?

В некоторых ситуациях вы не можете использовать новый параметр subdomain. Например, необходимо развернуть выпуск до пакета обновлений CU5, и вы уже обновили Azure Data CLI (azdata). Это маловероятно, но если необходимо вернуться к предыдущему поведению, можно задать для параметра useSubdomain значение false в разделе control.json Active Directory.

В следующем примере для параметра useSubdomain задается значение false в этом сценарии.

azdata bdc config replace -c custom-prod-kubeadm/control.json -j "$.security.activeDirectory.useSubdomain=false" 

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

Устранение неполадок при интеграции кластера больших данных SQL Server с Active Directory