Общие сведения об архитектуре для Azure DevOps Server

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Для лучшего планирования развертывания и управления им необходимо сначала понять базовую архитектуру Azure DevOps Server. Понимание архитектуры может помочь поддерживать работоспособность развертывания и обеспечивать общую доступность серверов и служб, необходимых командам разработчиков.

Вы можете развернуть Azure DevOps Server несколькими способами: на одном сервере, на нескольких серверах, в одном домене или рабочей группе или в нескольких доменах. Кроме того, можно использовать Azure DevOps Services, где все серверные элементы развертывания размещаются корпорацией Майкрософт. Понимание архитектуры может помочь решить, какая топология в наибольшей степени отвечает вашим бизнес-потребностям. Независимо от выбранной топологии, если вы понимаете базовую архитектуру Azure DevOps Server, вы можете лучше управлять физическими и логическими требованиями. В этой статье представлен простой обзор различных архитектур с ссылками на дополнительные сведения о примерах развертываний. Кроме того, здесь представлены технические сведения о службах, базах данных, конфигурация, сетевых портах и протоколах локальных развертываний.

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

  • Логическое приложение, данные и клиентские уровни Azure DevOps, а также то, хотите ли вы использовать один или несколько серверов для приложений и уровней данных, а также хотите ли вы использовать уровни приложений и данных, размещенные в облаке, с помощью Azure DevOps Services
  • расположение физических или виртуальных серверов, на которых размещены эти уровни;
  • Team Foundation Build и количество и расположение компьютеров сборки, работающих в вашей среде, включая количество, которое может потребоваться для поддержки методик разработки, или вы будете использовать облачные службы Azure Pipelines для создания и развертывания программных приложений.
  • Потенциальная потребность в прокси-сервере Azure DevOps

Кроме того, нужно учесть взаимодействие этих сущностей. Например, если вы решили использовать размещенную службу Azure DevOps Server, необходимо убедиться, что клиенты смогут получить доступ к службе через порт 443. Если вы решили развернуть Azure DevOps Server локально, необходимо знать, какие веб-службы, базы данных и объектные модели Azure DevOps Server использовать. Кроме того, необходимо знать, какие сетевые порты и протоколы Azure DevOps Server используются по умолчанию и какие сетевые порты можно настроить. Наконец, необходимо понять, какие разрешения необходимо задать в Azure DevOps Server, а также компоненты и программы, от которых зависит развертывание.

Помимо собственных служб, Azure DevOps Server зависит от других служб для работы. Дополнительные сведения об этих службах см. в Azure DevOps Server понятиях и компонентах хранилища данных Azure DevOps Server. Дополнительные сведения о требованиях и зависимостях для установки см. в Azure DevOps Server руководстве по установке.

Важно!

Вы не должны вручную изменять какие-либо базы данных Azure DevOps Server, если вам не будет показано, служба поддержки Майкрософт или выполните процедуры, описанные для резервного копирования баз данных вручную. Все остальные изменения могут сделать соглашение об обслуживании недействительным.

Azure DevOps Services

Azure DevOps Services

Корпорация Майкрософт предлагает возможность использовать Azure DevOps Services, которые могут размещать все серверные аспекты Azure DevOps Server. Ваш исходный код, рабочие элементы, конфигурации сборки и командные функции — все это размещается в облаке. С точки зрения архитектуры это значительно упрощает использование Azure DevOps Server, так как единственными аспектами архитектуры, которые необходимо учитывать, являются клиентские компоненты и доступ к Интернету.

При использовании Azure DevOps Services вы используете веб-браузер для подключения к службе с помощью учетной записи Майкрософт. Вы можете создавать проекты, добавлять участников в команду и работать так же, как и с локально установленным Azure DevOps Server без дополнительных затрат на администрирование серверов. Azure DevOps Services размещает уровень приложения, уровень данных и серверы сборки в облаке.

Дополнительные сведения об облачных службах и локальных развертываниях см. в Azure DevOps Services и Azure DevOps Server.

Объектная модель

