部署Azure DevOps Server(TFS)的高可用节点(负载均衡)

1. 概述

Azure DevOps Server (之前称TFS)是微软公司的软件研发管理平台产品,为研发团队提供需求、开发、测试和持续集成和交付的全流程服务。

这个产品从设计之初,就综合考虑了兼容不同规模的研发团队,它支持小到3-5个人的团队,多到几万人的软件研发团队。对于大规模的软件研发团队,DevOps Server从应用层的扩展性和数据库层的高可用性方面,做了非常完善的设计。下图是一个比较典型的多层次、多节点的分布式部署拓扑结构图。大部分超过500人的软件研发团队,一般都会部署一套与这个结构大同小异的DevOps Server系统,以便达到Azure DevOps Server系统运行的高性能、高可用性目标。

本文主要介绍如何在DevOps Server的应用层上如何实现分布式部署,并利用Windows操作系统原生的网络负载均衡功能,实现应用的多节点部署,后续我们还会介绍如何利用Always-On技术实现数据库层的高可用性。

如果在你的网络系统中已经部署了第三方的网络负载均衡产品(例如F5,或Citrix),则可以直接配置网络分流即可实现本文提到的负载均衡目标。

image


2. 动手实验

下面我们通过动手实验的方式,带领大家体验Azure DevOps Server应用层的负载均衡配置。

在这个实验中,为了简化安装,我们只部署2个节点的应用层服务器(如下图),相关服务器的信息如下:

  • 操作系统:Windows Server 2019
  • 数据库:SQL Server 2019
  • 应用服务器:Azure DevOps Server 2020
  • 服务器IP:
    • 高可用地址:192.168.20.10
    • 应用层服务器1:192.168.20.11
    • 应用层服务器2:192.168.20.12
    • 应用层服务器2:192.168.20.13

image

2.1 安装Windows负载均衡服务器

在Windows操作系统的“服务器管理器”中,添加“网络负载平衡”

image

2.2 配置Windows负载均衡服务器

打开网络负载平衡管理器

image

将当前节点添加到负载集群中

image

可以在负载均衡管理器中看到当前的三个节点服务器(Azure DevOps Server的应用服务器)

image

2.3 验证AZ DevOps Server负载均衡

完成负载均衡配置后,我们无需对现有的Azure DevOps Server做任何调整,就可以验证聚Azure DevOps Server的负载均衡。

我们打开浏览器,使用负载均衡IP后域名(在这个实验中为http://192.168.20.10/)访问Azure DevOps,你会发现负载均衡自动将请求发送到不同的应用服务器。

在下图中,由于我们对每个Azure DevOps Server的节点做了标记(在项目设置后面标上午服务器的IP),我们可以看到在页面导航过程中,会看到下图中的标记会随机变化,说明负载均衡服务器已经将用户请求发送到了不同的服务器。

在Azure DevOps Server的日志中,我们也可以看到每台服务器都有了用户请求的记录。

image

3. 常见问题

3.1 新建负载均衡集群,选择单播还是多播?
在Windows服务器的负载均衡中,单播是指服务器将所有服务器的网卡物理地址设置修改为一样的,不同节点之间是不能相互访问的。
一般来说,在NLB的创建时,单网卡多播,双网卡单播。双网卡单播时,因为主机之间不能互相通信,将设置内网通讯的网卡,也就是群集设置中的心跳。在微软官方推荐在NLB设置时,首先考虑单播模式,除非单播不能满足其要求,若要解决流量扩展的方法,推荐使用VLAN。


3.2 Azure DevOps Server要做什么特殊设置吗?
一般,只需要在控制台中将公共URL设置为集群地址或者集群域名,其他都不需要做调整。
但是,如果你配置了ES(Elastics Search)搜索服务,则需要在独立的服务器上配置ES搜索服务,并在其他节点中配置使用这台独立的搜索服务器。


如果需要,你还可以从微软Azure DevOps Server 的在线文档,查询更多的权威资料

------------------------------------------------------------

http://www.cnblogs.com/danzhang/  DevOps MVP 张洪君

------------------------------------------------------------

原文地址:https://www.cnblogs.com/danzhang/p/13907411.html