• 部署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 张洪君

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

  • 相关阅读:
    XDOJ1156: 等待队列
    XDOJ 1009: Josephus环的复仇
    cookie浏览器编写测试无效???
    express框架中cookie的使用
    JS设置Cookie过期时间
    CSS 伪元素
    art-template手动编写时间过滤器
    mongoose设置默认值、模块化及性能测试
    Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `useFindAndModify
    mongoose 联表查询之populate使用及注意事项
  • 原文地址:https://www.cnblogs.com/danzhang/p/13907411.html
Copyright © 2020-2023  润新知