转自: https://blog.csdn.net/liumiaocn/article/details/94384235
Java面试官:给Java面试者的八点建议: https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/94367014
深度学习的员工离职预测: https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/94367036
ROS中解析bag包中的点云文件到pcd格式: https://blog.csdn.net/Mr_yangsir/article/details/94559945
惊:FastThreadLocal吞吐量居然是ThreadLocal的3倍: https://blog.csdn.net/lirenzuo/article/details/94495469
JNDI学习总结 JNDI数据源的配置: https://blog.csdn.net/swebin/article/details/94503311
几种常用开源报表工具与商用报表工具的对比之ireport 与润乾报表对比: https://blog.csdn.net/terry_chengq/article/details/94562539
# Git 日常操作: https://blog.csdn.net/sunhangye/article/details/94562656
./ ../ /的区别: https://blog.csdn.net/qq_38180363/article/details/94562700
【ubuntu】如何在Windows系统中查看并修改Ubuntu系统中的文件: https://blog.csdn.net/ipfpm/article/details/94559949
抽象代数入门(三): https://blog.csdn.net/AugustMoore/article/details/94560032
带你走进docker: https://blog.csdn.net/weixin_38880359/article/details/94562749
容器十年 ——一部软件交付编年史: https://blog.csdn.net/yunqiinsight/article/details/94561888
各种排序算法的复杂度比较和选择:https://blog.csdn.net/Ucsasuke/article/details/94562777
产品与技术激烈撕逼之后,CSDN APP终于上新了: https://blog.csdn.net/blogdevteam/article/details/94390913
Jenkins支持多种方式实现分布式构建,主要方式之一为传统的一主多从(Master/Slave)。Easypack的Jenkins的Alpine镜像中将slave.jar文件也集成了进去,使用一个镜像即可实现启动Master的服务也可启动Slave的服务。这篇文章以2.176.1的LTS版本为例进行使用上的介绍。
Jenkins分布式集群环境介绍
https://liumiaocn.blog.csdn.net/article/details/86173195
环境准备
这里使用Easypack的Jenkins 2.176.1来创建验证用的Jenkins环境。使用如下步骤即可完成。
事前准备
事前准备docker和docker-compose,版本要求如下所示:
Docker: >= 1.13.1
docker-compose: >= 1.13
liumiaocn:~ liumiao$ docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: true
liumiaocn:~ liumiao$
liumiaocn:~ liumiao$ docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3
liumiaocn:~ liumiao$
Step 1: Jenkins Master服务启动
使用Easypack中准备好的LTS的Jenkins镜像,启动Jenkins。
git clone
命令:git clone https://github.com/liumiaocn/easypack.git
启动服务
命令:
cd easypack/containers/alpine/jenkins
docker-compose up -d
使用的docker-compose配置文件
liumiaocn:jenkins liumiao$ cat docker-compose.yml
version: '2'
services:
# jenkins service based on Jenkins LTS version
jenkins:
image: liumiaocn/jenkins:2.176.1
ports:
- "32002:8080"
- "50000:50000"
environment:
- JENKINS_ADMIN_ID=root
- JENKINS_ADMIN_PW=liumiaocn
- JENKINS_MODE=master
volumes:
- ./data/:/data/jenkins
restart: "no"
liumiaocn:jenkins liumiao$
Step 2: 创建Agent
通过如下菜单操作,在创建节点的页面输入Agent信息单击Save进行保存
菜单操作:以管理员用户登录,选择Manage Jenkins, 选择Manage Node,创建如下agent001的节点。
同样的方式创建再创建agent002和agent003两个节点,这样三个长时间存在的节点就创建出来了(注意Availability选择的是缺省的Keep this agent online as much as possible)。
Step 3: 启动Agent
以agent001为例,首先需要确认此从节点连接Jenkins主节点是需要用到的信息,相关的设定信息如下图所示
可以看到实际上就是使用JNLP的方式进行连接,连接方式如下所示
java -jar agent.jar -jnlpUrl http://localhost:32002/computer/agent001/slave-agent.jnlp -secret 7aa11fface9ebc3f09a4752637f0642331795b53427186134c71b1b5dfba2783 -workDir “/tmp/jenkins/agent001”
简单来说只需要有JRE的环境使用agent.jar和上述信息即可连接至主节点。唯一需要注意的是如果不在同一台机器上的时候,localhost换成Jenkins的Master节点的IP或者域名即可。这里直接使用easypack的slave模式,将环境变量JENKINS_MODE设定为slave即可。以下以agent001为例介绍如何启动Jenkins的从节点。
[root@devops agent001]# cat docker-compose.yml
version: '2'
services:
# jenkins service based on Jenkins LTS version
jenkins:
image: liumiaocn/jenkins:2.176.1
environment:
- JENKINS_MODE=slave
- JENKINS_MASTER_URL=http://192.168.163.141:32002/computer/agent001/slave-agent.jnlp
- JENKINS_SLAVE_SECRET=7aa11fface9ebc3f09a4752637f0642331795b53427186134c71b1b5dfba2783
- JENKINS_SLAVE_WORKDIR=/tmp/jenkins/agent001
restart: "no"
[root@devops agent001]#
使用上述设定启动agent001的docker容器即可
[root@devops agent001]# docker-compose up -d
Starting agent001_jenkins_1 ...
Starting agent001_jenkins_1 ... done
[root@devops agent001]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------
agent001_jenkins_1 /bin/tini -- /usr/local/bi ... Up 50000/tcp, 8080/tcp
[root@devops agent001]#
通过确认日志信息,最后出现Connected即表明已经正常连接
[root@devops agent001]# docker-compose logs
Attaching to agent001_jenkins_1
jenkins_1 | Both error and output logs will be printed to /tmp/jenkins/agent001/remoting
...省略
jenkins_1 | INFO: Connected
[root@devops agent001]#
而此时节点也显示为已经连接,如下图所示
使用同样的方式,将其他的两个Jenkins节点也启动和连接起来,结果如下所示
另外label可以根据需要进行设定,比如本文示例中的三个节点的label全部设定为了jenkins-agent-docker,可通过页面查询此label所包含的节点信息,如下图所示,可以看出名称为jenkins-agent-docker的label中包含agent001、agent002和agent003三个Jenkins节点。
Step 4: 调整of executors个数
Jenkins的of executors是可并行执行Job的数量,缺省的情况下设定值为2,本文示例中启动的Jenkins节点的设定值为1。
设定建议1:
从节点的设定值建议:跟此节点能够分配给此Jenkins节点的CPU个数相同
设定建议2:
主节点的设定值建议:主节点主要负责调度等工作,不建议实际构建操作,所以建议设定为0
设定后此一主三丛的Jenkins分布式持续集成环境的设定如下图所示,Master节点可执行的executors的个数从2变成了0
这样一个主节点三个从节点的Jenkins环境就创建完毕了。
---------------------
作者:liumiaocn
来源:CSDN
原文:https://blog.csdn.net/liumiaocn/article/details/94384235
版权声明:本文为博主原创文章,转载请附上博文链接!