首页 > 其他 > 详细

jenkins中slave节点连接的两种常用方式

时间:2018-09-22 20:38:55      阅读:273      评论:0      收藏:0      [点我收藏+]

我们在使用jenkins的时候,一般来说肯定是有slave节点的,本来网上也有好多关于jenkins节点配置的教程,我也就不写了。简单说明一下:任务一般是在slave上面运行的。当然不是讲master节点不能跑任务,master节点主要是处理调度构建作业,把构建分发到slave节点进行实际执行,监视slave节点的状态(必要时让它们进行上线或者离线),记录和发布构建产物。

注意:构建结果和构建产物最后还是传回到master节点,比如说在jenkins工作目录下面的workspace里面的东西,其实在master节点照样是有一份的。(网上的文章很少有提到这一点的)

主要常用的的连接slave节点的方式就是通过ssh和jnlp。两个特点分别如下:

  • ssh来说,我们一般用的服务器都是linux系统,当然最方便的就是通过ssh启动jenkins节点,但是这个有个前提的要求就是master和slave之前能进行ssh连接
  • jnlp连接方式有个好处就是不用master和slave之间能够ssh连接,只需要能够ping即可。并且如果slave的机器是windows的话,也是可以的这个其实是非常实用的,因为有时候,可能一些权限或者防火墙的原因,这master和slave真的不能够ssh连接,还有一些未知的原因无法ssh到slave节点(我下面说的公司这个例子就是这样),都可以通过jnlp的方式进行连接。

本来是中秋节放假之期,微信群里就有人进行说,jenkins的slave节点好像不好使,上去看了下,slave节点连接挂了。下面只是我个人处理问题的一次记录,仅供大家进行参考。

问题:在slave节点上面的job不能正常的运行。

1、先登录jenkins看了一下节点,好像节点真的是挂了。看了一下是通过ssh进行连接的,点击重启了一下还是不行。

技术分享图片

2、然后我就随手ping了一下机器,发现机器是可以ping通的,但是丢包好像是挺严重的,因为这台机器是在????,也可以理解。我以为网络不好很有可能是slave节点不能用的原因,但不敢确认。

3、我用ssh登录机器,这时候比较奇怪的事情就来了,我发现死活都等录不上去,报了一个connection reset peer,看了一篇文章大概是说对端的端口是关闭的。(因为自己对tcp/ip协议只知道一个皮毛,所以下决心要好好研究一下),但是。。。。,我竟然telnet端口的时候,发现22端口是通的,这时候我就比较郁闷了。

4、又尝试了几次还是登陆不上去,这时候我比较迷惑,我觉得可能是机器有问题,所以跑到AWS上面,把机器重启了一下,本地ssh登陆是可以了,但是slave节点还是不能启动。

5、ssh到这台slave节点机器,发现在jenkins的界面点击的重启的命令根本没有生效,没有相关的jenkins进程。然后我就想着手工方式启动,尝试使用Java -jar的方式启动,好像得要什么参数(也没有去查),当然也启动不了。

6、我又想了一下,如果是正常的话,应该咋界面点击重启之后,会有命令传到slave的节点。之前是ssh登录有问题,但是现在ssh登录是好的,所以我觉得现在的可能就是因为网络的问题。

7、这时候其实是jnlp方式表演的时候了,其实很简单,就是在选择连接方式的时候,选择Launch slave agent via JNLP。因为是改变连接方式,所以其他的工作目录啥的可以不用动。完成后其实很简单,有两种启动的方式,界面就能看到,我是下载了agent.jar这个包到本地,然后传到slave节点,然后执行下面一条很长的自动生成的命令就可以启动了。至此今天的问题就解决了。

8、其实,我早就应该这样做了,只是初到公司,各种不熟悉,也不敢自己擅自乱改,嘿嘿~  但是这样做也不是很完美的,因为通过JNLP连接有下面的缺点:

  • 从节点不能被jenkins自动启动或者重启,因此,如果从节点,发生故障,则master是无法重启它的,得去slave节点去看。

9、反思:关于网络的tcp/ip协议真的是需要看一下,还有就是感觉勇敢尝试!

 

jenkins中slave节点连接的两种常用方式

原文:https://www.cnblogs.com/qstudy/p/9690824.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!