Azure DevOps Server 的体系结构概述

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019

若要最好地规划和管理部署,应首先了解 Azure DevOps Server 的基础体系结构。 了解体系结构有助于维护部署的总体运行状况,并帮助确保开发团队所需的服务器和服务的总体可用性。

可以通过多种方式部署 Azure DevOps Server:在一台服务器上;在许多服务器上;或位于一个域或工作组或跨域。 或者,可以选择使用 Azure DevOps Services,其中部署的所有服务器元素都由Microsoft托管。 了解体系结构有助于确定最可能满足业务需求的拓扑。 无论选择哪种拓扑,如果你了解 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 使用的 Web 服务、数据库和对象模型。 此外,必须知道 Azure DevOps Server 默认使用哪些网络端口和协议,以及可以自定义的网络端口。 最后,必须了解必须在 Azure DevOps Server 中设置哪些权限以及部署所依赖的组件和程序。

除了自己的服务,Azure DevOps Server 还依赖于其他服务才能正常运行。 有关这些服务的详细信息,请参阅 Azure DevOps Server 概念Azure DevOps Server 数据仓库的组件。 有关安装要求和依赖项的详细信息,请参阅 Azure DevOps Server 安装指南

重要

除非获得 Microsoft 支持部门的指示,或者正在按照手动备份数据库的相关步骤进行操作,否则不应手动修改任何 Azure DevOps Server 数据库。 任何其他修改都可能使服务协议失效。

Azure DevOps Services

Azure DevOps Services

Microsoft提供了使用 Azure DevOps Services 的选项,它可以为你托管 Azure DevOps Server 的所有服务器端方面。 源代码、工作项、生成配置和团队功能都托管在云中。 从体系结构的角度来看,这大大简化了 Azure DevOps Server 的使用,因为需要考虑的体系结构的唯一方面是客户端组件及其 Internet 访问。

使用 Azure DevOps Services 时,可以使用 Web 浏览器通过 Microsoft 帐户连接到服务。 可以创建项目,将成员添加到团队,并像在本地安装的 Azure DevOps Server 一样工作,而无需管理服务器。 Azure DevOps Services 在云中托管应用程序层、数据层和生成服务器。

若要详细了解云服务与本地部署,请查看 Azure DevOps Services 与 Azure DevOps Server

对象模型

使用托管体系结构或本地部署的体系结构,可以通过编写基于其服务器或客户端对象模型的应用程序来扩展 Azure DevOps 的特性和功能。 在所有部署类型中,可以编写扩展客户端功能的应用程序。 但是,如果要扩展服务器功能,应用程序必须在应用程序层服务器上运行。 若要扩展客户端功能,必须在团队资源管理器所在的同一台计算机上运行应用程序。

Azure DevOps Server 对象模型

用于本地部署的 Web 服务和数据库

Azure DevOps Server 包括一组 Web 服务和数据库,这些服务与数据库在托管 Azure DevOps 的逻辑应用程序、数据和客户端层的服务器上单独安装和配置。 某些功能(如任务板和基于积压工作团队的功能)完全基于 Web,只能通过 Web 门户(基于客户端 Web 的服务)进行访问。 其他功能(如版本控制功能)可以通过 Web 门户或客户端应用程序访问。 下图提供了用于 Azure DevOps Server 本地部署的 Web 服务、应用程序和数据库的概要视图。

Azure DevOps Server 主服务层

可选 Azure DevOps Server 服务

Azure DevOps Server 客户端

集合级服务

集合级服务提供项目集级别的操作功能。 可以使用其中一些服务创建扩展 Azure DevOps Server 的应用程序。 有关为 Azure DevOps Server 创建应用程序的详细信息,请参阅 开发扩展

注释

某些服务出现在多个级别。 例如,注册表服务在集合级别和服务器级别运行,并出现在两个列表中。