Используя размещенную или локально развернутую архитектуру, вы можете расширить возможности и функциональные возможности Azure DevOps, написав приложение, основанное на сервере или клиентской объектной модели. Во всех типах развертывания можно написать приложения, которые расширяют возможности клиентов. Однако если вы хотите расширить возможности сервера, приложение должно работать на сервере уровня приложений. Чтобы расширить возможности клиента, необходимо запустить приложение на том же компьютере, что и Team Explorer.

Объектная модель Azure DevOps Server

Веб-службы и базы данных для локальных развертываний

Azure DevOps Server включает набор веб-служб и баз данных, которые устанавливаются и настраиваются отдельно на сервере или серверах, на которых размещается логическое приложение, данные и уровни клиентов для Azure DevOps. Некоторые функции, такие как доска задач и функции, основанные на невыполненной работы, полностью основаны на веб-интерфейсе и доступны только через веб-портал, клиентская веб-служба. Доступ к другим, таким как функции управления версиями, можно получить через веб-портал или через клиентское приложение. На следующих иллюстрациях представлено общее представление веб-служб, приложений и баз данных для локальных развертываний Azure DevOps Server.

Azure DevOps Server основных уровней служб

Необязательные службы Azure DevOps Server

клиенты Azure DevOps Server

Службы уровня коллекции

Службы уровня коллекции предоставляют функциональные возможности для операций на уровне коллекции проектов. Вы можете создавать приложения, расширяющие Azure DevOps Server, с помощью некоторых из этих служб. Дополнительные сведения о создании приложений для Azure DevOps Server см. в разделе "Разработка расширений".

Примечание

Некоторые находятся на нескольких уровнях. Например, служба реестра работает как на уровне коллекции, так и на уровне сервера, поэтому она включена в оба списка.

Службы платформы:

  • Служба реестра
  • Служба регистрации (для совместимости с более ранними версиями Azure DevOps Server)
  • Служба свойств
  • Служба событий
  • Служба безопасности
  • Служба расположения
  • Служба управления идентификациями
  • Веб-служба управления версиями
  • Веб-служба отслеживания рабочих элементов
  • Веб-служба Team Foundation Build
  • Веб-служба Lab Management
  • Веб-служба администрирования VMM
  • Веб-служба контроллера агентов тестирования

Службы уровня сервера

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

Службы платформы:

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

Уровень данных

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

  • База данных конфигурации (TFS_Configuration)
  • Хранилище приложений (TFS_Warehouse)
  • База данных служб аналитики (TFS_Analysis)
  • Базы данных для коллекций проектов (TFS_CollectionName)

В следующей таблице приведен список баз данных, которые Azure DevOps Server используются в локальных развертываниях. Если не указано иное, все базы данных можно переместить с исходного сервера и экземпляра, на котором они были установлены, и восстановить их на другом сервере или экземпляре.

Имя базы данных Описание Сервер
TFS_Configuration Эта база данных хранит каталог ресурсов и сведения о конфигурации для Azure DevOps Server. Эта база данных содержит операционные хранилища для Azure DevOps Server. Экземпляр SQL Server, используемый при установке и настройке Azure DevOps Server.
TFS_Warehouse Эта база данных хранит данные для отчетов. Экземпляр SQL Server, используемый при установке и настройке Azure DevOps Server.
TFS_Analysis Эта многомерная база данных хранит агрегированные данные из коллекций проектов. Экземпляр SQL Server, используемый при установке и настройке SQL Server Analysis Services.
Базы данных для коллекций проектов Одна база данных для каждой коллекции проектов, содержащая данные из всех проектов в этой коллекции. Экземпляр SQL Server, совместимый с Azure DevOps Server.

Клиентский уровень

Уровень клиентов взаимодействует с уровнем приложений через серверную объектную модель и использует веб-службы, которые были перечислены для этого уровня. Это верно при развертывании Azure DevOps Server локально или при использовании Azure DevOps Services. Кроме объектной модели, клиентский уровень включает компоненты отраслевых партнеров Visual Studio (VSIP), интеграцию с Microsoft Office, интерфейсы командной строки, а также инфраструктуру политик возврата.

Параметр Configuration

