快速搭建Jenkins集群
关于Jenkins集群
在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故障的隐患也有分散作用,今天就来实战快速搭建Jenkins集群,Jenkins版本是2.190.2;
如何做到快速搭建集群
通过Docker可以省去大部分准备工作,您只需在Linux电脑上安装docker,在辅以少量命令和操作即可完成集群搭建;
环境信息
本次实战的环境一共要用三台电脑,它们的设置都是一样的,如下:
- 操作系统:CentOS Linux release 7.6.1810
- 防火墙关闭
- docker:1.13.1
三台电脑的信息如下:
主机名 | IP地址 | 作用 |
---|---|---|
master | 192.168.133.131 | Jenkins集群的master节点,提供web服务 |
agent1 | 192.168.133.132 | Jenkins集群的一号工作接节点,标签是maven |
agent2 | 192.168.133.133 | Jenkins集群的二号工作接节点,标签是gradle |
建议agent2节点的内存大于4G,因为下一篇的实战操作会用agent2编译构建spring-framework,对内存的需求略大;
准备工作
- 后面的所有操作都是root账号;
- 在每台电脑上创建文件夹/usr/local/jenkins
创建Jenkins的master
- 登录master机器,执行以下命令:
docker run \
-u root \
-idt \
--name master \
-p 8080:8080 \
-p 50000:50000 \
-v /usr/local/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean:1.19.0
- 执行docker logs master,会在控制台显示jenkins的登录秘钥,如下图红框所示:
- 浏览器输入地址:http://192.168.133.131:8080 ,显示Jenkins登录页面,如下图所示,在红框位置输入刚才复制的登录秘钥即可登录:
- 选择安装推荐的插件:
- 静候插件在线安装完成:
- 接下来是创建管理员和使用实例url的操作,这里就不多说了,您按实际情况自行斟酌;
至此,Jenkins的master已经搭建好,接下来将agent1和agent2作为工作节点加入集群;
加入agent1
- 在Jenkins网页上新增节点,操作如下图,先进入节点管理页面:
- 如下图,新增一个节点,名为agent1:
- 接下来的节点详情信息如下图,注意四个红框中的内容要和图中保持一致:
- 保存成功后会显示机器列表,如下图,图标上的红叉表示机器不在线(此时agent1还没有接入),点击红框:
- 如下图所示,红框中的命令就是agent1的启动命令,执行该命令的机器会以agent1的身份加入集群:
- 注意上图红框中的agent.jar是个名为agent.jar的文件的下载链接,将此文件下载到agent1电脑的/usr/local/jenkins目录下;
- ssh登录agent1电脑,执行以下命令,即可将agent1加入Jenkins集群:
docker run \
-u root \
-idt \
--name agent \
-v /usr/local/jenkins:/usr/local/jenkins \
bolingcavalry/openjdk-with-sshpass:8u232 \
java -jar /usr/local/jenkins/agent.jar \
-jnlpUrl http://192.168.133.131:8080/computer/agent1/slave-agent.jnlp \
-secret 44c3e8d1531754b8655b53294bbde6dd99b3aaa91a250092d0d3425534ae1058 \
-workDir "/usr/local/jenkins"
上述命令中的后半部分,即java -jar ......就是前面图片红框中的agent1启动命令,唯一要改变的是将agent.jar改成绝对路径/usr/local/jenkins/agent.jar
8. 上述命令的镜像是bolingcavalry/openjdk-with-sshpass:8u232,其Dockerfile内容如下,可见非常简单,就是OpenJDK镜像里面安装了sshpass,这样的容器可以在执行ssh命令时带上远程机器的密码,而不用等待用户输入密码,这样便于shell脚本执行ssh命令:
FROM openjdk:8u232
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --assume-yes sshpass
- 去Jenkins的网页上查看节点列表,如下图,可见agent1已经成功加入:
加入agent2
agent2加入集群的方式和agent1大部分是一样的,只有以下两点要注意:
- 在Jenkins页面上创建节点,名称是agent2
- agent2的标签是gradle,如下图红框所示:
- 此时agent2也加入成功:
至此,Jenkins集群搭建完成,这两个节点带有不同的标签,下一篇文章《Jenkins集群下的pipeline实战》中,我们在这个集群环境创建pipeline任务,并通过标签被分配到不同的节点上,实现多节点并行执行;
欢迎关注公众号:程序员欣宸
快速搭建Jenkins集群的更多相关文章
- 搭建jenkins集群
搭建jenkins集群是为了解决单点服务器存在的性能瓶颈,也有业务的需要,比如:java服务打包的环境我们需要linux,ios打包的服务器需要mac机. 一.创建agent节点 1.打开 系统管理- ...
- VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)
发生情况: 由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...
- centos7 快速搭建redis集群环境
本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7 + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120 和 192.168.1 ...
- 教你用multipass快速搭建k8s集群
目录 前言 一.multipass快速入门 安装 使用 二.使用multipass搭建k8s集群 创建3台虚拟机 安装master节点 安装node节点 测试k8s集群 三.其他问题 不能拉取镜像:报 ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境
写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...
- 用C、python手写redis客户端,兼容redis集群 (-MOVED和-ASK),快速搭建redis集群
想没想过,自己写一个redis客户端,是不是很难呢? 其实,并不是特别难. 首先,要知道redis服务端用的通信协议,建议直接去官网看,博客啥的其实也是从官网摘抄的,或者从其他博客抄的(忽略). 协议 ...
- 使用Kubeadm(1.13+)快速搭建Kubernetes集群
Kubeadm是管理集群生命周期的重要工具,从创建到配置再到升级,Kubeadm处理现有硬件上的生产集群的引导,并以最佳实践方式配置核心Kubernetes组件,以便为新节点提供安全而简单的连接流程并 ...
- 在 Azure 虚拟机上快速搭建 MongoDB 集群
MongoDB 是目前在 NoSQL 市场上非常受欢迎的一个数据库,本文介绍如何使用 Azure PowerShell 和 Azure CLI 在 Azure 虚拟机上搭建单节点 MongoDB(测试 ...
- 如何快速搭建hadoop集群
安装好虚拟机,重命名为master 配置网卡 命令:vi /etc/sysconfig/network-scripts/ifcfg-en(按tab键) 这里要配置ip,网关,域名解析 例如我的 IPA ...
随机推荐
- Java 的基本程序设计结构
从Hello Word入手 public class HelloWorld { /* 第一个Java程序 */ public static void main(String[] args) { Sys ...
- Controller层的方法访问标志与Spring装配与AspectJ切面处理
最近在做AspectJ实现的日志模块,在spring配置中加入了<aop:aspectj-autoproxy/>,之后发现,只要有用到自定义注解的类,某些方法经MVC请求时就报空指针错误. ...
- 如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
在开发过程中,我们经常会遇到对业务数据进行模糊搜索的需求,例如电商网站对于商品的搜索,以及内容网站对于内容的关键字检索等等.对于这些高级的搜索功能,显然数据库的 Like 是不合适的,通常我们采用 E ...
- Uipath 浏览器页面最大化和最小化
文章来源东京IT青年前线http://www.rpatokyo.com/ Uipath 浏览器页面最大化和最小化 浏览器在关闭时会自动记忆上次浏览器关闭时窗口的小,下次再次会以同样的大小打开.机器 ...
- LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组)
LeetCode初级算法--设计问题01:Shuffle an Array (打乱数组) 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:h ...
- 再不努力提高效率,小姐姐都被人追走了:K8S一键部署了解一下?
随着互联网时代的不断发展,开发者可能会面临这样的困境:为了解决问题.提升开发效率而竭力研发出来的"创新",似乎削弱了他们在公司的重要程度,甚至取代了他们原先的地位.比如,在云原生时 ...
- Leetcode(6)Z字形变换
Leetcode(6)Z字形变换 [题目表述]: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...
- Java IO_003.Reader与Writer--字符流以及编码对数据的操作(读取与写入)
Java IO之Reader与Writer对象常用操作(包含了编码问题的处理) 涉及到文件(非文件夹)内容的操作,如果是纯文本的情况下,除了要用到File(见之前文章),另外就必须用到字符输入流或字符 ...
- Linux系统 /etc目录下主要配置文件解释
这些都是比较有实用性的系统配置,收藏下,以备不时之需!以下是etc下重要配置文件解释: 1./etc/hosts #文件格式: IPaddress hostname aliases #文件功能: 提 ...
- python之ORM(对象关系映射)
实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要更改代码.orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句.所有使用Django开发的项目无需关心程序底层使用的 ...