Jenkins的Master-Slave分布式构建

Jenkins的Master-Slave分布式构建

作者:运维人在路上

个人博客https://www.cnblogs.com/hujinzhong

微信公众号:运维人在路上

Bilibili账号https://space.bilibili.com/409609392

个人简介:本人是一枚大型电商平台的运维工程师,对开发及运维有一定了解,现分享技术干货,欢迎大家交流!

一、什么是Master-Slave分布式构建

image-20210326162835448

Jenkins的Master-Slave分布式构建,是通过将构建过程分配到从属Slave节点上,从而减轻Master节点的压力,而且可以同时构建多个,有点类似负载均衡的念。

二、如何实现Master-Slave分布式构建

2.1、开启代理程序的TCP端口

Manage Jenkins -> Configure Global Security

image-20210324191306250

2.2、新建节点

Manage Jenkins—Manage Nodes—新建节点

image-20210324191426597

image-20210324191522776

image-20210324193911608

image-20210324194132964

2.3、自由风格和Maven风格的项目测试

image-20210324194302517

image-20210324194341949

2.4、流水线项目测试

//gitlab的凭证
def git_auth = "cf17ff40-5824-4b2d-bdd5-784560255001"
//gitlab仓库地址
def git_url = "git@10.0.0.101:dianchou_group/tensqure_back.git"

node("slave01") {
    stage('拉取代码') {
        checkout([$class: 'GitSCM', branches: [[name: "*/master"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
    }
}

image-20210324194832981

image-20210324194911869

三、传统Jenkins的Master-Slave方案的缺陷

1)Master节点发生单点故障时,整个流程都不可用了

2)每个 Slave节点的配置环境不一样,来完成不同语言的编译打包等操作,但是这些差异化的配置导致管理起来非常不方便,维护起来也是比较费劲

3)资源分配不均衡,有的 Slave节点要运行的job出现排队等待,而有的Slave节点处于空闲状态

4)资源浪费,每台 Slave节点可能是实体机或者VM,当Slave节点处于空闲状态时,也不会完全释放掉资源

解决方案:可以引入Kubernates来解决

posted @ 2021-03-26 16:56  运维人在路上  阅读(299)  评论(0编辑  收藏  举报