Размещенная в облаке служба зависит от клиентских служб, развернутых локально, и от интернет-соединения с уровнями приложений и данных в облаке. Локальное развертывание Azure DevOps Server зависит от SQL Server, служб IIS и операционной системы Windows. Зависит от выбранной топологии, Azure DevOps Server также может зависеть от SQL Server Reporting Services или продуктов SharePoint. Таким образом, сведения о конфигурации для Azure DevOps Server могут храниться в любом из следующих расположений:

  • хранилища данных IIS;
  • Файлы конфигурации для Azure DevOps Server.
  • источники данных для служб Reporting Services (например, данные TFSREPORTS);
  • База данных конфигурации для Azure DevOps Server. Реестр Azure DevOps Server является частью базы данных конфигурации.
  • реестр Windows.

Примеры различных локальных топологий развертывания и места хранения этих ресурсов см. в примерах простой топологии, примерах умеренной топологии и примерах сложной топологии. При сохранении локального развертывания Azure DevOps Server необходимо учитывать эти источники конфигурации. При каком-либо изменении конфигурации может потребоваться внести изменения в данные, хранящиеся в нескольких местах на уровне приложений. Можно также изменить сведения о конфигурации для уровней данных и клиентов. Azure DevOps Server включает консоль администрирования и несколько служебных программ командной строки, которые помогут вам внести эти изменения. Дополнительные сведения см. в кратком справочнике по задачам администрирования.

Active Directory и синхронизация удостоверений групп

В локальных развертываниях, где Azure DevOps выполняется в домене Active Directory, сведения о группах и удостоверениях синхронизируются при возникновении любого из следующих событий:

  • Запускается сервер уровня приложений.
  • Группа Active Directory добавляется в группу Azure DevOps.

Истекает промежуток времени, который указан для запланированного задания. Значение по умолчанию — один час, и все группы в Azure DevOps Server обновляются каждые 24 часа.

Службы управления удостоверениями (IMS) синхронизируются с Active Directory, а изменившиеся удостоверения передаются с сервера клиентам. По умолчанию все группы обновляются в течение 24 часов, но можно настроить этот параметр в соответствии с требованиями конкретного развертывания. Дополнительные сведения см. в разделе "Рекомендации по отношениям доверия и лесов" для Azure DevOps Server. Сведения о локальных развертываниях, которые не используют Active Directory, см. в разделе "Управление Azure DevOps Server в рабочей группе".

Группы и разрешения

В локальном развертывании Azure DevOps Server имеет собственный набор групп и разрешений по умолчанию, которые можно задать на уровне проекта, коллекции или сервера. Вы можете создавать собственные группы и настраивать разрешения на уровне групп и индивидуальных пользователей. Однако пользователи или группы, добавляемые в Azure DevOps Server, не добавляются автоматически в два компонента, от которых могут зависеть локальные развертывания Azure DevOps Server: продукты SharePoint и Reporting Services. Если в развертывании используются эти программы, необходимо добавить пользователей и группы в них и предоставить соответствующие разрешения, чтобы эти пользователи или группы правильно функционировали во всех операциях в Azure DevOps Server. Дополнительные сведения см. в разделе "Управление пользователями или группами" в Azure DevOps Server.

В случае облачных развертываний для управления доступом используется сочетание учетных записей Майкрософт и членства в группах. Дополнительные сведения см. в обзоре Azure DevOps Services.

Сетевые порты и протоколы

По умолчанию локальное развертывание Azure DevOps Server настроено для использования определенных сетевых портов и протоколов. На следующем рисунке показан сетевой трафик для Azure DevOps Server в простом развертывании.

Простая локальная установка

Аналогичным образом размещенная служба для Azure DevOps Server настроена для использования определенных сетевых портов и протоколов. На следующем рисунке показан сетевой трафик в облачном развертывании.

Размещенные Azure DevOps Server

 

На следующем рисунке показан сетевой трафик в более сложном развертывании, включающее компоненты для Visual Studio Lab Management. (Обратите внимание, что служба управления лабораторией устарела для TFS 2017 и более поздних версий.)

Уровень приложения

Виртуальные среды

виртуальные машины

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

Сетевые параметры по умолчанию

По умолчанию обмен данными между компьютерами в развертывании Azure DevOps использует протоколы и порты, показанные в следующей таблице. Если рядом с номером порта стоит звездочка (*), этот порт можно изменять.