框架服务:

  • 注册表服务
  • 注册服务(与早期版本的 Azure DevOps Server 兼容)
  • 物业服务
  • 事件服务
  • 安全服务
  • 位置服务
  • 标识管理服务
  • 版本控制 Web 服务
  • 工作项跟踪 Web 服务
  • Team Foundation Build Web 服务
  • 实验室管理 Web 服务
  • VMM 管理 Web 服务
  • 测试代理控制器 Web 服务

服务器级服务

服务器级服务(也称为应用程序级服务)为 Azure DevOps Server 作为软件应用程序的作提供功能。 可以使用其中一些服务创建扩展 Azure DevOps Server 的应用程序。

框架服务:

  • 注册表服务
  • 事件服务
  • 项目集合服务
  • 物业服务
  • 安全服务
  • 位置服务
  • 标识管理服务
  • 管理服务
  • 集合管理服务
  • 目录服务

数据层

数据层包括数据、存储过程和其他关联的逻辑。 使用 Azure DevOps Services 时,将使用 SQL Server Azure 托管数据层。 在本地部署的 Azure DevOps Server 中,逻辑数据层由 SQL Server 的以下运营存储组成。 这些存储可能位于一台物理服务器上,或分布在多个服务器上。 您可以通过使用其中的一些操作数据存储来创建扩展 Azure DevOps Server 的应用程序。

  • 配置数据库 (TFS_Configuration)
  • 应用程序仓库(TFS_Warehouse)
  • Analysis Services 数据库 (TFS_Analysis)
  • 项目集合的数据库(TFS_CollectionName)

下表提供了 Azure DevOps Server 在本地部署中使用的数据库的列表。 除非另有说明,否则可以将此列表中的所有数据库从安装原始服务器和实例中移动,并将其还原到另一个服务器或实例。

数据库名称 DESCRIPTION 服务器
TFS_Configuration 此数据库存储 Azure DevOps Server 的资源目录和配置信息。 此数据库包含 Azure DevOps Server 的操作存储。 安装并配置 Azure DevOps Server 时使用的 SQL Server 实例。
TFS_Warehouse 此数据库存储报表的数据。 安装并配置 Azure DevOps Server 时使用的 SQL Server 实例。
TFS_Analysis 此多维数据库存储项目集合中的聚合数据。 安装并配置 SQL Server Analysis Services 时使用的 SQL Server 实例。
用于项目合集的数据库 每个项目集合的一个数据库,其中包含该集合中所有项目的数据。 与 Azure DevOps Server 兼容的 SQL Server 实例。

客户端层

客户端层通过服务器对象模型与应用程序层通信,并使用为该层列出的相同 Web 服务。 无论是在本地部署 Azure DevOps Server,还是使用 Azure DevOps Services,都是如此。 除了该模型,客户端层还包括 Visual Studio 工业合作伙伴(VSIP)组件、Microsoft Office 集成、命令行接口和用于签入策略的框架。

配置