Уровень и служба Протокол Порт
Уровень приложений — Веб-службы HTTP/HTTPS 8080/443*
Уровень приложений — администрирование продуктов SharePoint HTTP Значение 17012*, если продукты SharePoint установлены с Azure DevOps Server; в противном случае — случайным образом.
Уровень приложений — продукты SharePoint и Reporting Services HTTP
Служба инструментария управления Windows (WMI) (требуется во время установки для указания и проверки URL-адресов для служб отчетов)
80* Динамический порт
Уровень данных MS-SQL TCP 1433*
Уровень данных (службы аналитики SQL Server) MS-AS по умолчанию (2382 или 2383)*
Порт по умолчанию зависит от установленной версии SQL Server и типа экземпляра. Используйте диспетчер конфигурации SQL Server для определения портов, используемых развертыванием.
Прокси-сервер Azure DevOps — клиент к прокси-серверу HTTP 8081*
Прокси-сервер Azure DevOps — прокси-сервер на уровне приложений HTTP/HTTPS 8080/443*
Клиентский уровень — службы отчетов HTTP 80*
Клиентский уровень — веб-службы HTTP/HTTPS 8080/443*
Создание контроллера на уровне приложений HTTP/HTTPS 8080/443
Агент построения — уровень приложений HTTP/HTTPS 8080/443
Release Management Server HTTP или HTTPS 1000*
Release Management Client HTTP или HTTPS 1000*
Release Management Agent HTTP или HTTPS 1000*
Контроллер тестирования — уровень приложений HTTP/HTTPS 8080/443*
Уровень приложений — контроллер тестирования Удаленное взаимодействие .NET 6901*
Уровень приложений — служба доменных имен (DNS) Динамическое обновление DNS 53
Уровень приложений — диспетчер виртуальных машин HTTP 8100
Контроллер тестирования — агент тестирования Удаленное взаимодействие .NET 6910*
Агент тестирования — контроллер тестирования Удаленное взаимодействие .NET 6901*
Контроллер построений — агент построения SOAP поверх HTTP 9191
Агент лаборатории — агент лаборатории в изолированной среде Сокеты TCP 9050
Агент построения — контроллер построений SOAP поверх HTTP 9191
Консоль администрирования диспетчера виртуальных машин — диспетчер виртуальных машин HTTP 8100
Диспетчеры виртуальных машин — узлы диспетчера виртуальных машин Удаленное управление Windows (WinRM) для выполнения действий
Фоновая интеллектуальная служба передачи (BITS) для передачи данных
80 для выполнения действий
443 для передачи данных
Диспетчер виртуальных машин — сервер библиотеки диспетчера виртуальных машин WinRM для выполнения действий
Служба BITS для передачи данных
80 для выполнения действий
443 для передачи данных
Уровень приложений — узлы диспетчера виртуальных машин Взаимодействие DCOM/WMI для передачи данных 135
Динамически назначается в диапазоне 49152–65535
Клиентский уровень — узлы диспетчера виртуальных машин Размещенное подключение к виртуальной машине. 2179 для выполнения подключений на основе узла
Облачные службы HTTPS 443

Изменяемые сетевые параметры

Как показано в предыдущей таблице, можно изменить связь между приложениями, данными и уровнями клиентов в локальных развертываниях, изменив Azure DevOps Server для использования пользовательских портов. В следующей таблице показаны примеры изменений портов для перехода от использования протокола HTTP к HTTPS.

Примечание

Чтобы настроить Azure DevOps Server для использования протокола HTTPS и уровня безопасных сокетов, необходимо не только включить порты для сетевого трафика HTTPS, но и выполнять многие другие задачи. Дополнительные сведения см. в разделе "Настройка HTTPS с помощью протокола SSL" для Azure DevOps Server.

Служба Протокол Порт
Веб-службы, использующие SSL HTTPS Настраивается администратором
HTTPS центра администрирования SharePoint Настраивается администратором
Продукты SharePoint HTTPS 443
Службы Reporting Services HTTPS 443
Клиентские веб-службы HTTPS Настраивается администратором
Управление выпусками HTTPS Настраивается администратором