托管服务取决于客户端服务、在本地部署,以及与云中托管的应用程序和数据层的 Internet 连接。 Azure DevOps Server 的本地部署取决于 SQL Server、Internet Information Services (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 组。

指定在计划任务中的时间段已经过了。 默认值为 1 小时,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 中的用户或组

对于托管部署,可以通过Microsoft帐户和团队成员身份的组合来控制访问。 有关详细信息,请参阅 Azure DevOps Services 概述

网络端口和协议

默认情况下,Azure DevOps Server 的本地部署配置为使用特定的网络端口和协议。 下图显示了简单部署中 Azure DevOps Server 的网络流量。

简单的本地安装

同样,Azure DevOps Server 的托管服务配置为使用特定的网络端口和协议。 下图显示了托管部署中的网络流量。

托管的 Azure DevOps Server

 

下图显示了更复杂的部署中的网络流量,其中包括 Visual Studio 实验室管理的组件。 (请注意,TFS 2017 及更高版本已弃用实验室管理。

应用程序层

虚拟环境

虚拟机

虚拟机使用端口 80 与有关下载实验室管理代理的任何测试控制器通信。 如果遇到任何通信问题,请检查是否已启用此端口。

默认网络设置

默认情况下,Azure DevOps 部署中的计算机之间的通信使用下表中显示的协议和端口。 如果星号 \ 遵循端口号,则可以自定义该端口。

层级和服务 协议 港口
应用程序层 - Web 服务 HTTP/HTTPS 8080/443*
应用程序层 - SharePoint 产品管理 HTTP 如果 SharePoint 产品随 Azure DevOps Server 一起安装,则为 17012*否则,随机生成
应用程序层 - SharePoint 产品和 Reporting Services HTTP
Windows Management Instrumentation (WMI) 服务(安装期间需要指定和验证 Reporting Services 的 URL)
80* 动态端口
数据层 MS-SQL 传输控制协议 (TCP) 1433*
数据层: (SQL Server Analysis Services) MS-AS default (2382 或 2383)*
默认端口因安装的 SQL Server 版本和实例类型而异。 使用 SQL Server Configuration Manager 确定部署使用的端口。
Azure DevOps 代理服务器 - 客户端到代理 HTTP 8081*
Azure DevOps 代理服务器 - 代理到应用程序层 HTTP/HTTPS 8080/443*
客户端层 - 报表服务 HTTP 80*
客户端层 - Web 服务 HTTP/HTTPS 8080/443*
建立通过 HTTP/HTTPS 的控制器到应用程序层的连接 8080/443
构建代理至应用层 HTTP/HTTPS 8080/443
发布管理服务器 HTTP 或 HTTPS 1000*
发布管理客户端 HTTP 或 HTTPS 1000*
版本管理代理 HTTP 或 HTTPS 1000*
测试控制器连接到应用程序层 HTTP/HTTPS 8080/443*
用于测试控制器的应用程序层 .NET 远程处理 6901*
域名系统的应用程序层(DNS) DNS 动态更新 53
应用程序层 - Virtual Machine Manager HTTP 8100
测试控制器到测试代理 .NET 远程处理 6910*
从测试代理到测试控制器 .NET 远程处理 6901*
生成控制器以生成代理 SOAP over HTTP 9191
在隔离环境中的实验室代理之间 TCP 套接字 9050
生成代理以生成控制器 SOAP over HTTP 9191
Virtual Machine Manager 管理员控制台 - Virtual Machine Manager HTTP 8100
Virtual Machine Manager – Virtual Machine Manager 托管主机 Windows 远程管理(WinRM)来执行操作
使用后台智能传输服务(BITS)进行数据传输
执行行动的 80
使用443端口传输数据
Virtual Machine Manager – Virtual Machine Manager 库服务器 用于执行操作的 WinRM
BITS传输数据
执行动作的80
443 传输数据
应用程序层 - Virtual Machine Manager 主机 分布式组件对象模型/Windows 管理接口(DCOM/WMI)通信以传输数据 135
在 49152 到 65535 的范围内动态分配
客户端层 - 虚拟机管理器主机 与虚拟机建立基于主机的连接。 2179 执行基于主机的连接
托管服务 HTTPS 443

可自定义的网络设置

如上表所示,可以通过修改 Azure DevOps Server 以使用自定义端口来更改本地部署中的应用程序、数据和客户端层之间的通信。 下表介绍了从 HTTP 到 HTTPS 的端口更改示例。

注释

若要将 Azure DevOps Server 配置为使用 HTTPS 和安全套接字层,不仅必须为 HTTPS 网络流量启用端口,还必须执行许多其他任务。 有关详细信息,请参阅 为 Azure DevOps Server 设置具有安全套接字层 (SSL) 的 HTTPS

服务 协议 港口
使用 SSL 的 Web 服务 HTTPS 由管理员配置
SharePoint 中央管理 HTTPS 由管理员配置
SharePoint 产品 HTTPS 443
报告服务 HTTPS 443
客户端 Web 服务 HTTPS 由管理员配置
发布管理 HTTPS 由管理员配置